Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

The purpose of this page is to inform you about upcoming changes within our OTA/HTNG implementation for both property management systems. Please note that the changes are divided into onPrem and pAir PMS changes. onPrem changes won't be rolled out globally at the date that is mentioned in the table below whilst pAir Updates will always be rolled out for all customers in one step. 
Please note that the XML of the examples are shortened for a clear arrangement. The full sample message can be found on the documentation page for the message.

Release dates pAIR LIVE Environment

VersionRelease date

22.40

2022-10-05
22.382022-09-21
22.362022-09-07
22.342022-08-24
22.322022-08-10
22.302022-07-27
22.282022-07-13


Release dates PWS (onPrem) LIVE Environment

VersionRelease date
3.102022-09-26
3.92022-07-20
3.82022-05-25
3.72022-03-30



Affected MessageDirection from protelPMSPathExampleSummaryInternal referenceVersion
TBA IDS








TBA PWS








TBA IPA








IPA 22.38
IO_InvoiceFiscalizeNotifRQOutboundpAir


Codeblock
languagexml
collapsetrue
<p:IO_InvoiceFiscalizeNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:htng="http://htng.org/2014B" xmlns:p="http://protel.io/soap" CorrelationID="INV#2100171#Update#000153#1663079592581#E8FC" TimeStamp="2022-09-13T14:33:13Z" Version="1.0">
	<p:UniqueID ID="6969" ID_Context="protelIO" Type="Invoice"/>
	<p:UniqueID ID="2877" ID_Context="protelIO" Type="Hotel"/>
	<p:Invoice BusinessDate="2022-04-07" ExternalFiscalClosingID="deafcef0cc6ef843022c048e9521af37" ExternalFiscalCode="7d280d03-ad80-4e4e-9c03-c64bd7cf93ce" ExternallyFiscalized="true" FiscalCode="2393" FiscalCodeID="2" FiscalCodeName="ΑΠΟΔΕΙΞΗ ΠΑΡΟΧΗΣ ΥΠΗΡΕΣΙΩΝ" FiscalDate="2022-09-13T16:33:05+02:00" Fiscalized="true" InvoiceCode="RE_5056" InvoiceDate="2022-09-13T16:33:05+02:00" InvoiceID="6969" Open="false" PastEndOfDay="false" Type="Reservation" User="Alireza Memarifard" UserTaxNo="" Void="false">
		<p:InvoiceRecipient ProfileID="4224" ProfileType="Customer">
			<p:FirstName/>
			<p:LastName>Rxxx</p:LastName>
			<p:Language>en_US</p:Language>
			<p:Notes/>
			<p:Gender/>
			<p:Addresses/>
			<p:EmailAddresses>
				<p:Communication Notes="" PrimaryInd="true" Type="11" Value=""/>
			</p:EmailAddresses>
			<p:PhoneNumbers>
				<p:Communication Notes="" PrimaryInd="true" Type="9" Value=""/>
			</p:PhoneNumbers>
		</p:InvoiceRecipient>
		<p:Charges>
			<p:Item CashRegisterID="1" ID="121026" PostingAccount="153" Quantity="1" ServiceDate="2022-04-07" SystemDate="2022-09-13T14:32:50+02:00" TaxCode="13%" TaxRate="13.000000000" Type="Article">
				<p:PostingText>Accommodation</p:PostingText>
				<p:TotalAmountAfterTax CurrencyCode="EUR">
					<p:Amount>1.00</p:Amount>
				</p:TotalAmountAfterTax>
				<p:SingleAmountAfterTax CurrencyCode="EUR">
					<p:Amount>1.00</p:Amount>
				</p:SingleAmountAfterTax>
				<p:SingleAmountBeforeTax CurrencyCode="EUR">
					<p:Amount>0.88</p:Amount>
				</p:SingleAmountBeforeTax>
				<p:AdditionalText/>
				<p:TaxInfo Code="13%" ID="2" Rate="13.000000000">VAT_13</p:TaxInfo>
				<p:Room>1</p:Room>
				<p:Reference Code="100" ID="26" Name="Accommodation">
					<p:Group Code="1018" ID="25" Name="Accommodation"/>
				</p:Reference>
			</p:Item>
		</p:Charges>
		<p:Payments>
			<p:Item CashRegisterID="1" ID="121027" PostingAccount="153" Quantity="1" ServiceDate="2022-04-07" SystemDate="2022-09-13T14:32:57+02:00" Type="Payment">
				<p:PostingText>??????????? ??????????????</p:PostingText>
				<p:TotalAmountAfterTax CurrencyCode="EUR">
					<p:Amount>-1.00</p:Amount>
				</p:TotalAmountAfterTax>
				<p:SingleAmountAfterTax CurrencyCode="EUR">
					<p:Amount>-1.00</p:Amount>
				</p:SingleAmountAfterTax>
				<p:SingleAmountBeforeTax CurrencyCode="EUR">
					<p:Amount>-1.00</p:Amount>
				</p:SingleAmountBeforeTax>
				<p:AdditionalText/>
				<p:Room>1</p:Room>
				<p:Reference Code="1019" ID="41" Name="??????????? ??????????????">
					<p:Group Code="1012" ID="19" Name="Noncash"/>
				</p:Reference>
			</p:Item>
		</p:Payments>
		<p:Deposits/>
		<p:Expenses/>
		<p:Batches/>
		<p:TotalChargeAmount CurrencyCode="EUR">
			<p:Amount>1.00</p:Amount>
		</p:TotalChargeAmount>
		<p:TotalPaymentsAmount CurrencyCode="EUR">
			<p:Amount>-1.00</p:Amount>
		</p:TotalPaymentsAmount>
		<p:TotalDepositsAmount CurrencyCode="EUR">
			<p:Amount>0.00</p:Amount>
		</p:TotalDepositsAmount>
		<p:VoidReason/>
	</p:Invoice>
	<p:ExternalFiscalCode>7d280d03-ad80-4e4e-9c03-c64bd7cf93ce</p:ExternalFiscalCode>
	<p:ExternalFiscalClosingID>deafcef0cc6ef843022c048e9521af37</p:ExternalFiscalClosingID>
</p:IO_InvoiceFiscalizeNotifRQ>


IO_InvoiceFiscalizeNotifRQ is a new Legal-Fiscal implemented message containing all the fiscal information that sends out to the vendors after a successful fiscalization (internal, external or both)IPA-1058

IPA 22.36 

Anker
IPA 22.36
IPA 22.36

OTA_ProfileCreateRQ
OTA_ProfileModifyRQ
outbound
inbound
pAirOTA_ProfileCreateRQ | Profile | Customer  | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | @BirthDate

OTA_ProfileCreateRQ | Profile | Customer  | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | @BirthPlace

OTA_ProfileCreateRQ | Profile | Customer  | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | @BirthCountry

OTA_ProfileModifyRQ | ProfileModify  | Customer  | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | @BirthDate

OTA_ProfileModifyRQ | ProfileModify  | Customer  | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | @BirthPlace

OTA_ProfileModifyRQ | ProfileModify  | Customer  | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | @BirthCountry


Codeblock
languagexml
collapsetrue
<px:Registration BirtDate="2000-01-01" BirthPlace="Dortmund" BirthCountry="DE"/>


Added the three new optional attributes Registration@BirthDate, Registration@BirthPlace and Registration@BirthCountry.
If two (different or equal) valid birthdates are provided in Customer@BirthDate and Registration@BirthDate, the value from Registration@BirthDate will be taken. Customer@Birthdate will only be taken if no (valid) date is provided in Registration@BirthDate.
IPA-110722.36

PWS 3.9.X 

Anker
PWS 3.9.X
PWS 3.9.X

IO_SystemDataRS outboundonPremise

IO_SystemDataRS | SystemData | Rates | RatePlanGroups | RatePlanGroup |@CategoryCode

IO_SystemDataRS | SystemData | Rates | RatePlanGroups | RatePlanGroup |@CategoryID


Codeblock
languagexml
collapsetrue
<ns2:RatePlanGroup CategoryCode="PWSTG" CategoryID="21" Code="PWSTRC" ID="1271" ID_Context="protelIO" Type="Standard" Visible="true">
	<ns2:Description Language="de">PWS Test Ratecode</ns2:Description>
</ns2:RatePlanGroup>


Added two new optional attributes to be able to display the rategroups. Now the message is able to display the onPremise rate structure rategroup → ratecode → ratecodetails.PWS-32363.9.X

OTA_ProfileModifyRQ

OTA_ProfileModifyRS

outbound

inbound

onPremise

OTA_ProfileModifyRQ | POS | ProfileModify 


OTA_ProfileModifyRS | Errors | Error


Codeblock
languagexml
collapsetrue
<Errors>
	<Error Code="321" ShortText="The Profile is anonymized and will not be updated." Type="10"/>
</Errors>


If an anonymized profile is edited in PMS, then no data is shared. 

As soon as an anonymized profile is tried to be updated in the PMS, the error message is displayed. 

PWS-3261

and 

PWS-3260

3.9.X

PWS 3.8.X 

Anker
PWS 3.8.X
PWS 3.8.X








OTA_HotelInvBlockNotifRQoutboundonPremiseOTA_HotelInvBlockNotifRQ | InvBlocks | InvBlock | RoomTypes | RoomType | RoomTypeAllocations | RoomTypeAllocation 

Current

Codeblock
languagexml
collapsetrue
<RoomTypeAllocations RoomTypePickUpStatus="X">
    <RoomTypeAllocation End="2022-08-01" NumberOfUnits="1" Start="2022-08-01"/>
    <RoomTypeAllocation End="2022-08-02" NumberOfUnits="1" Start="2022-08-02"/>
    <RoomTypeAllocation End="2022-08-03" NumberOfUnits="0" Start="2022-08-03"/>
    <RoomTypeAllocation End="2022-08-04" NumberOfUnits="0" Start="2022-08-04"/>
    <RoomTypeAllocation End="2022-08-05" NumberOfUnits="0" Start="2022-08-05"/>
    <RoomTypeAllocation End="2022-08-06" NumberOfUnits="3" Start="2022-08-06"/>
    <RoomTypeAllocation End="2022-08-07" NumberOfUnits="0" Start="2022-08-07"/>
    <RoomTypeAllocation End="2022-08-08" NumberOfUnits="0" Start="2022-08-08"/>
    <RoomTypeAllocation End="2022-08-09" NumberOfUnits="0" Start="2022-08-09"/>
    <RoomTypeAllocation End="2022-08-10" NumberOfUnits="0" Start="2022-08-10"/>
</RoomTypeAllocations>

Expected

Codeblock
languagexml
collapsetrue
<RoomTypeAllocations RoomTypePickUpStatus="X">
    <RoomTypeAllocation End="2022-08-02" NumberOfUnits="1" Start="2022-08-01"/>
    <RoomTypeAllocation End="2022-08-05" NumberOfUnits="0" Start="2022-08-03"/>
    <RoomTypeAllocation End="2022-08-06" NumberOfUnits="3" Start="2022-08-06"/>
    <RoomTypeAllocation End="2022-08-10" NumberOfUnits="0" Start="2022-08-07"/>
</RoomTypeAllocations>


RoomTypeAllocation blocks will be grouped for consecutive dates per @NumberOfUnits. This will result in a shorter message. No schema change. Valid for all @RoomTypePickUpStatus supported.

PWS-31933.8.X

HTNG_HotelFolioNotifRQ

HTNG_HotelFolioRS

outbound

inbound

onPremise

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | FolioIDs | FolioID

or/and

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | RevenueDetailItems | RevenueDetailItem | FolioIDs | FolioID


Codeblock
languagexml
collapsetrue
<htng:HTNG_HotelFolioNotifRQ>
	<htng:Folios>
		<htng:Folio>
			<htng:RevenueDetails>
				<htng:RevenueDetail>
					<FolioIDs>
						<FolioID>OResID | xyz <FolioID/>
						<FolioID>OGstID | xyz <FolioID/>


Add the "OResID" and "OGstID" to the FolioID Element, to display the  "originalResID" and "originalGuestID"  if an items was shifted from one Reservation to another.

If an Item was not shifted, the Information will not be displayed

PWS-31513.8.X

OTA_ProfileCreateRQ 

OTA_ProfileModifyRQ 

inboundonPremiseOTA_ProfileModifyRQ | ProfileModify | Customer | TPA_Extensions | ProfileInfoExtensions | Salutation


Codeblock
languagexml
collapsetrue
<OTA_ProfileModifyRQ>
	<ProfileModify>
			<TPA_Extensions>
				<px:ProfileInfoExtensions>
					<px:PersonInfos>       <px:Salutation ID="1" ID_Context="protelIO" Type="Salutation">Dear Mrs. and Miss. Mustermann</px:Salutation>


When we receive a new salutation, it is now no longer overwritten. If the TPA_Extensions part is completely not in the XML, then the personal salutation is also not touched. In addition, the personal salutation is changed back if there is no personal salutation in the TPA_Extensions part. PWS-31793.8.X

OTA_ProfileCreateRQ 

OTA_ProfileModifyRQ 

outboundonPremiseOTA_ProfileModifyRQ | ProfileModify | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:Language 


Codeblock
languagexml
collapsetrue
<OTA_ProfileModifyRQ>
	<ProfileModify>
			<TPA_Extensions>
				<px:ProfileInfoExtensions>
					<px:PersonInfos>
						<px:Language DefaultInd="true">en-us</px:Language>



Add the TPA Extension Language to the profile messages.PWS-31503.8.X
OTA_ReadRQinboundonPremise

OTA_ReadRQ | ReadRequests | HotelReadRequest | TPA_Extensions | px:ReadRequestExtensions | px:Room | @RoomID


Codeblock
languagexml
collapsetrue
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" CorrelationID="PWS-3130" Version="0" EchoToken="PWS-3130" MaxResponses="2">
	<POS>
		<Source>
			<RequestorID ID="3152" Type="10" ID_Context="protelIO"/>
		</Source>
	</POS>
	<ReadRequests>
		<HotelReadRequest>
			<SelectionCriteria ResStatus="In-house"/>
			<Verification>
				<PersonName>
					<Surname>Duck</Surname>
				</PersonName>
			</Verification>
			<TPA_Extensions>
				<px:ReadRequestExtensions xmlns:px="http://protel.io/htng/extensions">
					<px:Room RoomID="303" />
				</px:ReadRequestExtensions>
			</TPA_Extension>
		</HotelReadRequest>
	</ReadRequests>
</OTA_ReadRQ>


Extend the OTA_ReadRQ to search for the RoomIDPWS-31303.8.X

IDS 6.095

Anker
IDS 6.095
IDS 6.095








OTA_HotelRatePlanNotifRQ

outbound

OnPremise

pAir

OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | @TaxInclusive

OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | Taxes | @Amount

OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | Taxes | @CurrencyCode


Codeblock
languagexml
collapsetrue
<AdditionalGuestAmounts>
    <AdditionalGuestAmount AgeQualifyingCode="7" Amount="18.18" CurrencyCode="EUR" MaxAge="3" MinAge="0" TaxInclusive="false">
        <Taxes Amount="1.82" CurrencyCode="EUR"/>
    </AdditionalGuestAmount>


Include tax details per child bucketIDS-5246.095
OTA_HotelRateAmountNotifRQoutbound

OnPremise

pAir

OTA_HotelRateAmountNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | @TaxInclusive

OTA_HotelRateAmountNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | Taxes | @Amount

OTA_HotelRateAmountNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | Taxes | @CurrencyCode


Codeblock
languagexml
collapsetrue
<AdditionalGuestAmounts>
    <AdditionalGuestAmount AgeQualifyingCode="7" Amount="18.18" CurrencyCode="EUR" MaxAge="3" MinAge="0" TaxInclusive="false">
        <Taxes Amount="1.82" CurrencyCode="EUR"/>
    </AdditionalGuestAmount>


Include tax details per child bucketIDS-5246.095

PWS 3.7.X 

Anker
PWS 3.7.X
PWS 3.7.X








OTA_ProfileCreateRQ 

OTA_ProfileModifyRQ 

InboundOnPremise

OTA_ProfileCreateRQ | Profile | Customer | PersonName | MiddleName

OTA_ProfileModifyRQ | ProfileModify | Customer | PersonName | MiddleName


Codeblock
languagexml
collapsetrue
<Customer BirthDate="1980-01-01" Gender="Female">
	<PersonName>
		<GivenName>Doodi</GivenName>
		<MiddleName>Jacksonn</MiddleName>
		<Surname>Joness</Surname>
	</PersonName>
	<Email DefaultInd="true" EmailType="1" ShareMarketInd="No">xgomez+892372@civitfun.com</Email>
	<Address DefaultInd="true" FormattedInd="false" ShareMarketInd="No" Type="1" UseType="6">
		<AddressLine>Calle Dos 2</AddressLine>
		<CityName>Palma</CityName>
		<StateProv>Islas Baleares</StateProv>
		<CountryName Code="ES">Spain</CountryName>
	</Address>
	<CitizenCountryName Code="ES" DefaultInd="true"/>
	<Document DocID="99999999R" DocType="5" EffectiveDate="2015-01-01" ExpireDate="2024-12-31"/>
	<EmployerInfo CompanyShortName="" Department=""/>
</Customer>


To implement MiddleName for inbound private profilesPWS-31283.7.X

OTA_ProfileCreateRQ 

OTA_ProfileModifyRQ 

outboundOnPremise

OTA_ProfileCreateRQ | Profile | TPA_Extensions | px:ProfileInfoExtensions | px:StatisticalInfos | px:ParentProfile 


 OTA_ProfileModifyRQ | ProfileModify | TPA_Extensions | px:ProfileInfoExtensions | px:StatisticalInfos | px:ParentProfile 


Codeblock
languagexml
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
	<px:ProfileInfoExtensions>
		<px:StatisticalInfos>
			<px:ParentProfile Name="Duck AG" ID="181579" ID_Context="protelIO" Type="3"/>
		</px:StatisticalInfos>
	</px:ProfileInfoExtensions>
</TPA_Extensions>


Remove the existing TPA_Extensions 

Codeblock
languagexml
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">      
     <Master MasterAccountID="181579"/>     
</TPA_Extensions>

And add the new official XSD TPA_Extensions "px:ParentProfile "

PWS-30973.7.X
OTA_HotelResNotifRQoutboundOnPremise

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | Guarantee


Codeblock
languagexml
collapsetrue
<Guarantee GuaranteeType="CC/DC/Voucher">
    <GuaranteesAccepted>
        <GuaranteeAccepted>
            <PaymentCard CardCode="MC" CardType="1" EncryptionKey="hOSJucTz-9QDE-KKKE-qiTa-af8X4oOiNVG" ExpireDate="0123" MaskedCardNumber="XXXXXXXXXXXX5100">
                <CardHolderName>AT</CardHolderName>
            </PaymentCard>
        </GuaranteeAccepted>
    </GuaranteesAccepted>
</Guarantee>


assigned credit cards will be displayed in the outbound Reservation messagePWS-10893.7.X

HTNG_ChargePostingRQ

inboundOnPremise

HTNG_ChargePostingRQ | Posting | Transaction | RevenueDetails | RevenueDetail | Account


Codeblock
languagexml
collapsetrue
<RevenueDetails>
	<RevenueDetail Description="Cash Payment" PMSRevenueCode="1" CurrencyCode="AED" Amount="-45.00" SubTypeID="Payment">
		<Account ID="555342188" Type="14" ID_Context="External"/>
	</RevenueDetail>
</RevenueDetails>


Posted Revenue / Payment is possible against External ResID. PWS-31123.7.X
IO_RatePackageNotifRQoutboundOnPremise

IO_RatePackageNotifRQ | Packages | Package | Validity


IO_RatePackageNotifRQ | Packages | Package | PackageItem | Validity


Codeblock
languagexml
collapsetrue
<Validity From="1990-01-01" To="2050-01-01"/>


Remove the time stamp from the Validity element according to our XSDPWS-30923.7.X


...