Please advise how I can use Rules to structure my booking engine to avoid double bookings.
I offer a number of full day tours, half day tours (am & pm) along with short tours (2 per morning and 2 per afternoon)
I have one vehicle and I am the only resource.
So long as your entire vehicle is booked out per booking, then you can use linked availability to accomplish this. For each of your options you will need to set the block size to the maximum capacity of the vehicle, for example 6. When a group makes a booking, up to a group size of 6, all 6 spots will be taken and the resulting 6 spots on all other tours will also be taken. You would need to create all the possible variations that you offer and then link them together. For example:
Half Day Morning
Half Day Afternoon
Morning Tour 1
Morning Tour 2
Afternoon Tour 1
Afternoon Tour 2
In this scenario, you would create a link:
1. 7 linked availability rules between the all day tour and each of the other tours. This rule will control if an all day tour is booked that none of the other tours can be booked and vice versa.
2. 2 Linked availability rules between the morning tour and each of the two morning tours. This rule will control if a morning tour is booked that the 2 shorter tours cannot be booked and vice versa.
3. 2 linked availability rules between the afternoon tour and each of the two shorter afternoon tours. Similar to #2 but for the afternoon.
That should achieve what you are looking to do. You can find details about linked availability here:
and block sizes: