Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

View file
nameAmtrak Rail Service.pdf

To download above documents:

  • Click on desired document to open it. Then, click on the cloud symbol in the top right corner of your screen to download, save, or print.

The train travel service is integrated with the online travel booking process. It lets you set up spending policies, and guides users to appropriate train optionsYou must configure VIA Rail in Deem if you want users to be able to book trips with VIA Rail.

Note: Rail services must be enabled; see Rail Services Configuration for steps to enable/disable.

Table of Contents

Benefits and Need to Know

VIA Rail services are integrated with Deem’s online travel booking process. You can set up spending policies, take advantage of negotiated rates, and guide users to appropriate train options. Reward membership programs/numbers are applied to rail bookings. Tickets can be picked up at a station kiosk or emailed. 

Table of Contents

Benefits and Need to Know

...

Benefits and Need to Know

...

Benefits

...

  • Rail passive segments can be passed through to the global distribution system (GDS)

    • Note: Amadeus functionality does not currently support GDS write back of rail segments.  If rail is enabled on an Amadeus site, the reservation is only viewable online; no GDS PNR is created.

  • Add configuration to your Template site, as the configuration will clone over to all new sites

    • You can disable rail by unchecking rail within each Travel Service Rule

...

Need to Know

...

Supported GDS

  • Sabre

  • Galileo (Apollo)

  • Worldspan

  • Amadeus

    • No passive segment PNR write back

...

Travelers can store their Via Rail Membership program numbers in their profiles.

...

Companies can manage train costs with policies and take advantage of negotiated rates.

...

Company Site card being used?: Yes, You will need to open a Deem Support case, Deem will need to contact Silverrail on your clients behalf to set up Customer Identifiers.

...

Important: Deem does not support multiple rail services under the same Agency Setting, which means you cannot combine Amtrak and VIA Rail under the same configuration.

Important: You will need to open a Deem Support Case for VIA Rail configuration if any of the following apply:

  • This is the first time this TMC has enabled VIA Rail with Deem. The support case enables Deem to establish your TMC Customer Identification information. Complete the attached template (pending) and add to your Deem Support case.

Page Properties
hiddentrue

Comment

Status/SME reply

There was no template attached to this topic - please provide.

Need SME to provide.

  • You want to enable a company site card for use with VIA Rail. Deem will contact SilverRail on your client’s behalf to set up customer identifiers. (Not required if you are using only individual credit cards; you can use your TMC Customer Identification information.)

  • Note: If your client has Amtrak enabled you can use the same TMC Customer Identification information for Via Rail.

Steps to Configure

...

Agency Settings

Clones over from Template site

...

If you have configured rail services on your template site, those settings clone to all sites you create from your template site. Best practice is to add your TMC Customer Identification information

...

in your template site.

...

You need to change

...

  • See attached template, you can fill our and attach to the case you need to open

...

See below instructions on how to configure Agency Settings

...

Keep in mind you can have Agency Settings programmed, but until you check the rail box under travel service rules, no action will be taken. 

...

PNR Mapping

...

  • Clones over from Template site

  • We have provided scripts you can add to template and existing sites, if you would like to write the fields to the PNR.  Please see below instructions on how to configure PNR Mapping

    • Note: If this is the first time programming Rail, please open a Deem Support Case.  Deem will assist you with programming your site. If there are other scripts you may need please add them to the case.

  • Keep in mind you can have PNR mapping configured, but until you check the rail box under travel service rules, no action will be taken. 

...

Private Rates

...

  • Clones over from Template site

  • Please see below steps with regards to configuring private rates

  • Keep in mind you can have private rates configured, but until you check the rail box under travel service rules, no action will be taken. 

...

Travel Policy

...

...

Display Policy

...

...

Travel Service Rules

...

  • Clones over from Template site

  • Check box located under service Rules to fully enable rail and to show as a booking option on the home page with air, car and hotel.

    • Note: You can have all of the above steps completed, but if you do not go to service rules to enable rail the client will not have the ability to book.  

  • Click link for further information around Travel Service Rules

Agency Settings Configuration

...

Accessing Agency Settings

Agency Setting configurations will clone over to your template site.

  • Click on Services tab

  • Click on Travel Agency

...

  • Click on Agency Settings

...

  • Click on current Agency Setting

...

  • Sales Location: If a Canadian airport code is entered, then it is Canada’s Via Rail train service that will be offered

...

Note: Please open Deem Support Case if this is the first time setting up Rail Services. As Deem will need to obtain the following information from SilverRail.

...

You can have one SilverRail contract for your entire Agency to apply to your client sites if the client is not booking rail with a Corporate Site Card.

...

If Client will use a Corporate Site card for rail services you will need to open a Deem Support Case.  Deem will need to notify Silverrail and they will provide Identifiers listed below. 

...

Channel: 

  • Enter the Deem-supplied Channel code (all capital letters). 

    • Contact your Deem representative if you did not receive this code

...

Agency Identifier:

  • Enter the Deem-supplied Agency Identifier (all capital letters). 

    • Contact your Deem representative if you did not receive this identifier.

...

Customer Identifier:

  • Enter the Deem-supplied Customer Identifier (all capital letters)

    • Contact your Deem representative if you did not receive this identifier, which defines a specific customer and is created during implementation. The field is used for reporting only.

...

Agency Identifier:

  • Enter the Deem-supplied Customer Identifier (all capital letters)

    • Contact your Deem representative if you did not receive this identifier, which defines a specific customer and is created during implementation.

...

Customer Identifier:

  • Enter the Deem-supplied Customer Identifier (all capital letters)

  • Contact your Deem representative if you did not receive this identifier, which defines a specific customer and is created during implementation.

Client ID Number:

the Customer Identification information in a site cloned from your template only if that site will use site payment cards (see above section for details on opening a support case if so).

Rail passive segments are passed through to your GDS. The following GDSs are supported for VIA Rail:

  • Sabre

  • Galileo (Apollo)

  • Worldspan

  • Amadeus (No passive segment PNR write back; if rail is enabled on an Amadeus site, the reservation is only viewable online and no GDS PNR is created.)

Configuring Deem Settings for VIA Rail

To set up VIA Rail, from your TMC partner dashboard, take the following steps:

  1. Navigate to the Agency Configuration Settings page:

    1. At the top of your Partner Dashboard, click the Services tab.

    2. From the Travel list, click the Travel Agency link.

    3. Click the Agency Settings link.

    4. Click the link for your active agency site.

The Agency Configuration Settings page opens.

  1. In the Host Information section, set the Sales Location per the example below. Important: VIA Rail services require a Canadian airport code here.

...

  1. In the Train Support section, complete the following fields using capital letters for all letter entries:

    1. Channel: Enter the Deem-supplied channel code.

    2. Agent Identifier: Enter the Deem-supplied agent identifier code.

    3. Customer Identifier: Enter the Deem-supplied customer code.

    4. Client ID Number: Enter the number to be used when optional reporting is

...

    1. needed.

    2. Customer DK Number:

...

    1. Enter the number to be used when optional reporting is needed.

...

  1. In the VIA Rail Specific Support

...

  1. section, complete the following fields:

    1. For Add passive train segment to primary GDS?

...

    1. , select either the Yes or No

...

A passive segment is a set of trip information entered into the GDS that does not cause a ticket to be issued by the GDS. For example, a traveler may be taking a train between cities, and although you do not use the GDS to issue the train ticket, you may want all of the trip information to be in one place for the traveler's benefit, and so that agents can generate itineraries or make notes. 

    1. button. By default, no information is saved in the GDS unless

...

    1. Yes is selected.

...

  • See below for examples of passive segments

    1. In the box for Message for Train support procedure and phone numbers

...

    1. , enter the message

...

    1. that will display for the user on the purchase page and on confirmation messages.

...

    1. Do not include HTML tags or use travel lingo.

...

    1. If the train support

...

    1. number for mobile

...

    1. clients is different from other support numbers, enter that mobile support number in the field for Train support phone number for mobile client.

  1. Scroll to the bottom of the page and click the Save

...

Private Rate Configuration

...

Breakdown

...

Steps to Configure

...

Please take the following steps if your client or TMC has a private rate with Via

  • Click on Service Tab

  • Click on Private Rates

...

  • Click on Train Rates

...

  • Click on Add a New Train Private Rate

...

  • Check box to the left of Activate this private rate

  • Private Rate Name: Enter Name

    • Example: Via Rail Private Rate

  • Enter the effective date range for this rate record: Not required, you can leave blank unless your client has a specific start and end date for their private rate.

  • Select a train carrier: Select Via Rail Canada from dropdown menu

  • Discount Code: Enter Customer or TMC Via Rail Discount Code

  • Click Save

...

  • Click on Back to Private Rates:

...

  • Click on Add A New Train Private Rate Set

...

  • Private Rate Set Name: Enter Name of Rate

    • Example: Via Rail Private Rate

  • Click Add Rates

...

  • Click on radio button to the left of the rate you would like to add to the set

  • Click Ok

...

  • Click Save

...

...

Commit Changes and Test

Be sure to commit all changes you have completed during this configuration.

  • Click Changes not applied in the upper right hand corner

...

  • Click on Commit

...

  • Success message will be displayed

...

  1. button.

  2. Settings on the following tabs are cloned from your template site; you may want to verify settings in the following places these but no additional configuration should be necessary. The links below provide more information on these settings.

  • Rail PNR Editor Scripts for Deem scripts you can add to your template site and existing sites.

  • Rail Private Rates:Click the Services tab. Under Private Rates, click Train Rates.

  • Service Rules: Click the Rules tab, the Service Rules link, and click Edit in the Travel column for each group to edit.

  • Travel Policy: Click the Services tab and then the Travel Policy link. Important: For Acela to appear you must allow users to book Business Class: Under Travel Policy, click the Policy Sets link, select the policy set to edit, and select the policy name. In the Train Policy section, select Yes for Travelers are permitted to book business class per the example below.

...

  1. Commit all changes: At the upper-right of the screen, click the link noting the changes not applied to access the Commit Changes page, and click the Commit button.

...

  1. After committing changes, test a booking to ensure you are seeing rail bookings and that they are being processed properly.

...

  1.  Be sure to book refundable rates

...

  1. if you intend to complete a test booking

...

Passive Segments

Sabre Passive Segment

...

Segment Example

...

Breakdown

...

0RAL2VGK1NYPBOS19DEC-LV-900A/AR-100P/NA- TRAIN 66/SI-BKD ONLINE/CF-123ABC

...

  • 0RAL = constant

  • 2V = Rail code – 2V is Via code

  •  GK1 = Constant

  •  NYP = Departure Station

  •  BOS = Arrival station

  •  19DEC = Travel date

  •  -LV- = Constant

  •  900A = Departure time /DT-=Constant

  •  19DEC = Arrival date

  •  /AR- = Constant

  •  100p = Arrival time

  •  /NA- = Constant

  • Via = Carrier code

  • 66 = Train number

  • SI-BKD ONLINE/CF- = Constant

  • ABCDEF- = Record Locator

Apollo Passive Segment

...

Segment Example

...

Breakdown

...

02V95Y24SEPNYPPHLBK1/1035A1157A

...

  • 02V = Constant

  • 95Y = Train number and class

  • 24SEP = Departure Date

  • NYP = Departure Station code

  • PHL = Arrival Station code

  • BK1/ = Constant

  • 1035A = Departure Time

  • 1157A = Arrival Time

Worldspan Passive Segment

...

Segment Example

...

Breakdown

...

TN2VMK1TRN24MAR/CC1-NYP/CC2-WAS/AN-Via 1229/TD-1000AM/TA-1130AM/CF-1234234

...

  • TN = Constant

  • 2V = Carrier Code

  • MK1TRN = Constant

  • 24MAR = Departure Date

  • /CC1- = Constant

  • NYP = Departure Station code

  • /CC2- = Constant

  •  WAS = Arrival Station Code

  • /AN- = Constant

  • Via 1229 = Carrier Name <sp> Train number

  •  /TD- = Constant

  •  1000AM = Departure Time

  •  /TA- = Constant

  •  1130AM = Arrival Time

  •  /CF- = Constant

  •  1234234 = Via Record Locator

PNR Scripts

Sabre PNR Editor Scripts

...

Function

...

Script

...

Error when Form of Payment is Declined

...

//Via RECORD LOCATOR - INVALID

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator.substring (0,9);

{if (rr =="B-REARDEN") {out.print("5H-SPCL-VERIFY TICKET STATUS W Via POSS DECLINED FOP");}

}}}

...

For when no confirmation is received from Via regardless of the reason (other than declined FOP)

...

//Via RECORD LOCATOR - NOT RECEIVED

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator;

{if ((rr =="")||(rr==undefined))

{out.print("5H-SPCL-VERIFY TICKET STATUS WITH Via");}}}}

...

Via Confirmation Number

...

//Via RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5A$-Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

...

No Passive Segments Needed

...

//Via RECORD LOCATOR when no passive segments are needed

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if ((rl.RailSegment.length() > 0)&&((UserPnrData.UserBooking.HotelBooking != undefined)||(UserPnrData.UserBooking.CarBooking != undefined)))

{out.print("5H-Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

...

Class of Service Booked

...

//Via CLASS OF SERVICE

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "purchase_hold")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5A$-Via CLASS OF SVC " + rl.RailSegment[0].ClassCode);}}}

...

Form of Payment

...

//RAIL FOP

if((UserPnrData.DataType=="purchase_hold")||(UserPnrData.DataType=="new")){with (UserPnrData.UserSession.PurchaseInfo.RailBilling) {

var cardtype;

 if (BrandType.substring(0,4) == "Visa") { cardtype = "VI"; } else if (BrandType.substring(0,4) == "Amer") { cardtype = "AX"; } else if (BrandType.substring(0,4) == "Mast") { cardtype = "CA"; } else if (BrandType.substring(0,4) == "Disc") { cardtype = "DS"; } else if (BrandType.substring(0,3) == "JCB") { cardtype = "JC"; } else if (BrandType.substring(0,4) == "Cart") { cardtype = "CB"; } else if (BrandType.substring(0,4) == "Dine") { cardtype = "DC"; } else if (BrandType.substring(0,4) == "Univ") { cardtype = "TP"; } else if (BrandType.substring(0,4) == "EnRo") { cardtype = "ER"; } else { cardtype = "XX" }

var year=ExpirationDate.Year;

var myyear=year.substring(2,4);

var mymonth=ExpirationDate.Month;

        if (mymonth == "JAN") {mymonth = "01";}

        else if (mymonth =="FEB") {mymonth = "02";}

        else if (mymonth == "MAR") {mymonth = "03";}

        else if (mymonth == "APR") {mymonth = "04";}

        else if (mymonth == "MAY") {mymonth = "05";}

        else if (mymonth == "JUN") {mymonth = "06";}

        else if (mymonth == "JUL") {mymonth = "07";}

        else if (mymonth == "AUG") {mymonth = "08";}

        else if (mymonth == "SEP") {mymonth ="09";}

        else if (mymonth =="OCT") {mymonth = "10";}

        else if (mymonth == "NOV") {mymonth = "11";}

        else if (mymonth =="DEC") {mymonth = "12";}

if (UserPnrData.UserSession.PurchaseInfo.RailBilling != undefined)

out.print("50/-*" + cardtype + CardNumber + "$" + mymonth + "/" + myyear + "-xn");}}

...

Total Fare

...

//FARE QUOTE - RAIL

if(((UserPnrData.DataType == "new") || (UserPnrData.DataType=="purchase_hold") || (UserPnrData.DataType == "change")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{out.print("5A$VIA Rail FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

Apollo PNR Editor Scripts

...

Function

...

Script

...

Error when Form of Payment is Declined

...

//Via RECORD LOCATOR - INVALID

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator.substring (0,9);

{if (rr =="B-REARDEN") {out.print("@:5A/SPCL-VERIFY TICKET STATUS W Via POSS DECLINED FOP");}}}}

...

For when no confirmation is received from Via regardless of the reason (other than declined FOP)

...

//Via RECORD LOCATOR - NOT RECEIVED

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator;

{if ((rr =="")||(rr==undefined))

{out.print("@:5A/SPCL-VERIFY TICKET STATUS WITH Via");}}}}

...

Via Confirmation Number

...

//Via RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("@:5A/Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

...

No Passive Segments Needed

...

//Via RECORD LOCATOR when no passive segments are needed

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if ((rl.RailSegment.length() > 0)&&((UserPnrData.UserBooking.HotelBooking !=

undefined)||(UserPnrData.UserBooking.CarBooking != undefined)))

{out.print("@:5A/Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

...

Class of Service Booked

...

//Via CLASS OF SERVICE

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "purchase_hold")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("@:5A/Via CLASS OF SVC " + rl.RailSegment[0].ClassCode);}}}

...

Form of Payment

//RAIL FOP

if((UserPnrData.DataType=="purchase_hold")||(UserPnrData.DataType=="new")){with

(UserPnrData.UserSession.PurchaseInfo.RailBilling) {

var cardtype;

if (BrandType.substring(0,4) == "Visa") { cardtype = "VI"; } else if (BrandType.substring(0,4) == "Amer") { cardtype =

"AX"; } else if (BrandType.substring(0,4) == "Mast") { cardtype = "CA"; } else if (BrandType.substring(0,4) == "Disc") {

cardtype = "DS"; } else if (BrandType.substring(0,3) == "JCB") { cardtype = "JC"; } else if (BrandType.substring(0,4)

== "Cart") { cardtype = "CB"; } else if (BrandType.substring(0,4) == "Dine") { cardtype = "DC"; } else if

...

  1. .

...

"ER"; } else { cardtype = "XX" }

var year=ExpirationDate.Year;

var myyear=year.substring(2,4);

var mymonth=ExpirationDate.Month;

if (mymonth == "JAN") {mymonth = "01";}

else if (mymonth =="FEB") {mymonth = "02";}

else if (mymonth == "MAR") {mymonth = "03";}

else if (mymonth == "APR") {mymonth = "04";}

else if (mymonth == "MAY") {mymonth = "05";}

else if (mymonth == "JUN") {mymonth = "06";}

else if (mymonth == "JUL") {mymonth = "07";}

else if (mymonth == "AUG") {mymonth = "08";}

else if (mymonth == "SEP") {mymonth ="09";}

else if (mymonth =="OCT") {mymonth = "10";}

else if (mymonth == "NOV") {mymonth = "11";}

else if (mymonth =="DEC") {mymonth = "12";}

if (UserPnrData.UserSession.PurchaseInfo.RailBilling != undefined)

out.print("F-*" + cardtype + CardNumber + "/D" + mymonth + myyear);}}

...

Total Fare

...

//FARE QUOTE - RAIL

if(((UserPnrData.DataType == "new") || (UserPnrData.DataType=="purchase_hold") || (UserPnrData.DataType ==

"change")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{out.print("@:5A/VIA RAIL FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

Worldspan PNR Editor Scripts

...

Function

...

Script

...

Error when Form of Payment is Declined

...

//Via RECORD LOCATOR – INVALID

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator.substring (0,9);

{if (rr =="B-REARDEN") {out.print("5.O SPCL-VERIFY TICKET STATUS W Via POSS DECLINED FOP");}}}}

...

For when no confirmation is received from Via regardless of the reason (other than declined FOP)

...

//Via RECORD LOCATOR - NOT RECEIVED

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator;

{if ((rr =="")||(rr==undefined))

{out.print("5.O SPCL-VERIFY TICKET STATUS WITH Via");}}}}

...

Via Confirmation Number

...

//Via RAIL RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("@:5A/VIA RAIL LOC " + rl.RailSegment[0].RecordLocator.Locator);}

}}//Via RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5.O VIA RAIL LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

...

No Passive Segments Needed

...

//Via RECORD LOCATOR when no passive segments are needed

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if ((rl.RailSegment.length() > 0)&&((UserPnrData.UserBooking.HotelBooking !=

undefined)||(UserPnrData.UserBooking.CarBooking != undefined)))

{out.print("5.O VIA RAIL LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}}

...

Class of Service Booked

...

//VIA RAIL CLASS OF SERVICE

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "purchase_hold")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5.O Via Rail CLASS OF SVC " + rl.RailSegment[0].ClassCode);}}}

...

Form of Payment

//RAIL FOP

if((UserPnrData.DataType=="purchase_hold")||(UserPnrData.DataType=="new")){with

(UserPnrData.UserSession.PurchaseInfo.RailBilling) {

var cardtype;

if (BrandType.substring(0,4) == "Visa") { cardtype = "VI"; } else if (BrandType.substring(0,4) == "Amer") { cardtype =

"AX"; } else if (BrandType.substring(0,4) == "Mast") { cardtype = "CA"; } else if (BrandType.substring(0,4) == "Disc") {

cardtype = "DS"; } else if (BrandType.substring(0,3) == "JCB") { cardtype = "JC"; } else if (BrandType.substring(0,4)

== "Cart") { cardtype = "CB"; } else if (BrandType.substring(0,4) == "Dine") { cardtype = "DC"; } else if

(BrandType.substring(0,4) == "Univ") { cardtype = "TP"; } else if (BrandType.substring(0,4) == "EnRo") { cardtype =

"ER"; } else { cardtype = "XX" }

var year=ExpirationDate.Year;

var myyear=year.substring(2,4);

var mymonth=ExpirationDate.Month;

if (mymonth == "JAN") {mymonth = "01";}

elseif (mymonth =="FEB") {mymonth = "02";}

else if (mymonth == "MAR") {mymonth = "03";}

else if (mymonth == "APR") {mymonth = "04";}

else if (mymonth == "MAY") {mymonth = "05";}

else if (mymonth == "JUN") {mymonth = "06";}

else if (mymonth == "JUL") {mymonth = "07";}

else if (mymonth == "AUG") {mymonth = "08";}

else if (mymonth == "SEP") {mymonth ="09";}

else if (mymonth =="OCT") {mymonth = "10";}

else if (mymonth == "NOV") {mymonth = "11";}

else if (mymonth =="DEC") {mymonth = "12";}

if (UserPnrData.UserSession.PurchaseInfo.RailBilling != undefined)

out.print("50/-*" + cardtype + CardNumber + "$" + mymonth + "/" + myyear + "-xn");}}

...

Total Fare

//FARE QUOTE - RAIL

if(((UserPnrData.DataType == "new") || (UserPnrData.DataType=="purchase_hold") || (UserPnrData.DataType ==

"change")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

...