Release dates pAIR LIVE Environment

VersionRelease date
21.502021-12-15
21.342021-08-25
21.322021-08-11
21.302021-07-28
21.282021-07-14
21.262021-06-30
21.242021-06-16
21.222021-06-02
21.202021-05-19
21.162021-04-21
21.142021-04-07
21.122021-03-24
21.102021-03-10
21.082021-02-24
21.062021-02-10
21.042021-01-27
21.022021-01-13
Affected MessageDirection from protelPMSPathExampleSummaryInternal referenceVersion

IPA 21.50 








OTA_HotelInvBlockNotifRQInboundpAirOTA_HotelInvBlockNotifRQ | InvBlocks | InvBlock | RoomTypes | RoomType | RatePlans | RatePlan | MarketCode
									...
									<RateDescription Name="RateGroup">
										<Text TextFormat="PlainText">BAR</Text>
									</RateDescription>
									<MarketCode MarketCode="FAM" MarketCodeName="Famille"/>
								</RatePlan>
							</RatePlans>
						</RoomType>
					</RoomTypes>
					...

Implement the MarketCode for inbound allotments.IPA-98821.50

IPA 21.34 








HTNG_ChargePostingRQinboundpAirno changes in XML
Only negative amounts are allowed, positive amounts will not be processed.IPA-943IPA 21.34

IPA 21.32 








OTA_HotelResNotifRQ InboundpAirOTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | RoomRates | RoomRate
<RoomRate BookingCode="JST" EffectiveDate="2020-08-31" ExpireDate="2020-09-01" InvBlockCode="" NumberOfUnits="1" RatePlanCategory="BAR" RatePlanCode="Alireza" RatePlanID="28" RoomID="10-2L" RoomTypeCode="JST">
Receiving an inbound reservation with @InvBlockCode = "" will delete and remove the assigned allotment.IPA-823IPA 21.32

IPA 21.30 








HTNG_ChargePostingRQInboundpAirno changes in XML
<htng:HTNG_ChargePostingRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2021-03-18T11:32:36Z" xmlns:htng="http://htng.org/2014B" xmlns:p="http://protel.io/soap" xmlns:px="http://protel.io/htng/extensions" EchoToken="IPA_910_01" Version="1" CorrelationID="IPA_910_01" PrimaryLangID="en_US">
	<htng:POS>
		<Source>
			<RequestorID Type="10" ID_Context="protelIO"/>
			<BookingChannel Primary="true"/>
		</Source>
	</htng:POS>
	<htng:Posting>
		<htng:Transaction>
			<htng:RevenueDetails>
				<htng:RevenueDetail Amount="30.00" CurrencyCode="EUR" Description="package3" ReferenceID="0" SubTypeID="Batch" TransactionDate="2020-08-29">
					<htng:UnitPrice AmountAfterTax="30.00" AmountBeforeTax="25.00" CurrencyCode="EUR" Type="31"/>
					<htng:ExtendedPrice AmountAfterTax="30.00" AmountBeforeTax="25.00" CurrencyCode="EUR" Quantity="1" Type="31"/>
					<htng:RevenueDetailItems>
						<htng:RevenueDetailItem Amount="10.00" CurrencyCode="EUR" GuestViewable="false" PMSRevenueCode="302" RevenueCategoryCode="6" TransactionDate="2020-08-29">
							<htng:UnitPrice AmountAfterTax="10.00" AmountBeforeTax="8.33" CurrencyCode="EUR" Type="31">
								<Taxes CurrencyCode="EUR">
									<Tax Amount="1.67" CurrencyCode="EUR" Percent="20.00" Type="Inclusive"/>
								</Taxes>
							</htng:UnitPrice>
							<htng:ExtendedPrice AmountAfterTax="10.00" AmountBeforeTax="8.33" CurrencyCode="EUR" Quantity="1" Type="31">
								<Taxes CurrencyCode="EUR">
									<Tax Amount="1.67" CurrencyCode="EUR" Percent="20.00" Type="Inclusive"/>
								</Taxes>
							</htng:ExtendedPrice>
						</htng:RevenueDetailItem>
						<htng:RevenueDetailItem Amount="20.00" CurrencyCode="EUR" GuestViewable="false" PMSRevenueCode="246" RevenueCategoryCode="6" TransactionDate="2020-08-29">
							<htng:UnitPrice AmountAfterTax="20.00" AmountBeforeTax="16.67" CurrencyCode="EUR" Type="31">
								<Taxes CurrencyCode="EUR">
									<Tax Amount="3.33" CurrencyCode="EUR" Percent="20.00" Type="Inclusive"/>
								</Taxes>
							</htng:UnitPrice>
							<htng:ExtendedPrice AmountAfterTax="20.00" AmountBeforeTax="16.67" CurrencyCode="EUR" Quantity="1" Type="31">
								<Taxes CurrencyCode="EUR">
									<Tax Amount="3.33" CurrencyCode="EUR" Percent="20.00" Type="Inclusive"/>
								</Taxes>
							</htng:ExtendedPrice>
						</htng:RevenueDetailItem>
					</htng:RevenueDetailItems>
					<htng:Account ID="1793" ID_Context="protelIO" Type="14"/>
				</htng:RevenueDetail>
			</htng:RevenueDetails>
		</htng:Transaction>
	</htng:Posting>
</htng:HTNG_ChargePostingRQ>
Creating package trough the ChargePostingRQ and by SubType = "Batch"
The incoming charges need to be able to include different items with multiple tax values which get stated as one item package on the client´s invoice.
IPA-91021.30

IPA 21.28 








IO_StatsNotifRQoutboundpAirIO_StatsNotifRQ | Statistics | Statistic | StatisticApplicationSets | StatisticApplicationSet | CountCategorySummaries | CountCategorySummary
<StatisticApplicationSet End="2021-04-11" Start="2021-04-11">
	<RevenueCategorySummaries>
		<RevenueCategorySummary Amount="0.00" CurrencyCode="EUR" RevenueCategoryCode="3"/>
		<RevenueCategorySummary Amount="0.00" CurrencyCode="EUR" RevenueCategoryCode="123"/>
		<RevenueCategorySummary Amount="16.48" CurrencyCode="EUR" RevenueCategoryCode="6"/>
		<RevenueCategorySummary Amount="17.30" CurrencyCode="EUR" RevenueCategoryCode="126"/>
		<RevenueCategorySummary Amount="323.64" CurrencyCode="EUR" RevenueCategoryCode="9"/>
		<RevenueCategorySummary Amount="346.30" CurrencyCode="EUR" RevenueCategoryCode="129"/>
		<RevenueCategorySummary Amount="0.00" CurrencyCode="EUR" RevenueCategoryCode="0"/>
		<RevenueCategorySummary Amount="0.00" CurrencyCode="EUR" RevenueCategoryCode="120"/>
		<RevenueCategorySummary Amount="340.12" CurrencyCode="EUR" RevenueCategoryCode="17"/>
		<RevenueCategorySummary Amount="363.60" CurrencyCode="EUR" RevenueCategoryCode="1217"/>
	</RevenueCategorySummaries>
	<CountCategorySummaries>
		<CountCategorySummary CountCategoryCode="8" SummaryCount="194"/>
		<CountCategorySummary CountCategoryCode="9" SummaryCount="194"/>
		<CountCategorySummary CountCategoryCode="10" SummaryCount="0"/>
		<CountCategorySummary CountCategoryCode="11" SummaryCount="0"/>
		<CountCategorySummary CountCategoryCode="12" SummaryCount="0"/>
		<CountCategorySummary CountCategoryCode="13" SummaryCount="0"/>
		<CountCategorySummary CountCategoryCode="22" SummaryCount="0"/>
		<CountCategorySummary CountCategoryCode="19" SummaryCount="0"/>
		<CountCategorySummary CountCategoryCode="14" SummaryCount="37"/>
		<CountCategorySummary CountCategoryCode="15" SummaryCount="0"/>
	</CountCategorySummaries>
Add the CountCategorySummary to the property levelIPA-92121.28
OTA_HotelResNotifRQinboundpAirOTA_HotelResNotifRQ | HotelResservations | HotelReservation | ResGuests | ResGuest
Profile Modify
<ResGuests>
    <ResGuest ResGuestRPH="7408275281816" PrimaryIndicator="true">
        <Profiles>
            <ProfileInfo>
                <UniqueID ID="7408275281816" Type="1" ID_Context="External"/>
                <UniqueID ID="45641" Type="1" ID_Context="protelIO"/>
                <Profile ProfileType="1">
                    <Customer Gender="Female" BirthDate="1986-06-06" Language="de">
                        <PersonName>
                            <NamePrefix>Mrs</NamePrefix>
                            <GivenName>Johane</GivenName>
                            <Surname>Doe</Surname>
                        </PersonName>
                        <Telephone DefaultInd="false" FormattedInd="false" PhoneLocationType="6" PhoneNumber="12345" PhoneTechType="1"/>
                        <Telephone DefaultInd="true" FormattedInd="false" PhoneLocationType="10" PhoneNumber="6789101112" PhoneTechType="5"/>
                        <Email DefaultInd="true" EmailType="1">test@protel.net</Email>
                        <Address DefaultInd="true" FormattedInd="false" Type="1">
                            <AddressLine>Add 1</AddressLine>
                            <AddressLine>Addr 2</AddressLine>
                            <AddressLine>Addr 3</AddressLine>
                            <CityName>Dortmund</CityName>
                            <PostalCode>618488</PostalCode>
                            <CountryName Code="DE">Germany</CountryName>
                        </Address>
                    </Customer>
                </Profile>
            </ProfileInfo>
        </Profiles>
        <TPA_Extensions>
            <px:GuestStayExtensions>
                <px:StayInfo Arrival="2021-08-10T12:00:00+02:00" Departure="2021-08-12T12:00:00+02:00" PrimaryInd="true" Role="ArrivingGuest" Status="Reserved"/>
            </px:GuestStayExtensions>
        </TPA_Extensions>
    </ResGuest>
It will now be possible to modify Guest Profile data using the inbound reservation message for the usage of CRS systems. No profile objects will be subject of deletion. Complete profile modifications will still be possible only with the OTA_ProfileModifyRQ.IPA-90221.28
OTA_HotelResNotifRQinboundpAir

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | Comments | Comment @CommentOriginatorCode

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | Comments | Comment @Name

Comment
<Comments>
    <Comment CommentOriginatorCode="PMS-Frontend" GuestViewable="true">
        <Text TextFormat="PlainText">Internal PMS user comment</Text>
    </Comment>
    <Comment CommentOriginatorCode="iHotelier" GuestViewable="true" Name="Arrival Info">
        <Text TextFormat="PlainText">External partner comment</Text>
    </Comment>
</Comments>

It will now be possible for IO partners to maintain a comment section of their own in the PMS - create/modify. 

If @CommentOriginatorCode and @Name are not provided - then only one comment line is supported. The external comment section in the PMS will always be overwritten

If @CommentOriginatorCode="PMS-Frontend" then the value of the Text element refers to a comment left by the PMS owner. This value should not be used inbound.

For each unique @CommentOriginatorCode and @Name pair - new comment line is appended in the PMS resevation comment section. Modification on it is achievable with the same unique pair values.

IPA-90621.28

IPA 21.26 








IO_InvoiceFiscalizeRQ OutboundpAirIO_InvoiceFiscalizeRQ | Invoice | InvoiceRecipientReminderCode 
<p:IO_InvoiceFiscalizeRQ xmlns:p="http://protel.io/soap" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:htng="http://htng.org/2014B" CorrelationID="INV#2100171#CLOSE#000043#1624887140070#E520" RetransmissionInd="true" TimeStamp="2021-06-28T13:32:20Z" Version="1.0">
...
	<p:Invoice BusinessDate="2021-06-14" ExternallyFiscalized="false" FiscalCode="432" FiscalCodeID="2" FiscalCodeName="ΑΠΟΔΕΙΞΗ ΠΑΡΟΧΗΣ ΥΠΗΡΕΣΙΩΝ" FiscalDate="2021-06-28T15:32:20+02:00" Fiscalized="true" InvoiceCode="RE_1121" InvoiceDate="2021-06-17T15:45:33+02:00" InvoiceID="1607" Open="false" PastEndOfDay="false" Type="Reservation" User="Alireza Memarifard" UserTaxNo="" Void="false">
		<p:InvoiceRecipient ProfileID="799" ProfileType="Customer">
			<p:FirstName/>
			<p:LastName>Kxxx</p:LastName>
			<p:Nationality>BE</p:Nationality>
			<p:Language>en_US</p:Language>
			<p:Notes/>
			<p:Gender/>
			<p:Addresses/>
		</p:InvoiceRecipient>
		<p:InvoiceRecipientReminderCode Code="Standard" CurrencyCode="EUR" Description="Standard" Inactive="false" PrimaryInd="true">
			<p:Level Days="30" Fee="0.000000000" Step="0"/>
			<p:Level Days="30" Fee="0.000000000" Step="1"/>
			<p:Level Days="30" Fee="0.000000000" Step="2"/>
			<p:Level Days="30" Fee="0.000000000" Step="3"/>
			<p:Level Days="30" Fee="0.000000000" Step="4"/>
		</p:InvoiceRecipientReminderCode>
		...
Adding Invoice Recipient reminder codes to the outbound message with multiple level element.IPA-89721.26

IPA 21.24 








OTA_HotelResNotifRQoutboundpAirOTA_HotelResNotifRQ | HotelReservations | HotelReservation | TPA_Extensions | ReservationExtensions | CancellationInfo
<OTA_HotelResNotifRQ>
	<HotelReservations>
		<HotelReservation ResStatus="Cancelled">
			<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
				<px:ReservationExtensions>
					<px:CancellationInfo ID="14" Type="15" ID_Context="protelIO" Code="Test" Timestamp="2017-09-10T12:25:00" User="protel">Falsches Datum</px:CancellationInfo>
				</px:ReservationExtensions>
Add the TPA_Extension "CancellationInfo"IPA-87421.24
OTA_HotelInvBlockNotifRQ outboundpAirOTA_HotelInvBlockNotifRQ | TPA_Extensions | ReservationExtensions | ReservationExtension | px:CancellationInfo 
<OTA_HotelInvBlockNotifRQ>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		<px:ReservationExtensions>
			<px:CancellationInfo ID="14" Type="15" ID_Context="protelIO" Code="Test" Timestamp="2017-09-10T12:25:00" User="protel">Falsches Datum</px:CancellationInfo>
		</px:ReservationExtensions>
Add the TPA_Extension "CancellationInfo"IPA-87421.24

IPA 21.22








HTNG_HotelFolioRSoutboundpAirno changes in XML
Routing instructions are now reflected in RevenueDetails for RevenueForecast.IPA-88521.22

IPA 21.20








OTA_HotelStatsNotifRQoutboundpAirno changes in XML

The message contains the following FiscalDates:

  • px:POSExtensions | HotelInfo | @FiscalDate = Current Business date in PMS
  • Statistics | Statistic | @FiscalDate = always the date the last End of Day process has been done for (last completed business day)
IPA-88821.20

IPA 21.16  








IO_InvoiceFiscalizeRQoutboundpAirIO_InvoiceFiscalizeRQ | Invoice | @FiscalCodeID
<p:IO_InvoiceFiscalizeRQ>
	<p:Invoice FiscalCode="29" FiscalCodeID="10" FiscalCodeName="Fiscal_test" ">
Add the Attribute @FiscalCodeID to the Element InvoiceIPA-825IPA 21.16

IPA 21.12








OTA_HotelAvailRQInboundpAirOTA_HotelAvailRQ | AvailRequestSegments | AvailRequestSegment | HotelSearchCriteria | Criterion | Profiles
<OTA_HotelAvailRQ
    xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="EchoToken_String" HotelStayOnly="true" ExactMatchOnly="false" TimeStamp="2018-12-03T09:30:47Z" Version="5.000" Target="Test">
    <POS>
        <Source>
            <RequestorID Type="10" ID_Context="protelIO" ID="3236" />
        </Source>
    </POS>
    <AvailRequestSegments>
        <AvailRequestSegment AvailReqType="Room">
            <HotelSearchCriteria>
                <Criterion>
                    <StayDateRange Start="2020-08-01" End="2020-08-05" />
                    <Profiles>
                        <ProfileInfo>
                            <UniqueID ID="123456" ID_Context="protelIO" Type="1" />
                            <Profile/>
                        </ProfileInfo>
                    </Profiles>
                </Criterion>
            </HotelSearchCriteria>
        </AvailRequestSegment>
    </AvailRequestSegments>
</OTA_HotelAvailRQ>

Extended the schema to enable query with profile ID. The query is meant to return special corporate rates linked to the profile.

  • query can be done only for 1 profile id at a time
  • the result will hold only the special corporate rates and no other rates
  • if no profile id is used - other search criteria is applied (no special corporate rates are included)
IPA-791IPA 21.12

IPA 21.10 








OTA_HotelResNotifRQoutboundpAirno changes in XML
...
<TPA_Extensions>
	<px:GuestStayExtensions>
		<px:StayInfo Arrival="2020-08-16T12:00:00+02:00" Departure="2020-08-20T12:00:00+02:00" PrimaryInd="false" Role="BookerAndArrivingGuest" Status="In-house"/>
		<px:TelephoneSetting ClassOfService="3"/>
	</px:GuestStayExtensions>
</TPA_Extensions>
...
In case that the second guest has the reservation booker role, this attribute in ResGuest will be displayed as  Role="BookerAndArrivingGuest" IPA-74921.10
HTNG_HotelFolioNotifRQ OutboundpAirno changes in XML
EOD will produces HTNG_HotelFolioNotifRQ messages because charges were posted to inhouse reservations.IPA-81521.10
HTNG_ChargePostingRQinboundpAir

HTNG_ChargePostingRQ | Posting | RevenueDetails | RevenueDetail | @Amount

HTNG_ChargePostingRQ | Posting | RevenueDetails | RevenueDetail | ExtendedPrice | @AmountAfterTax

no changes in the XML

RevenueDetail | @Amount will be used for the Total Amount of an Item.

ExtendedPrice | @AmountAfterTax will be used for the Single Amount of an Item.



OTA_ProfileModifyRQinboundpAir

OTA_ProfileModifyRQ | ProfileModify | Customer | Telephone 

OTA_ProfileModifyRQ | ProfileModify | Customer | Email

OTA_ProfileModifyRQ | ProfileModify | CompanyInfo | TelephoneInfo

OTA_ProfileModifyRQ | ProfileModify | CompanyInfo | Email

no changes in the XML

Change the Logic for inbound Email and Telephone

  1. Ignore empty incoming lists of attached records (to avoid unwanted deletions)
  2. Don't remove existing attached records (to avoid unwanted deletions)
  3. Add new record for records from the message, if value can't be found
IPA-818IPA 21.10

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

OutboundpAir

OTA_ProfileCreateRQ | Profile | Customer | Telephone | @PhoneLocationType

OTA_ProfileModifyRQ | ProfileModify | Customer | Telephone | @PhoneLocationType


OTA_ProfileCreateRQ | Profile | CompanyInfo | TelephoneInfo | @PhoneLocationType

OTA_ProfileModifyRQ | ProfileModify | CompanyInfo | TelephoneInfo | @PhoneLocationType

<Telephone DefaultInd="true" FormattedInd="false" PhoneLocationType="6" PhoneNumber="0231-915930" PhoneTechType="1"/>
<Telephone DefaultInd="true" FormattedInd="false" PhoneLocationType="6" PhoneNumber="0177-777 555 22" PhoneTechType="5"/>
<Telephone DefaultInd="true" FormattedInd="false" PhoneLocationType="6" PhoneNumber="0231-915 915 915" PhoneTechType="3"/>
<TelephoneInfo DefaultInd="false" FormattedInd="false" PhoneLocationType="7" PhoneNumber="0231- 915 915 915" PhoneTechType="3"/>
<TelephoneInfo DefaultInd="false" FormattedInd="false" PhoneLocationType="7" PhoneNumber="0177-777 555 22" PhoneTechType="5"/>
<TelephoneInfo DefaultInd="false" FormattedInd="false" PhoneLocationType="7" PhoneNumber="0231 -915 930" PhoneTechType="1"/>
Add the Attribute @PhoneLocationType to the Profile MsgIPA-807IPA 21.10

IPA 21.08 








IO_SystemDataRSOutboundpAirIO_SystemDataRS | SystemData
<ns2:IO_SystemDataRS xmlns:ns2="http://protel.io/soap" xmlns:ns3="http://www.opentravel.org/OTA/2003/05" CorrelationID="IPA-800-SR5" EchoToken="IPA-800-SR5" TimeStamp="2021-02-10T09:22:48Z" Version="1.000">
	<ns2:Success>false</ns2:Success>
	<ns2:SystemData ChainCode="n/a" HotelCode="2100116" HotelID="2100116" HotelName="protel_IO_Testhotel_pAir_2100116">
		<ns2:UniqueID ID="2100116" ID_Context="protelIO" Type="10"/>
		<ns2:Accounting>...</ns2:Accounting>
		<ns2:Profiles>...</ns2:Profiles>
		<ns2:Loyalty>...</ns2:Loyalty>
		<ns2:RoomTypes>...</ns2:RoomTypes>
		<ns2:Reservations>...</ns2:Reservations>
		<ns2:Events>...</ns2:Events>
		<ns2:Rates>...</ns2:Rates>
		<ns2:Tasks>...</ns2:Tasks>
	</ns2:SystemData>
</ns2:IO_SystemDataRS>
  1.  Changed element name from Result to SystemData
  2. Elements Errors / Success / Warnings moved up one level from IO_SystemDataRS | Result | Success (Errors, Warnings) to IO_SystemDataRS | Success (Errors, Warnings)
IO-606321.08

IPA 21.06 








HTNG_HotelFolioNotifRQOutboundpAriHTNG_HotelFolioNotifRQ | Folios | Folio
...
<htng:Folios>
	<htng:Folio FolioGroupingID="Closed" FolioID="2289" FolioType="Room" GuestPayable="false" InvoiceID="618">
		<htng:BasicPropertyInfo ChainCode="n/a" HotelCode="2787" HotelCodeContext="protelIO" HotelName="protel_IO_Testhotel_pAir_2100112"/>
		<htng:CustomerProfile>
		...
To add FolioGroupingID in the outbound message to show the status of the invoice if it "Closed" or "Open"IPA-79621.06
IO_StatsNotifRQOutboundpAirno changes in the XML
ReportCode value changed to the "Genius_PastDailyRoomTypeStatistics_v1" for the past reports triggering via API call.IPA-79221.06
IO_StatsNotifRQOutboundpAirIO_StatsNotifRQ | Statistics | Statistics
<Statistic ChainCode="n/a" FiscalDate="2020-08-15" HotelCode="2787" HotelName="protel_IO_Testhotel_pAir_2100112" ReportCode="Genius_PastDailyRoomTypeStatistics_v1">
					<StatisticApplicationSets>
						<StatisticApplicationSet End="2020-07-01" Start="2020-07-01">
							<StatisticCodes>
								<StatisticCode StatCategoryCode="3" StatCode="JS"/>
Past data value will be sent out when "Genius_PastDailyRoomTypeStatistics_v1" is triggered via an SCS job in IO_StatsNotifRQ outbound.IPA-79321.06
OTA_HotelStayInfoNotifRQOutboundpAirOTA_HotelStayInfoNotifRQ | StayInfos | StayInfo | RevenueCategories | RevenueCategory | RevenueDetails | RevenueDetail | FolioIDs | FolioID
<OTA_HotelStayInfoNotifRQ>
	<StayInfos>
		<StayInfo>
			<RevenueCategories>
				<RevenueCategory>
					<RevenueDetails>
						<RevenueDetail>
							<FolioIDs>
								<FolioID>InvID|408616</FolioID>
								<FolioID>ResID|2387956</FolioID>
								<FolioID>GstID|5374993</FolioID>
								<FolioID>TAAGrp|ROOMS</FolioID>
Add the Element <FolioID>TAAGrp|ROOMS</FolioID> IPA-75921.06
HTNG_ChargePostingRQInboundpAirno changes in the XML
Fixing the issue with Payment posted to a profile ID is failing in case of using a payment method flagged as account receivableIPA-77721.06

IPA 21.04








OTA_HotelResNotifRQInboundpAirno changes in the XML
Modifiying AgeQulificationCode and change the number of guests with inbound reservation modify.IPA-77221.04
IO_InvoiceFiscalizeRQOutbound pAirIO_InvoiceFiscalizeRQ
...
<p:Invoice User="Alireza Memarifard" UserTaxNo="" InvoiceCode="RE_13825" Fiscalized="false" ExternallyFiscalized="false" Type="Reservation" PastEndOfDay="false" Open="true" Void="false" InvoiceID="22700" DeliveryDate="2021-02-09">
...
Added the DeliveryDate (legal requirement Hungary)IPA-79521.04
HTNG_HotelRoomStatusUpdateNotifRQOutoundpAirno changes in the XML
Fixing the incorrect RoomStatus sent out by the pAir for different status.IPA-76521.04
OTA_HotelResNotifRQ OutboundpAirOTA_HotelResNotifRQ | HotelReservations | HotelReservation | TPA_Extensions | ReservationExtensions | FixedCharges
<TPA_Extensions>
	<px:ReservationExtensions>
		<px:ReservationStatus Code="Bez" ID="17" ID_Context="protelIO" Name="Bezahlt" RPH="17245"/>
		<px:ReservationCode Code="WWW" ID="46" ID_Context="protelIO" Language="de_DE" Name="Internet" RPH="17245" Type="CommunicationChannel"/>
		<px:ReservationCode Code="Urlaub" ID="177" ID_Context="protelIO" Language="de_DE" Name="Urlaub" RPH="17245" Type="TravelReason"/>
		<px:FixedCharges>
			<px:FixedCharge Code="Obstkorb" From="2017-07-22" Quantity="1" Recurrence="OnArrival" To="2017-07-27">
				<px:UniqueID ID="5" ID_Context="protelIO" Type="16"/>
				<px:Item Code="1021" ItemID="79"/>
				<px:Price CurrencyCode="EUR" SingleAmountAfterTax="12.50"/>
				<px:InvoiceText>Obstkorb</px:InvoiceText>
			</px:FixedCharge>
			<px:FixedCharge Code="Flasche Wein" From="2017-07-22" Quantity="1" Recurrence="Fixed" To="2017-07-27">
				<px:UniqueID ID="6" ID_Context="protelIO" Type="16"/>
				<px:Item Code="1023" ItemID="83"/>
				<px:Price CurrencyCode="EUR" SingleAmountAfterTax="29.00"/>
				<px:InvoiceText>Flasche Wein</px:InvoiceText>
			</px:FixedCharge>
		</px:FixedCharges>
	</px:ReservationExtensions>
</TPA_Extensions>
We will add the FixedCharges to the ReservationExtensions.IPA-76821.04
IO_SystemDataRSOutboundpAirIO_SystemDataRS
<ns2:ItemRoutingTemplates>
	<ns2:ItemRoutingTemplate Code="RI_Template">
		<ns2:Name Language="de_DE">Gesamte Reservierung</ns2:Name>
		<ns2:Description Language="de_DE">{"and":[{"item":[4,112]}]}</ns2:Description>
	</ns2:ItemRoutingTemplate>
</ns2:ItemRoutingTemplates>
<ns2:TransactionAccounts>
	<ns2:TransactionAccount Code="1000" CurrencyCode="EUR" ID="1" ID_Context="protelIO" RevenueCategoryCode="6" Visible="true">
		<ns2:Name Language="de_DE">Speisen</ns2:Name>
		<ns2:Description Language="de_DE">RR</ns2:Description>
		<ns2:Items>
			<ns2:Item AmountAfterTax="9.000000000" Code="1020" CurrencyCode="EUR" Group="SP" ID="77" ID_Context="protelIO" RevenueCategoryCode="3" StatisticsCode="FoodAndBeverage" TaxCode="10%" TaxPercentage="10" Visible="true">
				<ns2:Name Language="de_DE">Frühstück</ns2:Name>
			</ns2:Item>
			<ns2:Item AmountAfterTax="9.000000000" Code="1036" CurrencyCode="EUR" Group="SP" ID="109" ID_Context="protelIO" RevenueCategoryCode="3" StatisticsCode="FoodAndBeverage" TaxCode="10%" TaxPercentage="10" Visible="true">
				<ns2:Name Language="de_DE">Breakfast-Package</ns2:Name>
			</ns2:Item>
			<ns2:Item AmountAfterTax="7.500000000" Code="1021" CurrencyCode="EUR" Group="SP" ID="79" ID_Context="protelIO" RevenueCategoryCode="6" StatisticsCode="Extras" TaxCode="10%" TaxPercentage="10" Visible="true">
				<ns2:Name Language="de_DE">Obstkorb</ns2:Name>
			</ns2:Item>
			<ns2:Item AmountAfterTax="9.000000000" Code="1022" CurrencyCode="EUR" Group="SP" ID="81" ID_Context="protelIO" RevenueCategoryCode="3" StatisticsCode="FoodAndBeverage" TaxCode="10%" TaxPercentage="10" Visible="true">
				<ns2:Name Language="de_DE">Lunchpaket</ns2:Name>
			</ns2:Item>
			<ns2:Item AmountAfterTax="0.000000000" Code="1024" CurrencyCode="EUR" Group="SP" ID="85" ID_Context="protelIO" RevenueCategoryCode="3" StatisticsCode="FoodAndBeverage" TaxCode="10%" TaxPercentage="10" Visible="true">
				<ns2:Name Language="de_DE">Buffet</ns2:Name>
			</ns2:Item>
			<ns2:Item AmountAfterTax="5.000000000" Code="1027" CurrencyCode="EUR" Group="SP" ID="90" ID_Context="protelIO" RevenueCategoryCode="3" StatisticsCode="FoodAndBeverage" TaxCode="10%" TaxPercentage="10" Visible="true">
				<ns2:Name Language="de_DE">Frühstück Kind <5 Yrs</ns2:Name>
			</ns2:Item>
		</ns2:Items>
	</ns2:TransactionAccount>
</ns2:TransactionAccounts>
<ns2:AgeGroups>
	<ns2:AgeGroup Code="10" ID="-1" ID_Context="protelIO" Visible="true">
		<ns2:Description Language="de_DE"> (0-0) Adult</ns2:Description>
	</ns2:AgeGroup>
	<ns2:AgeGroup Code="8" ID="1" ID_Context="protelIO" Visible="true">
		<ns2:Name Language="de_DE">Kinder</ns2:Name>
		<ns2:Description Language="de_DE">Kinder (0-14) Child</ns2:Description>
	</ns2:AgeGroup>
</ns2:AgeGroups>

Adding the following attributes / elements:

  • attribute RevenueCategoryCode to Item element
  • element FiscalCodes to Accounting element
  • element ItemRoutingTemplates to Accounting element
  • element AgeGroups to Rates element
IPA-76621.04
IO_SystemDataRQInboundpAirIO_SystemDataRQ | Request
<p:IO_SystemDataRQ xmlns:p="http://protel.io/soap" TimeStamp="2020-08-20T07:15:51.4023488Z" Version="1.000" CorrelationID="IPA-766" EchoToken="IPA-766">
	<p:Request xmlns:p="http://protel.io/soap">
		<UniqueID Type="10" ID="2575" ID_Context="protelIO"/>
		<p:Accounting/>
		<p:Rooms/>
		<p:Reservations/>
		<p:Rates/>
		<p:Tasks/>
		<p:Loyalty/>
		<p:Profiles/>
		<p:Events/>
	</p:Request>
</p:IO_SystemDataRQ>

Added the possibility to request only specific parts of the message. Within the Request element you can send the following elements to request them in the IO_SystemDataRS message:

  • element Accounting
  • element Rooms
  • element Reservations
  • element Rates
  • element Tasks
  • element Profiles
  • element Loyalty
  • element Events
IPA-76621.04

IPA 21.02








OTA_HotelResNotifRQOutboundpAirno changes in the XML

Stop sending reservations of other multi-property hotels during EOD.

IPA-78921.02
IO_SysAdministrationCompleteNotifRQOutboundpAirIO_SysAdministrationCompleteNotifRQ | Changes | Change | Value
<?xml version='1.0' encoding='utf-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Header>
		<p:Action xmlns:p="http://protel.io/soap">IO_SysAdministrationCompleteNotifRQ</p:Action>
		<p:CorrelationID xmlns:p="http://protel.io/soap">STATUS#2100114#ENDOFDAY#000098#1610449341514#7FA1</p:CorrelationID>
		<p:Source xmlns:p="http://protel.io/soap" Module="backline" ModuleVersion="2021-01-12T08:33:01 (QA)" Product="protelAir" ProductVersion="2102.0.61296-RC" Service="io.protel.air"/>
	</env:Header>
	<env:Body>
		<p:IO_SysAdministrationCompleteNotifRQ xmlns:p="http://protel.io/soap" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:htng="http://htng.org/2014B" CorrelationID="STATUS#2100114#ENDOFDAY#000098#1610449341514#7FA1" TimeStamp="2021-01-12T11:02:21Z" Version="1.0">
			<p:Changes ChainCode="n/a" HotelCode="2792" HotelID="2100114" HotelName="protel_IO_Testhotel_pAir_2100114">
				<p:Change>
					<p:Name>currentBookingDate</p:Name>
					<p:Value>2021-01-05T00:00:00+01:00</p:Value>
				</p:Change>
			</p:Changes>
		</p:IO_SysAdministrationCompleteNotifRQ>
	</env:Body>
</env:Envelope>
The value of the currentBookingDate in outbound IO_SysAdministrationCompleteNotifRQ is currently same with the PMS current business date. IPA-78421.02
OTA_ReadRQInboundpAirOTA_ReadRQ | @ReturnListIndicator no change in XML

The behaviour will be changed to 

  • @ReturnListIndicator="true" then all the search filters will be applied as "like" search criteria (wildcard search).
  • @ReturnListIndicator="false" then all search criterias are checked (strict search)
  • @ReturnListIndicator is missing then all search criterias are checked (strict search)


IPA-76121.02
OTA_ReadRQ / OTA_ProfileReadRSInboundpAirOTA_ReadRQ | @ReturnListIndicator no change in XMLOTA_ProfileReadRS will hold
  • an error element in case no profiles could be found (strict search)
  • success plus warning element in case profiles only found when ignoring certain search criterias
IPA-76221.02
  • Keine Stichwörter