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 options. Tickets can be picked up at a station kiosk or emailed.
To download above documents:
Click on desired document
Click on cloud symbol in the upper right-hand corner of your screen, this will allow you to download, save and/or print
Benefits and Need to Know
Benefits and Need to Know | |
Benefits |
|
Need to Know |
|
Steps to Configure
Agency Settings |
|
PNR Mapping |
|
Private Rates |
|
Travel Policy |
|
Display Policy |
|
Travel Service Rules |
|
Agency Settings Configuration
Accessing Agency Settings | Agency Setting configurations will clone over to your template site.
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.
Via Rail Specific Support: Follow these steps:
|
Private Rate Configuration
Breakdown | |
Steps to Configure | Please take the following steps if your client or TMC has a private rate with Via
|
Commit Changes and Test | Be sure to commit all changes you have completed during this configuration.
|
Passive Segments
Sabre Passive Segment
Segment Example | Breakdown |
0RAL2VGK1NYPBOS19DEC-LV-900A/AR-100P/NA- TRAIN 66/SI-BKD ONLINE/CF-123ABC |
|
Apollo Passive Segment
Segment Example | Breakdown |
02V95Y24SEPNYPPHLBK1/1035A1157A |
|
Worldspan Passive Segment
Segment Example | Breakdown |
TN2VMK1TRN24MAR/CC1-NYP/CC2-WAS/AN-Via 1229/TD-1000AM/TA-1130AM/CF-1234234 |
|
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 (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("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)) {out.print("5.O VIA RAIL FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);} |