We are developping an online travel agency offering accommodation, activities and events bookings, with the option of creating dynamic packages. The information about products, destinations, events, etc. is built on the Drupal CMS (Drupal 6). We have purchased a PERL scipt booking software called touristway. We bought the download version, which will be hosted on the same server than the drupal site.

We don't need any help with the drupal site itself, but would like to integrate booking features from touristway into the drupal site pages, via AJAX http calls or XML.

Bidders must have an in-depth understanding of the Touristway SDK / XML API and be familiar with Drupal CMS (www.drupal.org).

Products are presented in Drupal Panels 3 and we want to add a pane showing current availabilities and enable bookings. Technically speaking, we want to blend our drupal travel site with the touristway booking system. No iframes, AJAX or XML only.

We are looking for a freelance developer very familiar with Drupal (www.drupal.org) to implement a booking application (Touristway - www.touristway.com) into drupal as follows.

Bidders must have read and understood Touristway's XML API and SDK guides, that can be found at the following url's:

http://support.touristway.com/forums/4369/entries/32806
http://support.touristway.com/home

Due to prior negative experience with developers, i expect transparency from bidder - that means a regular update on what's happening with the project...

Here are the requested integration features:

The website is currently being developped on localhost using MAMP on Mac OSX 10.5.8. Using latest drupal 6 version and touristway 5.

First of all, the most important is that these modification DO NOT hack core of drupal or
touristway, so version upgrades are possible without breaking the system. That means i can upgrade to Drupal 7 and update modules without losing any of the features.

A - Drupal/Touristway communication
1. Display touristway’s data in drupal’s panels. For example, on the Hotel A drupal panel, i want
touristway’s Hotel A availabilities to display. No i-frames, AJAX or XML only. Needs to be possible for
the user to search for other dates and update prices/availabilities on submit. I don’t mind creating
the additional pane myself (since i’m not sure where i want to display it in the panel now), but i need
a module (maybe) that, when i enter the appropriate url, gets the touristway data in drupal.
2. in Drupal’s views (hotel search, activity search, ...), allow a live exposed filter to be “search by date”
and, in the query result, only display the items that have availabilities (according to touristway’s
database).
3. Create in drupal the pre-bookings made in Touristway. If a user pre-books an item in touristway, the
item gets created in drupal - either in ubercart or it gets flagged (flag module) and placed in the “my
travel plan” with correct information about dates, price, quantity, ... with the option to remove this
item from the list (which actually goes in touristway and cancels the pre-booking), or to modify the
dates/quantity. The ideal solution would be that when a user enters his “my travel plan” in drupal,
when he clicks on a item of his list, the booking summary from touristway gets displayed under via
AJAX. From here he can edit that booking just like if he was on touristway application.
4. Checkout: When the user is happy to finalize his bookings, he clicks on “confirm bookings” and is
taken to the payment gateway (see “Touristway Customization”).
5. Syncrhonize users between Drupal and Touristway. When a new user is created in Drupal, it is also
created in Touristway’s database. The other way round, when a user is created in Touristway, it is also
created in Drupal’s databae. Allow different user roles in touristway to be respectively the same in
drupal (supplier, customer, affiliate, ...)
6. Track and store every touristway action (a booking, a user details modification, a cancelation, ...) in
drupal.
B - Touristway Customization
1. “How many persons?”: In touristway’s normal booking process, the user is (when he’s looking at an
accommodation/activity vacancy) asked first to select a room first, and then specify how many person
per room. In some cases (for example we offer dorm beds in backpackers hostels), we will create a
“single bed in a dorm room” as an actual touristway room. Obviously, the room capacitiy is there of 1.
It then doesn’t make sense to ask the user to specify he wants 1 person in this room. What i need is a
customization of the template that automatically removes the “how many persons” step when the
room capacity (in touristway catalogue administration) is set to 1, and only when it’s set to 1.
2. Once a user has selected a room, the price is displayed for the user before he clicks “proceed to
booking” Whenever he adds an extra (breakfast, swimming pool access, whatever) or modifies the
number of persons in a room, the total price instantly updates to the new total (ajax). A good example
of this enhanced user experience can be found at www.hotelissima.com.
3. Implement a payment gateway: User clicks “confirm/finalize bookings” and is taken to a payment
gateway that offers 2 ways of confirmation, according to touristway’s model: 1) credit card - the user
enters his credit card but doesn’t get charged anything - auth-only to verify the validity of the credit
card. Card needs to still be valid on the dates chosen for the hotel stay... No money charged, auth-
only.
C - Drupal Customization - Billing/Accounting System
1. Implementation of a billing system keeping track of customers/suppliers accounts and generating
invoices on a) a time basis or b) a total amount cap basis, whatever gets hit first. Create editable
auto-email templates for billing, reminders, etc.. Something similar to freshbooks (www.freshbooks.com)
2. Implement issues solving system as you talked about in your mail.
3. for swiss youth hostels (they want to be linked to their booking system), display their own
availabilities (i can provide you with the direct link in further discussion) and, when a booking is
operated, keep track of this booking (and somehow leave track of this booking for the youth hostel
association (affiliate reference url?) so we can both have proof of how many bookings were operated.