explain the requirements-

 
You requested our complete tour booking workflow and I have pleasure in elaborating as follows. 
 
Currently McTours only operates in the UK and selective parts of Europe but as the purpose of this customisation is to prepare the solution for a potential sale of the business then it is best to consider that any future owner may be operating anywhere in the world. What follows takes that into account. 
 
A tour can be added as a product on nopCommerce but the price is set in a default currency. McTours has found that due to the time delay between a customer booking a tour and the tour being delivered that currency can fluctuate and protect against potential loss it is best to price the tour in the currency of the country where the tour takes place. Some tours may pass through many countries where several currencies may be used across the journey, therefore, the administrator must have the flexibility of selecting a currency to be used for each tour. 
 
I think this can be simply achieved by adding a table TourCurrency containing attributes Id, FkTour (the Foreign Key to the tour/product listing), FkCurrency (the FK to the currency on which the tour is based). On the template used to present the tour the table can included in the query or stored procedure to return the tour page in the correct format. 
 
All tours past and upcoming could be listed but only upcoming tours can be booked. Past tours are there as a refence to allow customers to request a rerun or to allow a bespoke tour booking that may be based upon the past tour. Each tour will have restrictions on the maximum number of riders. 
 
A related table will therefore be required to manage availability. As our default accommodation is always to place each rider into their own private room, if the rider brings a pillion that does not impact on motorcycle or hotel availability. The maximum number of riders for each tour is usually set to ensure the group can be safely and efficiently managed. If two riders chose to share a room, it will still impact on the number of riders although it will apparently leave slack hotel capacity. These surplus rooms need to be cancelled to avoid McTours incurring unnecessary cost. 
 
A customer will search tours to find one of interest and make a request to join the tour. No money is taken at this time. We must confirm the availability, check the rider is suitably qualified to ride (it is amazing at how many people don’t realise you need a full motorcycle license, or fail to read the age constraints we have for riding or that they differ for those carrying a pillion), identify what extras they need (which motorcycle, helmet and other riding gear they require), if they are riding with a pillion then what does that person need. 
 
Once we have confirmed their place on the tour, we shall take a deposit which is usually 10-20% of the total price subject to a minimum of £100 per person. The balance is payable 56 days before the first day of the tour. 
 
When a booking is confirmed, we need to adjust the remaining places available. 
 
We close the tour to any further bookings when all rider places are filled or 56 days before the first day of the tour. People can request to be added to a list to secure a place in case of cancellation, but we are generally reluctant to accept late bookings because of the challenges this can bring in securing accommodation and hired motorcycles. 
 
We currently have facilities with Stripe and Revolut. All foreign currency (non GBP) is held in accounts with Revolut and contractors (hotels etc) are paid directly from the Revolut account or by using the Revolut Visa card, for UK tours we transfer funds from our GBP account (Virgin Money) to Revolut. It may make sense to have all financial transactions passing through Revolut although that is not a priority