A Shell Booking is the skeleton of a normal booking that is created to reserve a booking ID in the database. This is done to generate a unique ID to pass to third parties before the booking has been saved in iVector. The three shell booking modes are None, PrePreAuth and PostPreAuth where "PreAuth" refers to the PreAuthorisation of the payment. The shell booking mode is controlled by the setting "ShellBookingMode" in the Settings module of iVector.
A shell booking mode of PrePreAuth means that a shell booking will be created before the payment PreAuthorisation.
A shell booking mode of PostPreAuth means that a shell booking will be created after the payment PreAuthorisation.
Additionally it is possible to create a shell booking before sending the Basket Book request by using the CreateBookingReference call. This call takes the Lead Customer Details (explained in the Basket Book call here) and returns a Booking Reference.
The shell booking mode required depends on the third parties you use and your payment provider. If you use an offsite payment provider the you will need to use the CreateBookingReference call before redirecting.
The following diagram details the steps inside the Basket Book call for the various system configurations available.
A Basket Book request is sent to iVectorConnect. You can read about this request here.
The information in the booking tokens is used to recreate your booking and any details not maintained in the tokens are recalculated.
If a payment has been entered in the Basket Book request then a PreAuthorisation request is sent to the payment provider to check the payment details are valid and the funds are available.
Not every flight provider accepts flight passenger information in the book request. In this case, a further PreBook is required to send the passenger information forward for the booking. This is done using a standard PreBook request and consequently price changes and failures are possible.
Requests are sent to the third parties and any own stock components are booked in the system.
The booking is saved in the database and can be viewed in iVector. If a payment has been entered then a payment request is sent to take payment.
This separate iVectorConnect request creates a shell booking in the system.
If the shell booking mode is "PrePreAuth" or "PostPreAuth" then a shell booking will be created when these steps are reached.
If this step in the flow is reached then any shell booking created will be deleted. This prevents unwanted bookings interfering with your accounting. Deletion of shell bookings can be overridden in iVectorConnect by using the "KeepShellBooking" setting.
Although not expected, it is possible for a booking to fail in the setup. This could be caused by an incorrect Basket Book request or a change in the system since the PreBook. If you wish to continue and attempt booking on any components that haven't failed the setup or to save the booking with a failed component(s) then use the "CompleteBookingOnSetupFailure" setting. Note, using this setting alone is not enough to guarantee the booking will be saved, failure at a subsequent step would still result in the deletion of the shell booking.
Failure here resulting in the deletion of any shell booking and no record left in the system can be prevented using the "CompleteBookingOnConfirmPassengerNamesFailure" setting. iVectorConnect will then continue and attempt to book any other components.
The book stage is considered a failure if no components have booked successfully. If any component on the booking is
booked then the booking will be saved and any unsuccessful components will be saved as failed components. If you would like bookings to be saved even when no components have booked successfully then there is a setting in iVector in the XML Booking Logins module that allows this to be switched on/off per XML booking login, This is true by default.