The stock level is already currently decremented upon final "Submission" for payment methods handled by Übercart. But, if the payment is handed off to a third-party process, such as PayPal, the logic that decrements inventory is bypassed, and the inventory level is not decremented (that's what started this whole thread in the first place). Plus, even if we do figure out how to decrement inventory levels after final "Submission", the customer could still abandon the sale after getting to the PayPal site.
I understand the argument against decrementing inventory when somebody puts an item in their cart. If a bunch of customers go shopping and all abandon their carts, then you have less inventory to sell to the next customer. I understand that we need to minimize those "lost revenue opportunities". And I understand that if two customers want the same one-of-a-kind item, well "first come first served"...that seems fair.
But we also need to take into consideration the shopping experience from the point of view of the customer. I would be pissed if I put that one-of-a-kind autographed ABBA t-shirt in my cart, then spent an hour browsing the rest of the inventory, only to have Ryan come in and put the same ABBA shirt in his cart thereby stealing it from me just because he got to the check-out counter first (Ryan must REALLY like ABBA
).
Cart durations are already customizable. You can even have different cart durations for anonymous shoppers and registered shoppers (ah, the value of membership
). It should be relatively easy, then, to implement a cron job that would periodically take the items out of the abandoned carts and put the items back into inventory. The customers would still get a "first come first served" experience...we minimize abandoned cart/lost revenue opportunities by customizing cart durations.
I like your idea of making the timing of decrement user configurable, but I'm sure that makes the module a bit more complex to execute. If you write a patch, I'd love to see it 
As for the sales lead idea...this is outside the scope of the inventory module (IMHO). But, if generating the lead is important to you, then you could simply require customers to register on the site prior to making a purchase. You would have all the sales lead information you desired at the expense of losing those customers who prefer to shop "anonymously".
I'm looking forward to CpILL's input to my previous post. And I like some of the ideas offered by Ryan (no epiphany, but it's something to chew on...mmm mmm good).

Joined: 08/22/2007