I've been having trouble working out how I want to model "reservations".
Part of the problem is, I couldn't really see the use case for it. If what you deal with are paper tickets and you don't have a website and you can't take credit cards, then I can see why you'd want to let someone phone up and make a reservation, and then swing by when convenient and hand over the cash and get the pieces of cardboard. But what are reservations for in a web based system?
The trouble is, the only time reservations matter is if you're going to sell out. If you aren't selling out, then reserving seats doesn't do anything. Well, I suppose that it might mean you get to sit closer to the exact seat that you want, but if you didn't bother making a reservation, then you'd still be able to buy a seat somewhere.
If you do sell out, and someone has an unpaid reservation, then you're probably turning people away. People who have real money that they're prepared to give you now, but which you won't take, because you're promised the seats to someone else who may or may not get round to collecting the reservation.
In some ways, I can look at reservations as being firm orders, that are easy to "refund" (as you've never taken any real money). So I could treat "reserved" seats as being paid for on account, like seats for an agency. You buy the seats on account, and then at some point before the start of the show you either settle the account, or you cancel the tickets and let them go back on sale.
In other ways, reservations are a bit like a really long lived basket. You put a pair of tickets in your shopping basket, so that no one else can get at them, but instead of either checking out there or then, or the basket expiring after the standard 20 minutes, you let the reservations sit there... and then you let someone reconnect to that basket and complete the transaction later on.
Both options seem like a lot of hassle, and I can't see what's in it for the venue to allow it. It's never going to increase sales or revenue, you're just giving the public one more way to annoy you.
But recently, I found the use case that makes sense to me. And it's all about where the seats are, and not getting seats at all. Suppose you're going to the show with your friends: you want a ticket for yourself, you don't want to pay for their tickets, but you do want to be sure that you'll be sitting next to each other. Being able to complete a transaction for yourself, and at the same time reserve the seats for your friends. Or, if it's a GA performance that's selling fast, being able to get your tickets and be sure that your friends will get theirs. And this REALLY adds value when combined with social networking. If the automated post to the Facebook wall doesn't just say "I'm going to see $show" but "I'm going to see $show, the 4 seats next to me are reserved for 12 hours, click here and enter $code to purchase these tickets" strikes me as an acutally useful way of integrating with Facebook and adding more value than timeline spam.