Your usage of the terms "booking" and "reservation" seems a bit strange to me. In the context of Drupal they are often used as synonyms of each other. I am not sure if I correctly interpret the difference you make, but I think this is crucial for you to differentiate (define?) them:
- Booking = item that must be payed at checkout time.
- Reservation = item that you must also be able to checkout, but you don't have to pay for it (or at least not yet).
So I think your question actually consists of 2 questions:
- How to integrate this in Drupal Commerce?
- How to ensure availability?
Below is what I think might help you find a possible solution.
Drupal Commerce integration
You should look at the Easy Booking distribution, to check if there is anything in it similar to what you're looking for (specific to the way this distribution uses Rooms and Drupal Commerce). If you find something, it is just a matter of reusing what's appropriate in your own site, or just use that distribution (attention: it only has a beta release so far).
Here are some more details about this distribution (quotes from its project page):
... to set up a website, that will suit all your needs in managing your own hotel, inn or hostel online.
It gives a set of options for visitors to make room reservations, contact hotel administration or just follow hotel’s newsletter to be aware of all special offers and discounts.
Easy booking profile is powered by Drupal Rooms and Drupal Commerce - widely used and popular contributed decisions, which means active maintaining and timely technical support.
Take a look at these modules, which all have a stable (not alfa or beta only) release:
- Availability Calendars (Reported installs: 2.061 sites).
- MERCI (Reported installs: 441 sites).
- Resource Conflict (Reported installs: 329 sites).
- Simple Reservation (Reported installs: 202 sites).
- Room Reservations (Reported installs: 156 sites).
I've ordered the list above by number of reported installs. Though that is often a good first indicator, it should not be used as the only criterium to pick a module. So do your homework to pick the right one for you.