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
21
24.
06
46
2021
2024-
02
12-
10
11
21
24.
04
42
2021
2024-
01
11-
27
13
21
24.
02
42
2021
2024-
01-1320.532020-12-3020.512020-12-1620.492020-12-0220.472020-11-1820.452020-11-0420.432020-10-2120.412020-10-07

Release dates PWS (onPrem) LIVE Environment

VersionRelease datePWS 3.1TBAPWS 3.02020-02-08

PWS 2.20

2020-11-23PWS 2.192020-10-05
11-06  NO regular Release
24.422024-10-30 NO regular Release
24.422024-10-16 NO regular Release
24.382024-09-30
24.382024-09-18 NO regular Release
24.362024-09-04 - IPA update will be now every 4 weeks
24.342024-08-21
24.322024-08-07 NO regular Release
24.302024-07-24 NO regular Release
24.292027-07-17
24.282024-07-10 NO regular Release
24.262024-06-26 NO regular Release
24.242024-06-12
24.222024-05-29
24.202024-05-15
24.18NO regular Release on Wednesday 01.05.2024 due to public Holiday in Germany
24.162024-04-17
24.142024-04-03
24.122024-03-20
24.102024-03-06
24.082024-02-21
24.062024-02-07
24.042024-01-24
24.022024-01-10


Release dates PWS (onPrem) LIVE Environment

VersionRelease date
3.192024-10
3.182024-05-22*
3.172024-03-06
3.162023-12-20

*: delayed

Release dates ESB (I/O) LIVE Environment

VersionRelease date
2.6.32024-11-06
2.6.22024-09-25
2.6.12024-08-21
2.6.02024-07-15
2.5.32024-06-10
2.5.22024-05-15
2.5.12024-04-10
2.5.02024-02-26




TBA IDS

TBA ESB
Bulk Export from SMP UIoutbound

OnPrem

pAir

n/ano schema changeEach bulk job can be of maximum 2 years timespan. If it is necessary to have longer time span - more bulk jobs should be created.SMP-2928TBA
Bulk Export from SMP UIoutbound

OnPrem

pAir

n/ano schema change

#1

For one destination - only one bulk job can be running.

Any further bulk jobs for the same destination will be saved in the sequence - but it will not start unless all previous jobs are finalized (cancelled, completed).

#2 

If the queue for a destination in BULK mode exceeds 10K messages, no new bulk job should start. 

Any further bulk jobs for the same destination will be saved in the sequence - but it will not start unless the queue in BULK mode for the destination drops under 10K messages.

IO-82292.5.4








TBA PWS
OTA_ReadRQ/OTA_ResRetrieveRSinboundonPremiseextend the Reservation search by roomtypes


Codeblock
languagexml
collapsetrue
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" CorrelationID="PWS-3822_LJ_01" TimeStamp="2021-08-26T10:10:00Z">
	<POS>
		<Source>
			<RequestorID ID="3151" Type="10" ID_Context="protelIO"/>
			<BookingChannel Type="4" Primary="true"/>
		</Source>
	</POS>
	<ReadRequests>
		<HotelReadRequest>
			<SelectionCriteria Start="2017-10-10" End="2017-10-10" ResStatus="Reserved"/>
			<TPA_Extensions>
				<px:ReadRequestExtensions xmlns:px="http://protel.io/htng/extensions">
					<px:Room RoomTypeCode="Cl-Twin"/>
				</px:ReadRequestExtensions>
			</TPA_Extensions>
		</HotelReadRequest>
	</ReadRequests>
</OTA_ReadRQ>


In the ReadRQ it is now possible to request the RoomType in addition to the time period and reservation status.PWS-3822TBA
TBA IPA

IO_SystemDataRS

outboundpAir

no schema change

but we will expand for pAir the attributes

  • @AgeFrom
  • @AgeTo
  • @AgeQualifyingCode

no schema change

In the pAir SystemData in Rate Configuration you can define  Discount Groups. With the extension for pAir  we send the attributes

  • @AgeFrom
  • @AgeTo
  • @AgeQualifyingCode

IPA-1467

TBA

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

outbound / inbound pAir

no schema change

no schema change

no change in the Schema.

Export @LoyalLevel value with the string label the way it is defined by the user instead of the PMS SystemData ID 


IPA-1277

TBA

OTA_HotelResNotifRQ

OTA_ProfileCreateRQ 

OTA_ProfileModifyRQ 

OTA_HotelStayInfoNotifRQ 

outbound / inboundpAir

OTA_ProfileModifyRQ | ProfileModify | Customer | Document


Codeblock
languagexml
collapsetrue
<OTA_ProfileCreateRQ>
	<Profile>
		<Customer>
			<Document DocIssueLocation="Dortmund_22" DocID="123456" DocType="4" EffectiveDate="2018-12-12" ExpireDate="2050-12-31" DocIssueAuthority="1234"/>
		</Customer>
	</Profile>
</OTA_ProfileCreateRQ>


To be legal in Austria, a new Attribute is added to the Document Element with the label "Issuing Authorities"

IPA-1369

TBA
IO_SystemDataRQinboundpAir

IO_SystemDataRQ | Request | Rates 


Codeblock
languagexml
collapsetrue
    <p:Request xmlns:p="http://protel.io/soap">
        <p:UniqueID Type="10" ID="2575" ID_Context="protelIO"/>
        <p:Rates IncludeInvisible="true or false"/>
    </p:Request>


The vendor should be able to tell us in the RQ with the attribute IncludeInvisible="true or false" which rates he wants to see.

  • If we do not receive a restriction in the RQ, we send out all data by default
  • If we receive the restriction IncludeInvisible="true", we send all rates (like default)
  • If we receive the restriction IncludeInvisible="false", we send all rates that are currently valid 

IPA-1404

TBA
IO_SystemDataRSoutboundpAir 

IO_SystemDataRS | SystemData | Rates | RatePlans | RatePlan


Codeblock
languagexml
collapsetrue


The vendor should be able to tell us in the RQ with the attribute IncludeInvisible="true or false" which rates he wants to see.

  • If we do not receive a restriction in the RQ, we send out all data by default
  • If we receive the restriction IncludeInvisible="true", we send all rates (like default)
  • If we receive the restriction IncludeInvisible="false", we send all rates that are currently valid 

IPA-1403

TBA

PWS 3.19.X 

Anker
PWS 3.19.X
PWS 3.19.X

OTA_HotelResNotifRQ

inbound

OnPrem

no schema changes


We will no longer import fixed charges with inbound OTA_HotelResNotifRQ. This can only be done with IO_ResModifyNotifRQ.

PWS-3810

3.19.0

OTA_HotelResNotifRQ

inbound

OnPrem

no schema changes


Implemented the import of the attributes CommunicationChannel and TravelReason.

PWS-3820

3.19.0

OTA_HotelRatePlanNotifRQ

inbound

OnPrem

no schema changes


  • Overlay = All data is overwritten 
  • Delta = Only the specified data record in the RQ is adjusted. All other data remains unchanged. 

PWS-3821

3.19.0

IO_SystemDataRQ

inbound

OnPrem

IO_SystemDataRQ | Request | Rates @IncludeInvisible


Codeblock
languagexml
collapsetrue
<p:IO_SystemDataRQ xmlns:p="http://protel.io/soap" TimeStamp="2020-08-20T07:15:51.4023488Z" Version="1.000" CorrelationID="IncludeInvisible">
	<p:Request xmlns:p="http://protel.io/soap">
		<p:UniqueID Type="10" ID="3152" ID_Context="protelIO"/>
		<p:Rates IncludeInvisible="true"/>
	</p:Request>
</p:IO_SystemDataRQ>


To shorten the RS message we implemented a new attribute to exclude information about expired rates. If this new attribute is not provided, the RS message will contain information about all rates as before  (default=true). If the new attribute is sent with "false", the RS message will no longer contain information about expired rates.

PWS-3805
PWS-3806

3.19.0

IO_SystemDataRS

outbound

OnPrem

IO_SystemDataRS | SystemData | Reservations | GuestRelationTypes | GuestRelationType 


Codeblock
<ns2:IO_SystemDataRS>
	<ns2:SystemData>
		<ns2:Reservations>
			<ns2:GuestRelationTypes>
				<ns2:GuestRelationType Code="BRO" ID="1" ID_Context="protelIO" Visible="true">
					<ns2:Name Language="en">Brother</ns2:Name>
				</ns2:GuestRelationType>


Added the GuestRelationType to the SystemDataRS.

PWS-3835

3.19.0

PWS 3.17.X 

Anker
PWS 3.17.X
PWS 3.17.X

OTA_HotelInvBlockNotifRQ

outboundOnPremOTA_HotelInvBlockNotifRQ | InvBlocks | InvBlock | RoomTypes | RoomType | RatePlans | RatePlan@TaxInclusive


Codeblock
languagexml
collapsetrue
<RatePlan CurrencyCode="EUR" End="2100-01-01" MaxGuestApplicable="9999" RatePlanCode="StdRateExclTax" Start="1980-01-01" TaxInclusive="false">


Flag is linked to the system setup for rate values. If the PWS is set to send "net values only", the attribute will be send with "false". If the system is set up to send "gross values only" OR "net and gross values", the attribute will be send with "true".PWS-37293.17.0

HTNG_HotelRoomStatusUpdateNotifRQ

outbound / inboundOnPrem


Message implemented for outbound and inbound processing.PWS-3202
PWS-3246
3.17.0

PWS 3.16.X 

Anker
PWS 3.16.X
PWS 3.16.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

outbound

OnPrem

OTA_ProfileCreateRQ | Profile | Customer | Document

OTA_ProfileModifyRQ | ProfileModify | Customer | Document

no schema change

With OnPrem 23.060 it will be possible to store more than one travel document per profile so that the outbound profile messages may contain more than one document element.

PWS-3723

3.16.0

OTA_HotelResNotifRQ

outbound

OnPrem

HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | Customer | RelatedTraveler | TPA_Extensions | px:GuestStayExtensions | px:StayInfo


Codeblock
languagexml
collapsetrue
<RelatedTraveler BirthDate="2006-03-05">
	<UniqueID ID="181493" ID_Context="protelIO" Type="1"/>
	<PersonName Language="de">
		<NamePrefix/>
		<GivenName>Tick</GivenName>
		<MiddleName/>
		<Surname>Duck</Surname>
		<Document DocID="987654321" DocType="5"/>
	</PersonName>
	<TPA_Extensions>
		<px:GuestStayExtensions>
			<px:StayInfo PrimaryInd="false" RelationToPrimary="Neffe / Nichte"/>
		</px:GuestStayExtensions>
	</TPA_Extensions>
</RelatedTraveler>


The legal requirements in Spain stipulate that additional guests can be related to the main guest.

The relationship to the main guest can soon be transferred by the additional attribute with.

This is for example important  for police reports.

PWS-3697

3.16.0

OTA_HotelResNotifRQ

outbound

OnPrem

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | TPA_Extensions | px:Traces


No change in XML, but traces from the past (before the current PMS business date) are no longer sent.

PWS-3676

3.16.0

OTA_ProfileModifyRQ

outbound

OnPrem

OTA_ProfileModifyRQ | ProfileModify | Customer | TPA_Extensions | px:ProfileExtensions | px:PersonInfos | px:Registration | px:Occupation


Codeblock
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
    <px:ProfileInfoExtensions>
        <px:PersonInfos>
            <px:MarketingCodes>
                <px:Code DefaultInd="false" DisplaySequence="0" ID="3" ID_Context="protelIO" Type="MARKETINGCODE">Wintergast</px:Code>
            </px:MarketingCodes>
            <px:Registration BirthCountry="DE" BirthPlace="Oberhausen">
                <px:Occupation>Polizist</px:Occupation>
            </px:Registration>
            <px:Language DefaultInd="true">en</px:Language>
        </px:PersonInfos>
        <px:Salutation ID="1" ID_Context="protelIO" Type="Salutation">Sehr geehrte Frau Werner</px:Salutation>
    </px:ProfileInfoExtensions>
</TPA_Extensions>


The attribute occupation was added. 

PWS-3714

3.16.0

IO_ResModifyNotifRQ

inbound

OnPrem

IO_ResModifyNotifRQ | Reservations | Reservation | ProfileReferences | ProfileReference

@RelationToPrimary


Codeblock
languagexml
collapsetrue
<p:IO_ResModifyNotifRQ xmlns:p="http://protel.io/soap" CorrelationID="UseCase11b" TimeStamp="2018-12-29T15:20:35.985Z" Version="1.00">
    <p:Reservations HotelCode="3152">
        <p:Reservation ArrivalDate="2018-11-11">
            <p:UniqueID ID="345474" Type="Reservation" ID_Context="Protel_IO"/>
            <p:ProfileReferences>
                <p:ProfileReference ID_Context="protelIO" Type="Customer" ID="181491" RelationToPrimary="Son" Action="CREATE"/>
            </p:ProfileReferences>
        </p:Reservation>
    </p:Reservations>
</p:IO_ResModifyNotifRQ>


The legal requirements in Spain stipulate that additional guests can be related to the main guest.

The relationship to the main guest can be transferred by the additional attribute for UseCase 11b only.

The relation is for example important for police reports. 

PWS-3700

3.16.0

OTA_HotelResNotifRQ

OTA_HotelStayInfoNotifRQ

OTA_ProfileCreateRQ 

OTA_ProfileCreateRQ

outbound

OnPrem

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration |  | px:DocumentInfos | px:DocumentInfo

OTA_HotelStayInfoNotifRQ | StayInfos | StayInfo | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration |  | px:DocumentInfos | px:DocumentInfo

OTA_ProfileCreateRQ | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration |  | px:DocumentInfos | px:DocumentInfo

OTA_ProfileModifyRQ | ProfileModify | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration  |  px:DocumentInfos | px:DocumentInfo


Codeblock
languagexml
collapsetrue
<Customer>
    <TPA_Extensions>
    ....
        <ProfileInfoExtensions>
        ....
            <PersonInfos>
            ....           
                <Registration BirthDate="1980-01-06" BirthCountry="MA">
                    <Occupation>Mechanic</Occupation>
                    <DocumentInfos>                 
                      <DocumentInfo RPH="665554444" ID_Context="SNDS" ID="120-24440-GV0" Type="DocumentIdentifier"/>
                    </DocumentInfos>
                </Registration> 
            </PersonInfos>
        </ProfileInfoExtensions> 
    </TPA_Extensions>
</Customer>


Due to Spanish legal requirements (Police reports), we extend the TPA extensions in the Customer  element with DocumentInfo for the support number  of Spanish documents.

PWS-3712

3.16.0

OTA_HotelResNotifRQ

OTA_ProfileCreateRQ 

OTA_ProfileCreateRQ 

inbound

OnPrem 

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration |  | px:DocumentInfos | px:DocumentInfo

OTA_ProfileCreateRQ | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration |  | px:DocumentInfos | px:DocumentInfo

OTA_ProfileModifyRQ | ProfileModify | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration  |  px:DocumentInfos | px:DocumentInfo


Codeblock
languagexml
collapsetrue
<Customer>
    <TPA_Extensions>
    ....
        <ProfileInfoExtensions>
        ....
            <PersonInfos>
            ....           
                <Registration BirthDate="1980-01-06" BirthCountry="MA">
                    <Occupation>Mechanic</Occupation>
                    <DocumentInfos>                 
                      <DocumentInfo RPH="665554444" ID_Context="SNDS" ID="120-24440-GV0" Type="DocumentIdentifier"/>
                    </DocumentInfos>
                </Registration> 
            </PersonInfos>
        </ProfileInfoExtensions> 
    </TPA_Extensions>
</Customer>


Due to Spanish legal requirements (Police reports), we extend the TPA extensions in the Customer  element with DocumentInfo for the support number  of a Spanish documents.

PWS-3713

3.16.0

OTA_ProfileCreateRQ

OTA_ProfileCreateRQ 


inbound

OnPrem

no change in xml


Codeblock
languagexml
collapsetrue
<Customer Gender="Male" BirthDate="2020-01-01" VIP_Indicator="true" Language="de" CustomerValue="ECA - 10%|0;VIP|2">
	<PersonName>
		<NamePrefix>Herr</NamePrefix>
		<GivenName>Donald</GivenName>
		<Surname>Duck</Surname>
	</PersonName>
	<CitizenCountryName DefaultInd="true" Code="DE"/>
	<Document DocID="123456798" DocIssueLocation="" DocType="2" EffectiveDate="2020-01-01" ExpireDate="2030-01-01"/>
	<Document DocID="963852" DocType="1" EffectiveDate="2021-10-10"/>
</Customer>


With OnPrem version 23.060 and higher it is possible to send more than one document per profile.

PWS-3651

3.16.0

OTA_HotelResNotifRQ

OTA_ProfileCreateRQ

OTA_ProfileCreateRQ 

outbound / inbound

OnPrem

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | LicensePlate


OTA_ProfileCreateRQ | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | LicensePlate

OTA_ProfileModifyRQ | ProfileModify | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:ProfileInfoExtensions | px:PersonInfos | px:Registration | LicensePlate


Codeblock
languagexml
collapsetrue
<px:ProfileInfoExtensions>
    <px:PersonInfos>
        <px:Registration BirthCountry="DE" BirthPlace="Entenhausen">
            <LicensePlate>ENT-DD 1</LicensePlate>
        </px:Registration>
    </px:PersonInfos>
</px:ProfileInfoExtensions>


Corrected the xml to follow the schema.

PWS-3711

3.16.0

ESB 323

Anker
ESB 323
ESB 323








HTNG_ChargePostingRSoutbound

onPrem

pAir

 HTNG_ChargePostingRS | Errors | Error


Codeblock
languagexml
collapsetrue
<Errors>
                <Error Code="188" Type="1" ShortText="Transaction error - please report. Incomplete Posting flow. Please check the guest folio before a retry."/>
            </Errors>


If no RS is generated by the PMS service within ~55 seconds, then:
  • the ESB will not do retries itself
  • the ESB will generate a generic RS to inform the sender of the RQ about the failure.

! The RQ should not be automatically retried - the posting itself could have happened, yet for some reason - no RS could have been generated by the PMS service (e.g. fiscalization error).

IO-7390ESB 323

IPA 24.38

Anker
IPA 24.38
IPA 24.38









OTA_HotelResNotifRQ

inboundpAir

no schema change

no schema change

Handling for CC-Cards

  • inbound @CardCode Attribute needs to be configured in the pAir SystemData that it can be used for Payment Posting or Deposit Posting
  • Case-insensitive is working for the @CardCode Attribute
    • CardCode in the SystemData: "Mastercard" → inbound CardCode "MasterCard"
    • CardCode in the SystemData: "Mastercard" → inbound CardCode "mastercards"
  • Detokenize Card Number is always possible

→ Important for Hotels → all possible inbound CardCodes needs to be configured in the System Data (if a vendor is sending "Mastercard (virtual credit card)" it needs to be configured in the SystemData)
→ Important for Vendor → discuss with the Hotels with CardCode are configured in their System Data.

IPA-1568

24.38

IPA 24.29

Anker
IPA 24.29
IPA 24.29









IO_SystemDataRS 


IO_ResModifyNotifRQ


OTA_HotelResNotifRQ



outbound


outbound


outbound / inbound

pAir

no schema change

no schema change

If the new Xsetup (Guest Relation with Primary) is set for the relations of the guests to the main guest, the various GuestRelationTypes can be queried from the system data via IO_SystemDataRS and sent via IO_ResModifyNotifRQ and OTA_HotelResNotifRQ with the attribute @RelationToPrimary.NGPR-8321 / IOTEC-599924.29

IPA 24.24

Anker
IPA 24.24
IPA 24.24









IO_InvoiceFiscalizeRQ 

IO_InvoiceFiscalizeNotifRQ

outboundpAir

IO_InvoiceFiscalizeRQ | Invoice | AdditionalText


Codeblock
languagexml
collapsetrue
<p:AdditionalText>test 123 </p:AdditionalText>




Due to the legal requirements in Romania, we are extend the invoice element with a new element for the additional text  for invoices.

IPA-1367TBA

IO_InvoiceFiscalizeRQ 

IO_InvoiceFiscalizeNotifRQ

outboundpAir

IO_InvoiceFiscalizeRQ | Invoice | InvoiceFormat


Codeblock
languagexml
collapsetrue
<p:InvoiceFormat>ItemsSortDate</p:InvoiceFormat>


Due to the legal requirements in Romania, we are expanding the invoice element with a new element for the invoice format for invoices.

IPA-1365TBA
IO_SystemDataRSoutboundpAir

IO_SystemDataRS | SystemData | Accounting | InvoiceFormat


Codeblock
languagexml
collapsetrue
                    <ns2:InvoiceFormats>
                        <ns2:InvoiceFormat Code="ItemsSortDate">
                            <ns2:Description Language="en_US">Single items, sort by date</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsSortGuest">
                            <ns2:Description Language="en_US">Single items, sort by guest</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsSortRoom">
                            <ns2:Description Language="en_US">Single items, sort by room</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsSortCrs">
                            <ns2:Description Language="en_US">Single items, sort by CRS number</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsGroupCode">
                            <ns2:Description Language="en_US">Combine identical items</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsGroupDate">
                            <ns2:Description Language="en_US">Combine identical items and dates</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsGroupGuest">
                            <ns2:Description Language="en_US">Combine identical items and guest</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsGroupRoom">
                            <ns2:Description Language="en_US">Combine identical items and rooms</ns2:Description>
                        </ns2:InvoiceFormat>
                        <ns2:InvoiceFormat Code="ItemsGroupCrs">
                            <ns2:Description Language="en_US">Combine identical items and CRS number</ns2:Description>
                        </ns2:InvoiceFormat>
                    </ns2:InvoiceFormats>


Due to the legal requirements in Romania, we are expanding the Accounting element with a new element for the invoice format for invoices.

IPA-1365TBA

IO_InvoiceFiscalizeRQ

IO_InvoiceFiscalizeNotifRQ

outboundpAir

no schema change

no schema change

no change in the Schema.

To be legal in Portugal, an IO_InvoiceFiscalizeRQ needs to be triggered as soon as an Proforma or Info Invoice is created.

IPA-1345

24.24

IPA 24.20

Anker
IPA 24.20
IPA 24.20









OTA_HotelResNotifRQOTA_HotelStayInfoNotifRQOTA_ResRetrieveRSHTNG_HotelCheckInNotifRQHTNG_HotelCheckOutNotifRQ 

outboundpAir

HotelReservation | ResGuests |  ResGuest | TPA_Extensions | px:GuestStayExtensions | px:StayInfo


@CheckedIn

@CheckedOut 


Codeblock
languagexml
collapsetrue
<TPA_Extensions>
    <px:GuestStayExtensions>
        <px:StayInfo Arrival="2024-02-27T09:13:06+01:00" CheckedIn="2024-04-26T09:13:06+02:00" CheckedOut="2024-05-02T15:12:21+02:00" Departure="2024-02-28T15:12:21+01:00" PrimaryInd="true" Role="BookerAndArrivingGuest" Status="Checked out"/>
        <px:TelephoneSetting ClassOfService="3"/>
    </px:GuestStayExtensions>
</TPA_Extensions> 


To be legal compliant for police reports we added  new attributes in the StayInfo Element 

@CheckedIn = date and time for the logged checkin for the reservation 

@CheckedOut = date and time for the logged checkout for the reservation 

IPA-1392

24.20

OTA_HotelResNotifRQ

outbound / inboundpAir

px:ReservationExtensions | px:ProcessingInstructions | px:ResGuests |

@FullOverlay

@Role



Codeblock
languagexml
titleOverlay profiles
collapsetrue
<px:ReservationExtensions>
    <px:ProcessingInstructions>
        <px:ResGuests FullOverlay="true" Role="LinkedProfile"/>
    </px:ProcessingInstructions>


Extending the handling of list of profiles linked to a reservation:

  • If px:ProcessingInstructions | px:ResGuests | @FullOverlay="true", then the list of profiles provided in the inbound RQ msg will completely replace those existing in the PMS for the designated @Role. This allows to use intentional removal of existing profiles linked to a reservation. 
  • Else - if the new element is missing or the @FullOverlay="false" - the current existing logic remains - profiles are appended to the reservation.

! Caution - If the vendor does not have the intention to remove a profile from a reservation - then this element should not be sent inbound !

IPA-1387

24.20








IPA 24.14

Anker
IPA 24.14
IPA 24.14








IO_InvoiceFiscalizeRQ

IO_InvoiceFiscalizeNotifRQ

outboundpAir

IO_InvoiceFiscalizeRQ | Invoice


Codeblock
languagexml
collapsetrue
<p:Invoice BusinessDate="2022-08-09" ExternallyFiscalized="false" FiscalCode="gg12cc" FiscalCodeID="2" FiscalCodeName="Test_AB" FiscalDate="2024-03-27T08:31:34+01:00" Fiscalized="true" InvoiceCode="RE_23" InvoiceDate="2024-03-27T08:31:34+01:00" InvoiceID="34" Open="false" PastEndOfDay="false" SystemFiscalCode1="AA" SystemFiscalCode2="bb" SystemFiscalCode3="cc" Type="Reservation" User="Julia W" UserTaxNo="" Void="false">



Due to legal requirements in Portugal, we are expanding 
the invoice element with the attributes from the fiscal code in the systemdata:


@SystemFiscalCode1 for ATCUD

@SystemFiscalCode2 for NIF

@SystemFiscalCode3 for SAFT


IPA-135024.14

IO_InvoiceFiscalizeRQ

IO_InvoiceFiscalizeNotifRQ

outboundpAir

IO_InvoiceFiscalizeRQ | Invoice | InvoiceRecipient | AccountingInfos


Codeblock
languagexml
collapsetrue
<p:InvoiceRecipient ProfileID="919" ProfileType="Corporation">
	<p:FirstName/>
	<p:LastName>Agenzia delle Entrate</p:LastName>
	<p:Language>it_IT</p:Language>
	<p:Notes/>
	<p:Gender/>
	<p:TaxNumber>06363391001</p:TaxNumber>
	<p:AccountingInfos CompanyRegNumber="987654321" FiscalUID="1234567890" PublicAdministrationInd="false" SplitPaymentInd="false" Tax1="06363391001" Tax2="06363391001"/>
</p:InvoiceRecipient>



We extend the AccountingInfos with the attributes 

@FiscalUID

@CompanyRegNumber

IPA-1380

24.14

IO_InvoiceFiscalizeNotifRQ 

IO_InvoiceFiscalizeRQ

outboundpAir

IO_InvoiceFiscalizeRQ | Invoice | InvoiceRecipient | AccountingInfos

 

Codeblock
languagexml
collapsetrue
<p:InvoiceRecipient ProfileID="1234" ProfileType="Customer">
	<p:FirstName>Jessica</p:FirstName>
	<p:LastName>Alba</p:LastName>
	<p:BirthDate>1980-10-10</p:BirthDate>
	<p:Gender>F</p:Gender>
	<p:Addresses/>
	<p:AccountingInfos PublicAdministrationInd="true" SplitPaymentInd="true"/>
</p:InvoiceRecipient>


Due to legal requirements in Italy, we extend 
the AccountingInfos with the attributes 

@PublicAdministrationInd

@SplitPaymentInd

IPA-136324.14

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

outbound

inbound

pAir

Customer | TPA_Extensions | px:ProfileInfoExtensions  | px:AccountingInfos

 

Codeblock
languagexml
collapsetrue
<px:ProfileInfoExtensions>
	<px:AddressTypes/>
</px:ContactDetails>
</px:PersonInfos>
<px:AccountingInfos CompanyRegNumber="98711654321" FiscalUID="1525234567890"/>
</px:ProfileInfoExtensions>


We extend the AccountingInfos with the attributes 

@FiscalUID

@CompanyRegNumber

IPA-1377

IPA-1378

24.14

OTA_HotelResNotif

outbound

inbound


pAir

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:AccountingInfos

 

Codeblock
languagexml
collapsetrue
<px:ProfileInfoExtensions>
	<px:AddressTypes/>
</px:ContactDetails>
</px:PersonInfos>
<px:AccountingInfos CompanyRegNumber="98711654321" FiscalUID="1525234567890"/>
</px:ProfileInfoExtensions>


We extend the AccountingInfos with the attributes 

@FiscalUID

@CompanyRegNumber

IPA-1377

IPA-1378

24.14
OTA_HotelStayInfoNotifRQoutboundpAir

OTA_HotelStayInfoNotifRQ | StayInfos | StayInfo | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile| Customer | TPA_Extensions | px:ProfileInfoExtensions | px:AccountingInfos


Codeblock
languagexml
collapsetrue
<px:ProfileInfoExtensions>
	<px:AddressTypes/>
</px:ContactDetails>
</px:PersonInfos>
<px:AccountingInfos CompanyRegNumber="98711654321" FiscalUID="1525234567890"/>
</px:ProfileInfoExtensions>



We extend the AccountingInfos with the attributes 

@FiscalUID

@CompanyRegNumber

IPA-1377

24.14

IPA 24.12

Anker
IPA 24.12
IPA 24.12








OTA_HotelResNotifRQoutbound / inboundpAir

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGuests | ResGuest | TPA_Extensions | px:GuestStayExtensions | px:StayInfo

 

Codeblock
languagexml
collapsetrue
<TPA_Extensions>
    <px:GuestStayExtensions>
        <px:StayInfo Arrival="2024-02-07T12:00:00+01:00" Departure="2024-02-08T12:00:00+01:00" PrimaryInd="true" Role="LinkedProfile" Status="Reserved"/>
        <px:TelephoneSetting ClassOfService="3"/>
    </px:GuestStayExtensions>
</TPA_Extensions>


There is now a new function in the PMS so that the PrimaryInd= true attribute can be used to specify the profile of the leading company OR the travel agency within the same reservation.



IPA-1357

IPA-1358

24.12

IPA 24.08

Anker
IPA 24.08
IPA 24.08









IO_SystemDataRS

outboundpAirIO_SystemDataRS | SystemData | Reservations | GuestRelationTypes | GuestRelationType 


Codeblock
languagexml
collapsetrue
<ns2:GuestRelationTypes>
	<ns2:GuestRelationType Code="Abuelo" ID="1" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Abuelo</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Abuela" ID="2" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Abuela</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Padre" ID="3" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Padre</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Madre" ID="4" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Madre</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Tio" ID="5" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Tio</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Tia" ID="6" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Tia</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Tutor Legal" ID="7" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Tutor Legal</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Hijo" ID="8" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Hijo</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Hija" ID="9" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Hija</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Nieto" ID="10" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Nieto</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Nieta" ID="11" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Nieta</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Sobrino" ID="12" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Sobrino</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Sobrina" ID="13" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Sobrina</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Primo" ID="14" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Primo</ns2:Name>
	</ns2:GuestRelationType>
	<ns2:GuestRelationType Code="Prima" ID="15" ID_Context="protelIO" PrimaryInd="false" Visible="true">
		<ns2:Name Language="es_ES">Prima</ns2:Name>
	</ns2:GuestRelationType>
</ns2:GuestRelationTypes>


Due to legal requirements in Spain, we are expanding the GuestRelationTypeselement with the attributes for the relationship types.IPA-135324.08

IPA 24.02

Anker
IPA 24.02
IPA 24.02









OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

outbound

inbound

pAir

Customer | TPA_Extensions | px:ProfileInfoExtensions  | px:AccountingInfos


Codeblock
languagexml
collapsetrue
<Customer>
	<TPA_Extensions>
    ....
        <ProfileInfoExtensions>
            ....         
                <px:AccountingInfos PublicAdministrationInd="true" SplitPaymentInd="true"/>
		</ProfileInfoExtensions>
	</TPA_Extensions>
</Customer>


Due to legal requirements in Italy, we extend 
the AccountingInfos with the attributes 

@PublicAdministrationInd

@SplitPaymentInd


IPA-1346

IPA-1339

24.02

OTA_HotelResNotif

outbound

inbound


pAir

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:AccountingInfos


Codeblock
languagexml
collapsetrue
<Customer>
	<TPA_Extensions>
    ....
        <ProfileInfoExtensions>
            ....         
                <px:AccountingInfos PublicAdministrationInd="true" SplitPaymentInd="true"/>
		</ProfileInfoExtensions>
	</TPA_Extensions>
</Customer>


Due to legal requirements in Italy, we extend 
the AccountingInfos with the attributes 

@PublicAdministrationInd

@SplitPaymentInd


IPA-1346

IPA-1339

24.02
OTA_HotelStayInfoNotifRQoutboundpAir

OTA_HotelStayInfoNotifRQ | StayInfos | StayInfo | HotelReservation | ResGuests | ResGuest | Profiles | ProfileInfo | Profile| Customer | TPA_Extensions | px:ProfileInfoExtensions | px:AccountingInfos


Codeblock
languagexml
collapsetrue
<Customer>
	<TPA_Extensions>
    ....
        <ProfileInfoExtensions>
            ....         
                <px:AccountingInfos PublicAdministrationInd="true" SplitPaymentInd="true"/>
		</ProfileInfoExtensions>
	</TPA_Extensions>
</Customer>


Due to legal requirements in Italy, we extend 
the AccountingInfos with the attributes 

@PublicAdministrationInd

@SplitPaymentInd


IPA-133924.02
OTA_HotelAvailNotifRQ

outbound

inbound

pAir

OTA_HotelAvailNotifRQ |

@MessageContentCode

no changes in xml - new values for MessageContentCode

We use the value 4 for the restrictions on rate group level.

IPA-133424.02
OTA_ResRetrieveRS outboundpAir

OTA_ResRetrieveRS | ReservationsList | HotelReservation |
TPA_Extensions | px:ReservationGroupExtensions| px:GroupInfo| 

@GroupName
@GroupID
@PrimaryInd

ResGuests | ResGuest |  TPA_Extensions | px:ReservationGroupExtensions | px:GroupInfo| 

@GroupName
@GroupID
@PrimaryInd



Codeblock
collapsetrue
<TPA_Extensions>
  <px:ReservationGroupExtensions >
    <px:GroupInfo GroupName="Viaggi in Stile SpA -2022-01-17" GroupID="113" PrimaryInd="true" />
  </px:ReservationGroupExtensions >
</TPA_Extensions>


Due to Italian legal requirements (Police reports and Tourism Statistics), we're extending the schema to be able to export information about groups: group name, group ID and group leader.
On reservation level, PrimaryInd="true" will be shown for the reservation containing the group leader profile, all other reservations of this group will be shown with PrimaryInd="false".

On profile/resguest level,  PrimaryInd="true" will be shown for the group leader profile, all other profiles of this group will be shown with PrimaryInd="false".

IPA-104024.02
Affected MessageDirection from protelPMSPathExampleSummaryInternal referenceVersionTBA IDSOTA_HotelRatePlanNotifRQOutboundIDSRates / Rate / BaseByGuestAmts / BaseByGuestAmt
Codeblock
languagexml
collapsetrue
<Rates>
    <Rate RateTier="Active" Mon="true" Tue="true" Weds="true" Thur="true" Fri="true" Sat="true" Sun="true" Start="2021-11-23" End="2021-11-23" CurrencyCode="EUR" InvTypeCode="50">
        <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="90.48" AmountAfterTax="95.00" NumberOfGuests="1" AgeQualifyingCode="10"/>
        </BaseByGuestAmts>
    </Rate>

Extend the cnfiguration to enable sending both Amount Before and After tax per adult calculation

OTA_HotelRatePlanNotifRQ/ .. /BaseByGuestAmt1..nDescription
/@AmountBeforeTax0..1The total amount excluding all associated taxes (e.g., sales tax, VAT, GST or any associated tax). 
/@AmountAfterTax0..1The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax). 
IDS-331TBATBA PWSIO_SystemDataRSoutboundonPremImplement the SystemData Msg for onPremPWS-2222OTA_HotelInvCountNotifRQoutboundonPremno msg changeSend Delta inventory changesPWS-112OTA_HotelInvBlockNotifRSoutboundOnPrem

OTA_HotelInvBlockNotifRS | Errors | Error | @Type

OTA_HotelInvBlockNotifRS | Errors | Error | @RecordID

OTA_HotelInvBlockNotifRS | Errors | Error | @ShortText

OTA_HotelInvBlockNotifRS | Warnings | Warning | @Type

OTA_HotelInvBlockNotifRS | Warnings | Warning | @RecordID

OTA_HotelInvBlockNotifRS | Warnings | Warning | @ShortText

Add the Attribute @Type, @RecordID and @ShortText to the OTA_HotelAvailRS  PWS-489OTA_HotelAvailRS outboundOnPrem

OTA_HotelAvailRS  | Errors | Error | @Type

OTA_HotelAvailRS  | Errors | Error | @RecordID

OTA_HotelAvailRS  | Warnings | Warning | @Type

OTA_HotelAvailRS  | Warnings | Warning | @RecordID

Add the Attribute @Type and @RecordID to the OTA_HotelAvailRS  PWS-695HTNG_HotelCheckOutNotifRSoutboundOnPrem

HTNG_HotelCheckOutNotifRS | Errors | Error | @Type

HTNG_HotelCheckOutNotifRS | Warnings | Warning | @Type

Add the Attribute @Type to the HTNG_HotelCheckOutNotifRSPWS-1167HTNG_HotelCheckInNotifRSoutboundOnPrem

HTNG_HotelCheckInNotifRS | Errors | Error | @Type

HTNG_HotelCheckInNotifRS | Warnings | Warning | @Type

Add the Attribute @Type to the HTNG_HotelCheckInNotifRSPWS-1047HTNG_HotelFolioRSoutboundOnPremHTNG_HotelFolioRS | UniqueIDAdd the Element "UniqueID" to the HTNG_HotelFolioRSPWS-811OTA_HotelAvailNotifRS outboundOnPremOTA_HotelAvailNotifRS | UniqueIDAdd the Element "UniqueID" to the OTA_HotelAvailNotifRS PWS-587OTA_HotelAvailRQ inboundOnPremOTA_HotelAvailRQ | AvailRequestSegments | AvailRequestSegment | HotelSearchCriteria | Criterion | ProfilesExtend the OTA_HotelAvailRQ to allow as well "special profile rates" in the Result msgPWS-2382HTNG_HotelFolioNotifRQoutboundOnPremHTNG_HotelFolioNotifRQ | TPA_Extensions | FolioExtensions | FolioExtensionAdd the TPA_Extension to the HTNG_HotelFolioNotifRQPWS-949OTA_HotelAvailRQinboundOnPremOTA_HotelAvailRQ | AvailRequestSegments | AvailRequestSegment | HotelSearchCriteria | Criterion | RoomStayCandidates | RoomStayCandidatesExtend the AvailRQ to request multiple@RoomTypeCodePWS-1321

OTA_ResRetrieveRS

outboundOnPremOTA_ResRetrieveRS | SuccesCurrently if no result is found for a Reservation LookUp the PWS is sending a "Error + Warning" we will modifiy this to "Success+Warning"PWS-1323

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

inboundOnPrem

OTA_ProfileCreateRQ | Profile | Customer | CustLoyalty | SubAccountBalance | @Balance 

OTA_ProfileModifyRQ | ProfileModify |  | Customer | CustLoyalty | SubAccountBalance | @Balance 

Extend the inbound Profile Message to import inbound the value of the Balance of a Loyalty CardPWS-2388

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

inboundOnPrem

Vip codes

OTA_ProfileCreateRQ | Profile | TPA_Extensions | ProfileInfoExtensions | VipCodes | Code

OTA_ProfileModifyRQ | ProfileModify | TPA_Extensions | ProfileInfoExtensions | VipCodes | Code

Marketing codes
OTA_ProfileCreateRQ | Profile | TPA_Extensions | ProfileInfoExtensions | MarketingCodes | Code

OTA_ProfileModifyRQ | ProfileModify | TPA_Extensions | ProfileInfoExtensions | MarketingCodes | Code
Codeblock
languagexml
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
	<px:ProfileInfoExtensions>
		<px:PersonInfos>
			<px:VipCodes>
				<px:Code DefaultInd="true" DisplaySequence="0" ID="13" ID_Context="protelIO" Type="VIPCODE" Value="GOLD"/>
				<px:Code DefaultInd="false" DisplaySequence="0" ID="8" ID_Context="protelIO" Type="VIPCODE" Value="Gold Elite"/>
			</px:VipCodes>
			<px:MarketingCodes>
				<px:Code DefaultInd="true" DisplaySequence="0" ID="5" ID_Context="protelIO" Type="MARKETINGCODE" Value="Feriengast"/>
				<px:Code DefaultInd="false" DisplaySequence="0" ID="15" ID_Context="protelIO" Type="MARKETINGCODE" Value="Alusingen"/>
			</px:MarketingCodes>
		</px:PersonInfos>
	</px:ProfileInfoExtensions>
</TPA_Extensions>
Extend the inbound Profile Message to import inbound Vip and Marketing CodePWS-2373OTA_HotelInvBlockNotifRQoutboundOnPremOTA_HotelInvBlockNotifRQ | InvBlocks | Contacts | Contact | PersonNameAdd the private Profile to the outbound Block msgPWS-551HTNG_HotelFolioNotifRQOutboundOnPremHTNG_HotelFolioNotifRQ | TPA_Extensions | FolioExtensions | FolioExtensionAdd TPA_ExtensionPWS-949TBA IPAIDS 5.418OTA_HotelResNotifRQInboundIDSOTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGuests | Profiles |ProfileInfo | Profile | Customer | CustLoyalty
Codeblock
languagexml
collapsetrue
<CustLoyalty ProgramID="GHA" MembershipID="" RPH="3678116" PrimaryLoyaltyIndicator="false" AllianceLoyaltyLevelName="ALS" Remark="" LoyalLevel="GOLD" SignupDate="2017-06-21" EffectiveDate="2017-06-21" ExpireDate="2017-08-21" ShareMarketInd="No" ShareSyncInd="No">
	<SubAccountBalance Balance="0" />
</CustLoyalty>
The value of ProgramID for an incoming reservation should be stored in the proper field in the PMS as Program ID in the guest Loyalty Program window. 

The following xSetup is needed:
profiles - enable_loyalty_cards = 1

IDS-274IDS 5.418PWS 3.1 AnkerPWS 3.1PWS 3.1OTA_ReadRQinboundOnPremOTA_ReadRQ  | @ReturnListIndicator
Codeblock
languagexml
collapsetrue
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" ReturnListIndicator="true" CorrelationID="123456789">

Implement a WildCard Search

  • @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)
PWS-2400PWS-3.1.XOTA_HotelAvailNotifRSOutboundOnPremOTA_HotelAvailNotifRS | UniqueID
Codeblock
languagexml
collapsetrue
<?xml version='1.0' encoding='utf-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Header>
		<htnga:CorrelationID xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders">2d229478-326d-a6f8-e3a6-190e618596cd</htnga:CorrelationID>
		<Source xmlns="http://protel.io/soap" Product="protel On Premise SPE" ProductVersion="21.04000" Module="protel.WebServices" ModuleVersion="0.0.0.9153" Service="io.protel.onpremise"/>
	</env:Header>
	<env:Body>
		<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2021-02-01T09:59:11Z" Version="3.000" CorrelationID="2d229478-326d-a6f8-e3a6-190e618596cd">
			<UniqueID Type="10" ID="3153" ID_Context="protelIO"/>
			<Success/>
			<Warnings>
				<Warning ShortText="Unable to process" Code="450" Type="10">No restrictions found for deletion! No existing restriction with single definition for roomType 5!</Warning>
				<Warning ShortText="Unable to process" Code="450" Type="10">No restrictions found for deletion! No existing restriction with single definition for roomType 5!</Warning>
			</Warnings>
		</OTA_HotelAvailNotifRS>
	</env:Body>
</env:Envelope>
Adding UniqueID Element to the OTA_HotelAvailNotifRS outbound.PWS-587PWS-3.1.XIPA 21.06OTA_HotelStayInfoNotifRQOutboundOnPremOTA_HotelStayInfoNotifRQ | StayInfos | StayInfo | RevenueCategories | RevenueCategory | RevenueDetails | RevenueDetail | FolioIDs | FolioID
Codeblock
collapsetrue
<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-759PWS 3.0 AnkerPWS 3.0PWS 3.0OTA_HotelInvBlockNotifRQOutboundOnPremOTA_HotelInvBlockNotifRQ | InvBlocks | InvBlock | Contacts
Codeblock
languagexml
collapsetrue
...
<Contact ContactType="Private">
	<PersonName>
		<GivenName>Alireza</GivenName>
		<Surname>memarifard</Surname>
	</PersonName>
	<Telephone PhoneNumber="017777777" PhoneTechType="5" ShareMarketInd="No" PhoneLocationType="6" DefaultInd="true" />
	<Address Type="2" ShareMarketInd="Yes" DefaultInd="true">
		<AddressLine />
		<CityName />
		<PostalCode />
		<StateProv/>
		<CountryName Code="DE">Germany</CountryName>
	</Address>
	<Email EmailType="1" ShareMarketInd="No" DefaultInd="true">memaryfard@gmail.com</Email>
</Contact>      
....
Display the privat profile in the OTA_HotelInvBlockNotifRQ.PWS-551PWS 3.0.XHTNG_HotelFolioNotifRQ HTNG_HotelFolioRSOutboundOnPrem@FolioGroupingIDTODOAdd the new Attribute @FolioGroupingID with the values "Closed" and "Open".
"Closed" > if an invoice is closed and fiscalized
"Open" > if an Invoice ID assigned but not fiscalized
"Open" > if no invoice ID yet assigned to the invoicePWS-2499PWS 3.0.XOTA_ProfileCreateRQ
OTA_ProfileModifyRQOutboundOnPrem @ShareMarketInd no change in xmlAs protel is offering a third value for optin settings ("not asked"), where there is no value in OTA standard, we decided to change the behaviour of sending optin values as follows:
  • value set to "no" in protel
    → attribute @ShareMarketInd="No" will be send
  • value set to "yes" in protel 
    → attribute @ShareMarketInd="Yes" will be send
  • value set to "not asked" in protel 
    → attribute @ShareMarketInd will NOT be send
PWS-347PWS 3.0.XHTNG_HotelCheckOutNotifRSOutboundOnPrem

HTNG_HotelCheckOutNotifRS | TPA_Extensions | DocumentExtensions | DocumentData

Codeblock
languagexml
collapsetrue
<HTNG_HotelCheckOutNotifRS xmlns="http://htng.org/2014B" TimeStamp="2020-09-28T11:28:12.2502538Z" Version="3.000" CorrelationID="Test_AKO_6">
	<Success/>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		<px:DocumentExtensions>
			<px:DocumentData Type="Invoice" ID="419" ID_Context="protelIO">JVBERi0xLjYKJcOkw7zDtsOfCjIgM...</px:DocumentData>
We will provide in HTNG_HotelCheckOutNotifRS / DocumentData element the base64 encoded PDF invoice for non-fiscal ProtelsPWS-2435PWS 3.0.XOTA_HotelResNotifRQOutboundOnPremOTA_HotelResNotifRQ | HotelReservations | HotelReservation | TPA_Extensions | ReservationExtensions | FixedCharges
Codeblock
languagexml
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
	<px:ReservationExtensions>
		<px:ReservationDateInfo CreateDateTimeSyncInd="False" ModifyDateTimeSyncInd="True"/>
		<px:ReservationStatus Code="Conf" ID="1" ID_Context="protelIO" Name="gtd" RPH="625974"/>
		<px:FixedCharges>
			<px:FixedCharge Code="€ Halbpension" Recurrence="DaysOfWeek" Quantity="2" RequestedIndicator="true">
				<px:Price CurrencyCode="EUR" SingleAmountAfterTax="5.00"/>
				<px:UniqueID Type="FixedCharge" ID="49295" ID_Context="protelIO"/>
				<px:Item ItemID="339"/>
				<px:InvoiceText>€ Halbpension</px:InvoiceText>
			</px:FixedCharge>
		</px:FixedCharges>
	</px:ReservationExtensions>
</TPA_Extensions>
We will add the FixedCharges to the ReservationExtensions.PWS-2447PWS 3.0.XHTNG_ChargePostingRQ/RS
HTNG_HotelCheckInNotifRQ/RS
HTNG_HotelCheckOutNotifRQ/RS
HTNG_HotelFolioRQ/RS
IO_ResModifyNotifRQ/RS
IO_SystemStatusRQ/RS
OTA_HotelAvailNotifRQ/RS
OTA_HotelAvailRQ/RS
OTA_HotelInvBlockNotifRQ/RS
OTA_HotelRatePlanNotifRQ/RS
OTA_ProfileCreateRQ/RS
OTA_ProfileMergeRQ/RS
OTA_ProfileModifyRQ/RS
OTA_ReadRQ/OTA_ProfileReadRS
OTA_ReadRQ/OTA_ResRetrieveRSinboundOnPremHandling if configuration for RS message is missingno change in XML
  1. If the RS message of an inbound RQ message is not activated in the configuration, PWS will answer the RQ with an error in the RS
    <Error ShortText="RS not activated in IO configuration" Code="321" Type="1">RS not activated in IO configuration</Error> and the RQ is NOT processed.
  2. If the RS message of an inbound RQ message is missing in the configuration, the PWS will NOT send a RS message back and will NOT process the RQ. It will create an entry in the interface error dialog like "OTA_ProfileMergeRS | RS not found / configured in IO configuration."
PWS-2474PWS 3.0.XOTA_ProfileModifyRQInboundOnPremRQs with missing CustLoyalty elementsno change in XMLMissing not mandatory CustLoyalty attributes no longer result in errorsPWS-2357PWS 3.0.XIO_RatePackageNotifRQOutboundOnPremAction on PackageItem level implementedno change in XMLWe corrected the Action attribute on PackageItem level to display "CREATE", "UPDATE", DELETED" and "NONE" as expected.PWS-2236IO_ResModifyNotifRQInboundOnPrem

IO_ResModifyNotifRQ | Reservations | @HotelCode

IO_ResModifyNotifRQ | Reservations | @HotelID 

Codeblock
languagexml
collapsetrue
<p:IO_ResModifyNotifRQ xmlns:p="http://protel.io/soap" CorrelationID="PWS-2376-SR-1" TimeStamp="2018-12-29T15:20:35.985Z" Version="1.00">
	<p:Reservations HotelCode="3152">
		<p:Reservation>
			<p:UniqueID ID="345470" Type="14" ID_Context="Protel_IO"/>
			<p:Slices>
				<p:Slice From="2018-11-15T12:00:00+02:00" To="2018-11-18T12:00:00+02:00">
					<p:Room RoomType="GFamÜKat"/>
				</p:Slice>
			</p:Slices>
		</p:Reservation>
	</p:Reservations>
</p:IO_ResModifyNotifRQ>
Codeblock
languagexml
collapsetrue
<p:IO_ResModifyNotifRQ xmlns:p="http://protel.io/soap" CorrelationID="PWS-2376-SR-2" TimeStamp="2018-12-29T15:20:35.985Z" Version="1.00">
	<p:Reservations HotelID="3152">
		<p:Reservation>
			<p:UniqueID ID="345470" Type="14" ID_Context="Protel_IO"/>
			<p:Slices>
				<p:Slice From="2018-11-15T12:00:00+02:00" To="2018-11-18T12:00:00+02:00">
					<p:Room RoomType="Klassik"/>
				</p:Slice>
			</p:Slices>
		</p:Reservation>
	</p:Reservations>
</p:IO_ResModifyNotifRQ>
PWS is now able to receive either @HotelCode or @HotelID tp identify the hotel. This is now the same behaviour as for pAir.PWS-2376IO_ResModifyNotifRQInbound OnPremAdding private guest as attached profile implementedno change in XMLWhen sending only one <ProfileReference> element with @Action="CREATE", an additional guest will be added to the attached profiles. This will fail, if the new guest count would exceed the guest count of the reservation.PWS-2343PWS 3.0.XOTA_HotelResNotifRQOutboundOnPremHotelReservations | HotelReservation | Services | Service | @RequestedIndicator
Codeblock
languagexml
collapsetrue
<Services>
	<Service ID="29" ID_Context="protelIO" Type="16" ServiceInventoryCode="29" ServicePricingType="Per stay" Quantity="1" Inclusive="true" RequestedIndicator="false">
		<Price RateTimeUnit="Day" EffectiveDate="2019-05-21" ExpireDate="2019-05-24">
			<Total AmountBeforeTax="13.64" AmountAfterTax="15.00" CurrencyCode="EUR"/>
		</Price>
		<ServiceDetails>
			<TimeSpan Start="2019-05-21" End="2019-05-24"/>
			<Comments>
				<Comment>
					<Text TextFormat="PlainText">INCLUSIVE</Text>
				</Comment>
			</Comments>
			<Total AmountBeforeTax="13.64" AmountAfterTax="15.00" CurrencyCode="EUR"/>
		</ServiceDetails>
	</Service>
	<Service ID="26" ID_Context="protelIO" Type="16" ServiceInventoryCode="26" ServicePricingType="Per stay" Quantity="1" Inclusive="true" RequestedIndicator="true">
		<Price RateTimeUnit="Day" EffectiveDate="2019-05-21" ExpireDate="2019-05-24">
			<Total AmountBeforeTax="25.00" AmountAfterTax="30.00" CurrencyCode="EUR"/>
		</Price>
		<ServiceDetails>
			<TimeSpan Start="2019-05-21" End="2019-05-24"/>
			<Comments>
				<Comment>
					<Text TextFormat="PlainText">ADDONLY</Text>
				</Comment>
			</Comments>
			<Total AmountBeforeTax="25.00" AmountAfterTax="30.00" CurrencyCode="EUR"/>
		</ServiceDetails>
	</Service>
</Services>
For inclusive packages the RequestedIndicator will be "false", for booked bookable packages the RequestedIndicator will be "true".PWS-853PWS 3.0.XOTA_HotelResNotifRQOutboundOnPremHotelReservations | HotelReservation

We will adjust the TPA_Extensions according to the XSD:

  • TPA_Extensions/Nationality will be shifted to HotelReservations / HotelReservation / ResGuests / ResGuest / Profiles / ProfileInfo / Profile / Customer / CitizienCountryName
  • TPA_Extensions/Optinout : we are using ShareMarketInd attributes in PersonName, Telephone, Email, URL,...
  • TPA_Extensions/CustomerPreferences will be shifted to HotelReservations / HotelReservation / ResGuests / ResGuest / Profiles / ProfileInfo / Profile / PrefCollections
  • TPA_Extensions/RoomPreferences will be shifted to HotelReservations / HotelReservation / ResGuests / ResGuest / Profiles / ProfileInfo / Profile / PrefCollections
  • TPA_Extensions/Salutation will be shifted to HotelReservations / HotelReservation / ResGuests / ResGuest / Profiles / ProfileInfo / Profile / Customer / TPA_Extensions / ProfileInfoExtensions / Salutation
  • TPA_Extensions/Traces will be shifted to HotelReservations / HotelReservation / ResGuests / ResGuest / Profiles / ProfileInfo / Profile / Customer / TPA_Extensions / ProfileInfoExtensions / Traces
  • TPA_Extensions/SearchName will be deleted with PWS version 3.1.x

(Warnung) Until release of PWS 3.1 (planned for Q1/2021) we will send the information in both places. Beginning with PWS 3.1 we will send the information in the new places ONLY!

PWS-2372PWS 3.0.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

InboundOnPrem

OTA_ProfileCreateRQ | Profile | CompanyInfo | ContactPerson | PersonName | NamePrefix

OTA_ProfileModifyRQ | ProfileModify | CompanyInfo | ContactPerson | PersonName | NamePrefix

Codeblock
languagexml
collapsetrue
<OTA_ProfileCreateRQ>
	<Profile>
		<CompanyInfo>
			<CompanyName CompanyShortName="PROTEL Hotelsoftware GmbH" Department="">Protel</CompanyName>
			<ContactPerson>
				<PersonName>
					<NamePrefix>Herr</NamePrefix>
					<GivenName>Laureen</GivenName>
					<Surname>Jacke</Surname>
				</PersonName>

Add the Attribute "NamePrefix" to the Element ContactPerson | PersonName

We will implemented the value from  "NamePrefix"  it doesn't matter if is configured in the System Data or not

PWS-2117PWS 3.0.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

OutboundOnPrem

OTA_ProfileCreateRQ | Profile | CompanyInfo | ContactPerson | PersonName | NamePrefix

OTA_ProfileModifyRQ | ProfileModify | CompanyInfo | ContactPerson | PersonName | NamePrefix

Codeblock
languagexml
collapsetrue
<OTA_ProfileCreateRQ>
	<Profile>
		<CompanyInfo>
			<CompanyName CompanyShortName="PROTEL Hotelsoftware GmbH" Department="">Protel</CompanyName>
			<ContactPerson>
				<PersonName>
					<NamePrefix>Herr</NamePrefix>
					<GivenName>Laureen</GivenName>
					<Surname>Jacke</Surname>
				</PersonName>
Add the Attribute "NamePrefix" to the Element ContactPerson | PersonNamePWS-2495PWS 3.0.XOTA_HotelInvBlockNotifRQOutboundOnPremOTA_HotelInvBlockNotifRQ | InvBlocks | InvBlock | BlockDescriptions
Codeblock
languagexml
collapsetrue
<OTA_HotelInvBlockNotifRQ>
	<InvBlocks>
		<InvBlock>
			<BlockDescriptions>
				<BlockDescription CreateDateTime="2017-09-03T00:00:00">
					<Text TextFormat="HTML">1. Zeile<br/> 2. Zeile</Text>
				</BlockDescription>
				<BlockDescription Name="SourceOfBusiness">
					<Text TextFormat="PlainText">Desk reservation</Text>
				</BlockDescription>
			</BlockDescriptions>
Adjust the BlockDescription instead of "PlainText" we will display the Note now in the TextFormat="HTML" to display line break with <br/>PWS-2226PWS 3.0.XOTA_HotelInvBlockNotifRQInboundOnPremOTA_HotelInvBlockNotifRQ | InvBlocks | InvBlock | BlockDescriptions | BlockDescription | @CreateDateTime
Codeblock
languagexml
collapsetrue
<OTA_HotelInvBlockNotifRQ>
	<InvBlocks>
		<InvBlock>
			<BlockDescriptions>
				<BlockDescription CreateDateTime="2020-08-12T00:00:00">
					<Text TextFormat="PlainText">TestTest 333 </Text>
				</BlockDescription>
			</BlockDescriptions>
Add the Attribute  @CreateDateTime for inbound BlocksPWS-759PWS 3.0.XHTNG_HotelCheckInNotifRQInboundOnPremHTNG_HotelCheckInNotifRQ | POS | Source
Codeblock
languagexml
collapsetrue
<?xml version='1.0' encoding='utf-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Body>
		<htng:HTNG_HotelCheckInNotifRQ xmlns:htng="http://htng.org/2014B" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:px="http://protel.io/htng/extensions" CorrelationID="PWS_2127_01" EchoToken="PWS_2127_01" Version="1" Timestamp="2020-07-23T14:58:16Z">
			<POS>
				<Source TerminalID="Ariane">
					<RequestorID ID="3153" Type="10" ID_Context="protelIO"/>
					<BookingChannel Type="4" Primary="true"/>
				</Source>
			</POS>
			<htng:HotelReservations>
				<HotelReservation>
					<UniqueID ID="341562" ID_Context="protelIO" Type="14"/>
				</HotelReservation>
			</htng:HotelReservations>
		</htng:HTNG_HotelCheckInNotifRQ>
	</env:Body>
</env:Envelope>

The value of the TerminalID will be stored in the Reservation History in OnPrem to display the name of integration partner as the system which checked-in the reservation.

In case of empty or null value for this attribute, the defauld value will be set in OnPrem as "external IO system" and a warning send back with RS like following:

Codeblock
languagexml
<Warning ShortText="TerminalID empty or missing, using default value: external IO System." Code="321" Type="10">TerminalID empty or missing, using default value: external IO System.</Warning>
PWS-2127PWS 3.0.XHTNG_HotelChargePostingRQInboundonPremHTNG_HotelChargePostingRQ | Posting | Transaction | RevenueDetails
Codeblock
languagexml
collapsetrue
<RevenueDetails>
	<RevenueDetail Description="Cola Posting" SubTypeID="Revenue" Amount="25.00" CurrencyCode="EUR" PMSRevenueCode="5010">
		<ExtendedPrice Quantity="1" DecimalPlaces="2" AmountAfterTax="25.00"/>
		<Account ID_Context="protelIO" Type="21" ID="8326"/>
	</RevenueDetail>
	<RevenueDetail Description="Visa Posting" SubTypeID="Payment" Amount="-25.00" CurrencyCode="EUR" PMSRevenueCode="1">
		<ExtendedPrice Quantity="1" DecimalPlaces="2" AmountAfterTax="-25.00"/>
		<Account ID_Context="protelIO" Type="21" ID="8326"/>
	</RevenueDetail>
</RevenueDetails>
Possible to post Charges and Payments only against a Profile IDPWS-2284PWS 3.0.XOTA_HotelStayInfoNotifRQOutboundOnPremOTA_HotelStayInfoNotifRQ | StayInfos | StayInfo | RevenueCategories | RevenueCategory | RevenueDetails | RevenueDetail | FolioIDs | FolioID
Codeblock
languagexml
collapsetrue
<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> PWS-2430PWS 3.0.XIO_IdentifierRQOutboundOnPremroot Element
Codeblock
languagexml
collapsetrue
<IO_IdentifierRQ xmlns="http://protel.io/soap" EchoToken="A246B7B4-F4F3-4122-A91B-4265B61DC2D5" TimeStamp="2021-01-15T08:23:27Z" Version="4.000" CorrelationID="A246B7B4-F4F3-4122-A91B-4265B61DC2D5" IDType="GHA" PrimaryLangID="en">

Change the Version from "4" to "4.000"

Add the Attribute 

PrimaryLangID="en"

PWS-1120PWS 3.0.XOTA_HotelResNotifRQOutboundOnPremOTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | RoomRates | RoomRate 
Codeblock
languagexml
collapsetrue
...
<RoomRate RatePlanCode="SHARER" RatePlanCategory="HU" RatePlanID="75" RoomTypeCode="CBR" BookingCode="CST" RoomID="0215" NumberOfUnits="1">
...
BookingCode attribute in RoomRate element displays the initially booked room type.PWS-2385PWS 3.0.XHTNG_HotelFolioNotifRQOutboundOnPrem

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | UnitPrice | @CurrencyCode

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | UnitPrice | Taxes | Tax | @CurrencyCode

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | ExtendedPrice | @CurrencyCode

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | ExtendedPrice | Taxes | Tax | @CurrencyCode

Codeblock
languagexml
collapsetrue
<RevenueDetail ReferenceID="1328" TransactionDate="2019-05-26" Description="Weihnachtsmenü Kind" PMSRevenueCode="207" CurrencyCode="EUR" Amount="25.00" SubTypeID="RevenueForecast" RevenueCategoryCode="3">
	<FolioIDs xmlns="http://www.opentravel.org/OTA/2003/05">
		<FolioID>33797-0</FolioID>
	</FolioIDs>
	<UnitPrice AmountBeforeTax="22.73" AmountAfterTax="25.00" CurrencyCode="EUR" Type="31">
		<Taxes xmlns="http://www.opentravel.org/OTA/2003/05">
			<Tax Type="Inclusive" Percent="10.00" Amount="2.27" CurrencyCode="EUR" />
		</Taxes>
	</UnitPrice>
	<ExtendedPrice AmountBeforeTax="22.73" AmountAfterTax="25.00" CurrencyCode="EUR" Type="31" Quantity="1">
		<Taxes xmlns="http://www.opentravel.org/OTA/2003/05">
			<Tax Type="Inclusive" Percent="10.00" Amount="2.27" CurrencyCode="EUR" />
		</Taxes>
	</ExtendedPrice>
</RevenueDetail>

Add the Attribute 

  • CurrencyCode
PWS-1162PWS 3.0.XHTNG_HotelFolioNotifRQOutboundOnPrem

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueSummary | GrossAmount | @CurrencyCode

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueSummary | TaxItems | @CurrencyCodeHTNG_HotelFolioNotifRQ | Folios | Folio | RevenueSummary | BalanceDueAmount| @CurrencyCodeHTNG_HotelFolioNotifRQ | Folios | Folio | RevenueSummary | AmountReceived | @CurrencyCode
Codeblock
languagexml
collapsetrue
<HTNG_HotelFolioNotifRQ>
	<Folios>
		<Folio FolioID="33797-0" FolioType="Room" InvoiceID="0" GuestPayable="true">
			<RevenueSummary>
				<GrossAmount Amount="5582.00" CurrencyCode="EUR" xmlns="http://www.opentravel.org/OTA/2003/05" />
				<TaxItems Amount="534.73" CurrencyCode="EUR" xmlns="http://www.opentravel.org/OTA/2003/05" />
				<BalanceDueAmount Amount="0" CurrencyCode="EUR" xmlns="http://www.opentravel.org/OTA/2003/05" />
				<AmountReceived Amount="0" CurrencyCode="EUR" xmlns="http://www.opentravel.org/OTA/2003/05" />
			</RevenueSummary>

Add the Attribute 

  • CurrencyCode
PWS-942PWS 3.0.XHTNG_HotelFolioNotifRQOutboundOnPremHTNG_HotelFolioNotifRQ | Folios | Folio | BasicPropertyInfo | @HotelCodeContext 
Codeblock
languagexml
collapsetrue
<HTNG_HotelFolioNotifRQ>
	<Folios>
		<Folio FolioID="33797-0" FolioType="Room" InvoiceID="0" GuestPayable="true">
			<BasicPropertyInfo HotelCode="3236" HotelCodeContext="protelIO" HotelName="ART SKI - IN Hotel Hinterhag, A-5753 Saalbach" ChainCode="1" />

Add the Attribute 

  • HotelCodeContext="protelIO"
PWS-941PWS 3.0.XHTNG_HotelFolioNotifRQOutboundOnPrem

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | UnitPrice | @Type

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail |
Codeblock
languagexml
collapsetrue
<RevenueDetail ReferenceID="1328" TransactionDate="2019-05-27" Description="Weihnachtsmenü Kind" PMSRevenueCode="207" CurrencyCode="EUR" Amount="25.00" SubTypeID="RevenueForecast" RevenueCategoryCode="3">
	<FolioIDs xmlns="http://www.opentravel.org/OTA/2003/05">
		<FolioID>33797-0</FolioID>
	</FolioIDs>
	<UnitPrice AmountBeforeTax="22.73" AmountAfterTax="25.00" CurrencyCode="EUR" Type="31">
		<Taxes xmlns="http://www.opentravel.org/OTA/2003/05">
			<Tax Type="Inclusive" Percent="10.00" Amount="2.27" />
		</Taxes>
	</UnitPrice>
	<ExtendedPrice AmountBeforeTax="22.73" AmountAfterTax="25.00" CurrencyCode="EUR" Type="31" Quantity="1">
		<Taxes xmlns="http://www.opentravel.org/OTA/2003/05">
			<Tax Type="Inclusive" Percent="10.00" Amount="2.27" />
		</Taxes>
	</ExtendedPrice>
</RevenueDetail>

Add the Attribute

  • Type
PWS-945PWS 3.0.XHTNG_HotelFolioNotifRQOutboundOnPremHTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | @DecimalPlaces
Codeblock
languagexml
collapsetrue
<RevenueDetail ReferenceID="1328" TransactionDate="2019-05-27" Description="Weihnachtsmenü Kind" PMSRevenueCode="207" CurrencyCode="EUR" Amount="25.00" SubTypeID="RevenueForecast" RevenueCategoryCode="3">
	<FolioIDs xmlns="http://www.opentravel.org/OTA/2003/05">
		<FolioID>33797-0</FolioID>
	</FolioIDs>
	<UnitPrice AmountBeforeTax="22.73" AmountAfterTax="25.00" CurrencyCode="EUR" Type="31">
		<Taxes xmlns="http://www.opentravel.org/OTA/2003/05">
			<Tax Type="Inclusive" Percent="10.00" Amount="2.27" />
		</Taxes>
	</UnitPrice>
	<ExtendedPrice AmountBeforeTax="22.73" AmountAfterTax="25.00" CurrencyCode="EUR" Type="31" Quantity="1">
		<Taxes xmlns="http://www.opentravel.org/OTA/2003/05">
			<Tax Type="Inclusive" Percent="10.00" Amount="2.27" />
		</Taxes>
	</ExtendedPrice>
</RevenueDetail>

Remove the Attribute

  • DecimalPlaces 
PWS-1017PWS 3.0.XHTNG_HotelFolioNotifRQOutboundOnPremroot Element
Codeblock
languagexml
collapsetrue
<HTNG_HotelFolioNotifRQ EchoToken="cb364dd1-5d3b-4c1b-91d6-f8bf9f00e911" TimeStamp="2020-12-11T13:46:12Z" Version="1.002" CorrelationID="cb364dd1-5d3b-4c1b-91d6-f8bf9f00e911" PrimaryLangID="en" xmlns="http://htng.org/2014B">

Fix the Value of the following Attributes

  • Version="1.002"
  • PrimaryLangID="de"
PWS-1119PWS 3.0.XOTA_HotelInvCountNotifRQOutboundOnPremOTA_HotelInvCountNotifRQ | UniqueID
Codeblock
languagexml
collapsetrue
<OTA_HotelInvCountNotifRQ>
	<UniqueID Type="10" ID="3236" ID_Context="protelIO" />

Add the UniqueID Element

  • OTA_HotelInvCountNotifRQ | UniqueID | @ID="HotelID"
  • OTA_HotelInvCountNotifRQ | UniqueID | @ID_Context="protelIO"
  • OTA_HotelInvCountNotifRQ | UniqueID | @Type="10"
PWS-787PWS 3.0.XOTA_HotelInvCountNotifRQOutboundOnPremroot Element
Codeblock
languagexml
collapsetrue
<OTA_HotelInvCountNotifRQ EchoToken="10bf9470-b920-4dd9-9045-8f8ca8176d31" TimeStamp="2020-12-11T14:16:49Z" Version="2.000" CorrelationID="10bf9470-b920-4dd9-9045-8f8ca8176d31" PrimaryLangID="en" xmlns="http://www.opentravel.org/OTA/2003/05">

Fix the Value of the following Attributes

  • Version="2.000"
  • PrimaryLangID="de"
PWS-786PWS 3.0.XOTA_ReadRQOutboundOnPremRoot Element
Codeblock
languagexml
collapsetrue
...
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="0EF52770-2E30-46FA-AAF5-499E5F5EB98F" TimeStamp="2020-12-09T14:27:17Z" Version="4.000" CorrelationID="0EF52770-2E30-46FA-AAF5-499E5F5EB98F" PrimaryLangID="en" MaxResponses="30">
...

Fix the Value of the following Attributes

  • Version="4.000"
  • PrimaryLangID="en"
PWS-1116PWS 3.0OTA_HotelStayInfoNotifRQOutboundOnPremOTA_HotelStayInfoNotifRQ | StayInfos
Codeblock
languagexml
collapsetrue
...
<StayInfos ChainCode="HC1" HotelCode="3153" HotelName="protel Front Office Demo, 44269 Dortmund" HotelCodeContext="protelIO">
...

Add the Attribute

  • HotelCodeContext="protelIO"
PWS-630PWS 3.0.XOTA_HotelStayInfoNotifRQOutboundOnPremRoot Element
Codeblock
languagexml
collapsetrue
<OTA_HotelStayInfoNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="36288982-2783-451b-8fa4-64a56981290f" TimeStamp="2020-12-09T13:41:07Z" Version="5.000" CorrelationID="36288982-2783-451b-8fa4-64a56981290f" PrimaryLangID="en">
...

Fix the Value of the following Attributes

  • Version="5.000"
  • PrimaryLangID="en"
PWS-627PWS 3.0.XOTA_HotelStatsNotifRQOutboundOnPremOTA_HotelStatsNotifRQ | UniqueID
Codeblock
languagexml
collapsetrue
<OTA_HotelStatsNotifRQ EchoToken="a242fdc2-3c4f-4baa-ab07-c3681078f8c4" TimeStamp="2020-12-09T11:12:59Z" Version="3.000" CorrelationID="a242fdc2-3c4f-4baa-ab07-c3681078f8c4" PrimaryLangID="en" xmlns="http://www.opentravel.org/OTA/2003/05">
      <POS>
        <Source>
          <RequestorID Type="10" ID="3153" ID_Context="protelIO" />
          <BookingChannel Type="4" Primary="true" />
          <TPA_Extensions>
            <px:POSExtensions xmlns:px="http://protel.io/htng/extensions">
              <px:HotelInfo FiscalDate="2017-06-24" />
            </px:POSExtensions>
          </TPA_Extensions>
        </Source>
      </POS>
      <UniqueID Type="10" ID="3153" ID_Context="protelIO" />
      ...

Add the UniqueID Element

  • OTA_HotelInvCountNotifRQ | UniqueID | @ID="HotelID"
  • OTA_HotelInvCountNotifRQ | UniqueID | @ID_Context="protelIO"
  • OTA_HotelInvCountNotifRQ | UniqueID | @Type="10"
PWS-901PWS 3.0OTA_HotelStatsNotifRQOutboundOnPremRoot Element
Codeblock
languagexml
collapsetrue
<OTA_HotelStatsNotifRQ EchoToken="a242fdc2-3c4f-4baa-ab07-c3681078f8c4" TimeStamp="2020-12-09T11:12:59Z" Version="3.000" CorrelationID="a242fdc2-3c4f-4baa-ab07-c3681078f8c4" PrimaryLangID="en" xmlns="http://www.opentravel.org/OTA/2003/05">

Fix the Value of the following Attributes

  • Version="3.000"
  • PrimaryLangID="de"
PWS-1147PWS 3.0OTA_HotelStatsNotifRQOutboundOnPremOTA_HotelStatsNotifRQ | Statistics | Statistic
Codeblock
languagexml
collapsetrue
<Statistic ChainCode="HC1" HotelCode="3153" HotelName="protel Front Office Demo, 44269 Dortmund" FiscalDate="2017-06-23" ReportCode="HTNG_PastDailySegmentRoomTypeStatistics_v1">

Add the Attribute 

  • HotelName
PWS-1148PWS 3.0IO_StatsNotifRQ OutboundOnPrem

IO_StatsNotifRQ | Statistics | Statistic | StatisticApplicationSets | RevenueCategorySummaries RevenueCategorySummary | @RevenueCategoryCode

Codeblock
languagexml
collapsetrue
<StatisticApplicationSet End="2018-02-08" Start="2018-02-08">
	<StatisticCodes/>
	<RevenueCategorySummaries>
		<RevenueCategorySummary Amount="104.20" CurrencyCode="EUR" RevenueCategoryCode="3"/>
		<RevenueCategorySummary Amount="124.00" CurrencyCode="EUR" RevenueCategoryCode="123"/>
		<RevenueCategorySummary Amount="0.00" CurrencyCode="EUR" RevenueCategoryCode="6"/>
		<RevenueCategorySummary Amount="0.00" CurrencyCode="EUR" RevenueCategoryCode="126"/>
		<RevenueCategorySummary Amount="10000.00" CurrencyCode="EUR" RevenueCategoryCode="9"/>
		<RevenueCategorySummary Amount="10700.00" CurrencyCode="EUR" RevenueCategoryCode="129"/>
		<RevenueCategorySummary Amount="10104.20" CurrencyCode="EUR" RevenueCategoryCode="17"/>
		<RevenueCategorySummary Amount="10824.00" CurrencyCode="EUR" RevenueCategoryCode="1217"/>
	</RevenueCategorySummaries>
</StatisticApplicationSet>

Extend the IO_StatsNotifRQ, add the @RevenueCategoryCode

  • 123 = Food & Beverage (gross)
  • 126 =  Other Revenue (gross)
  • 129 = Room Revenue (gross)
  • 1217 = Total Revenue (gross)
PWS-1163PWS 3.0OTA_ReadRQInboundOnPremOTA_ReadRQ | ReadRequests | ProfileReadRequest | Company | Address
Codeblock
languagexml
collapsetrue
<?xml version='1.0' encoding='utf-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Body>
		<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" CorrelationID="2602_PWS-2188_6" Version="0" EchoToken="PWS-2188_6" MaxResponses="10">
			<POS>
				<Source>
					<RequestorID ID="2602" Type="10" ID_Context="protelIO"/>
				</Source>
			</POS>
			<ReadRequests>
				<ProfileReadRequest ProfileTypeCode="3">
					<Company>
						<CompanyName>protel</CompanyName>
						<Address>
							<AddressLine>Europaplatz 8</AddressLine>
							<CityName>Dortmund</CityName>
							<PostalCode>44236</PostalCode>
							<CountryName Code="DE">Deutschland</CountryName>
						</Address>
					</Company>
				</ProfileReadRequest>
			</ReadRequests>
		</OTA_ReadRQ>
	</env:Body>
</env:Envelope>
Profile lookup by OTA_ReadRQ can be search be combination of Company/TA/Source/Group profile name and PostalCode/CityName/CountryName.PWS-2358PWS 3.0IPA 21.04 AnkerIPA 21.04IPA 21.04OTA_HotelResNotifRQInboundpAirno changes in the XMLModifiying AgeQulificationCode and change the number of guests with inbound reservation modify.IPA-77221.04IO_InvoiceFiscalizeRQOutbound pAirIO_InvoiceFiscalizeRQAdded the DeliveryDate (legal requirement Hungary)IPA-79521.04HTNG_ChargePostingRQInboundpAirno changes in the XMLFixing the issue with Payment posted to a profile ID is failing in case of using a payment method flagged as account receivableIPA-77721.04HTNG_HotelRoomStatusUpdateNotifRQOutoundpAirno changes in the XMLFixing the incorrect RoomStatus sent out by the pAir for different status.IPA-76521.04OTA_HotelResNotifRQ OutboundpAirOTA_HotelResNotifRQ | HotelReservations | HotelReservation | TPA_Extensions | ReservationExtensions | FixedCharges
Codeblock
languagexml
collapsetrue
<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.04IO_SystemDataRSOutboundpAirIO_SystemDataRS
Codeblock
languagexml
collapsetrue
<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>
Codeblock
languagexml
collapsetrue
<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>
Codeblock
languagexml
collapsetrue
<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.04IO_SystemDataRQInboundpAirIO_SystemDataRQ | Request
Codeblock
languagexml
collapsetrue
<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.04IPA 21.02 AnkerIPA 21.02IPA 21.02OTA_HotelResNotifRQOutboundpAirno changes in the XML

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

IPA-78921.02IO_SysAdministrationCompleteNotifRQOutboundpAirIO_SysAdministrationCompleteNotifRQ | Changes | Change | Value
Codeblock
languagexml
collapsetrue
<?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.02OTA_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-761OTA_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-762IPA 20.51HTNG_HotelCheckInNotifRQInboundpAirHTNG_HotelCheckInNotifRQ | Room
Codeblock
languagexml
collapsetrue
<?xml version='1.0' encoding='utf-8'?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Body>
		<htng:HTNG_HotelCheckInNotifRQ xmlns:htng="http://htng.org/2014B" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:px="http://protel.io/htng/extensions" CorrelationID="IPA_755_18" EchoToken="IPA_755_18" Version="1" Timestamp="2020-07-23T14:58:16Z">
			<POS>
				<Source>
					<RequestorID ID="2787" Type="10" ID_Context="protelIO"/>
					<BookingChannel Type="4" Primary="true"/>
				</Source>
			</POS>
			<htng:Room RoomID=""/>
			<htng:HotelReservations>
				<HotelReservation>
					<UniqueID ID="1740" ID_Context="protelIO" Type="14"/>
				</HotelReservation>
			</htng:HotelReservations>
		</htng:HTNG_HotelCheckInNotifRQ>
	</env:Body>
</env:Envelope>
pAir will CI the non-room assigned reservation which has no room number to the first available clean or checked room.IPA-75520.51

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ 

outboundpAirOTA_ProfileCreateRQ | Profile | Customer | Address | @ShareMarketInd
Codeblock
languagexml
collapsetrue
<OTA_ProfileModifyRQ>
	<UniqueID ID="3846" ID_Context="protelIO" Type="1"/>
	<UniqueID ID="2983" ID_Context="protelIO" Type="10"/>
	<ProfileModify CreateDateTime="2020-09-18T09:55:44Z" CreatorID="lj" LastModifierID="lj" LastModifyDateTime="2020-12-11T15:59:35Z" ProfileType="1" RPH="3846" ShareAllOptOutInd="Yes" StatusCode="4">
		<Customer BirthDate="1989-08-12" Gender="Unknown" Language="de">
			<PersonName>
				<NamePrefix>Familie</NamePrefix>
				<GivenName>Test</GivenName>
				<Surname>Test</Surname>
			</PersonName>
			<Telephone DefaultInd="true" FormattedInd="false" PhoneNumber="0231-915930" PhoneTechType="1"/>
			<Email DefaultInd="true" EmailType="1">test@protel.net</Email>
			<Address DefaultInd="true" FormattedInd="false" Type="1">
				<AddressLine>Europaplatz 8</AddressLine>
				<CityName>Dortmund</CityName>
				<PostalCode>44269</PostalCode>
				<StateProv StateCode="NW">Nordrhein-Westfalen</StateProv>
				<CountryName Code="DE">Deutschland</CountryName>
			</Address>
Omit the @ShareMarketInd Attribute, because currently we cannot save it correctly in pAirIPA-75620.51OTA_ReadRQInboundpAirOTA_ReadRQ | ReadRequests | ProfileReadRequest | Company
Codeblock
languagexml
collapsetrue
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
	<env:Body>
		<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" CorrelationID="2602_PWS-2188_6" Version="0" EchoToken="PWS-2188_6" MaxResponses="10">
			<POS>
				<Source>
					<RequestorID ID="2602" Type="10" ID_Context="protelIO"/>
				</Source>
			</POS>
			<ReadRequests>
				<ProfileReadRequest ProfileTypeCode="3">
					<Company>
						<CompanyName>protel</CompanyName>
						<Address>
							<AddressLine>Europaplatz 8</AddressLine>
							<CityName>Dortmund</CityName>
							<PostalCode>44236</PostalCode>
						</Address>
					</Company>
				</ProfileReadRequest>
			</ReadRequests>
		</OTA_ReadRQ>
	</env:Body>
</env:Envelope>

Extend the Profile LookUp for Company/TA/Source/Group Profiles

  • Profile Search by CompanyName & ZIP
  • Profile Search by CompanyName & City
  • Profile Search by CompanyName & Country
IPA-73520.51IPA 20.49  AnkerIPA 20.49IPA 20.49

OTA_ReadRQ

InboundpAirOTA_ReadRQ  | ReturnListIndicator
Codeblock
languagexml
collapsetrue
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" CorrelationID="2986_IO_CorrId_22_129" ReturnListIndicator="true">
			<POS>
				<Source>
					<RequestorID ID="2986" Type="10" ID_Context="protelIO"/>
				</Source>
			</POS>

If the Attribute @ReturnListIndicator is set to FALSE then all the search filters will be applied as "like" search criteria.

If the Attribute @ReturnListIndicator is set to TRUE then all search criteria are checked

If the Attribute @ReturnListIndicator is missing then all search criteria are checked

IPA-74420.49OTA_HotelResNotifRQOutboundpairOTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | RatePlans | RatePlan
Codeblock
languagexml
collapsetrue
<OTA_HotelResNotifRQ>
	<HotelReservations>
		<HotelReservation CreateDateTime="2020-11-26T10:45:07+01:00" CreatorID="laureen.jacke@protel.net" LastModifierID="lj" LastModifyDateTime="2020-11-30T10:59:10+01:00" ResStatus="Reserved">
			<UniqueID ID="3814" ID_Context="protelIO" Type="14"/>
			<RoomStays>
				<RoomStay MarketCode="DU" SourceOfBusiness="Fa">
					<RatePlans>
						<RatePlan EffectiveDate="2020-09-22" ExpireDate="2020-09-23" MarketCode="DU" PriceViewableInd="true" RatePlanCode="STA1" RatePlanID="5">
							<Guarantee GuaranteeCode="GAR">
								<GuaranteeDescription Name="Name">
									<Text TextFormat="PlainText">Garantiert</Text>
								</GuaranteeDescription>
							</Guarantee>
							<CancelPenalties>
								<CancelPenalty PolicyCode="STD">
									<PenaltyDescription Name="Name">
										<Text TextFormat="PlainText">Standard</Text>
									</PenaltyDescription>
									<PenaltyDescription Name="Description">
										<Text TextFormat="PlainText">Bis zu 2 Tage vor der Anreise können Sie kostenfrei stornieren. Sie zahlen im Falle einer Stornierung in den 2 Tagen vor der Anreise einen Betrag in Höhe des Gesamtpreises. Keine Vorauszahlung erforderlich.</Text>
									</PenaltyDescription>
								</CancelPenalty>
							</CancelPenalties>
							<RatePlanInclusions TaxInclusive="true"/>
						</RatePlan>
						<RatePlan EffectiveDate="2020-09-23" ExpireDate="2020-09-24" MarketCode="Individual" PriceViewableInd="true" RatePlanCode="Laureen" RatePlanID="253">
							<CancelPenalties/>
							<RatePlanInclusions TaxInclusive="true"/>
						</RatePlan>
						<RatePlan EffectiveDate="2020-09-24" ExpireDate="2020-09-25" MarketCode="DU" PriceViewableInd="true" RatePlanCode="STA1" RatePlanID="5">
							<Guarantee GuaranteeCode="GAR">
								<GuaranteeDescription Name="Name">
									<Text TextFormat="PlainText">Garantiert</Text>
								</GuaranteeDescription>
							</Guarantee>
							<CancelPenalties>
								<CancelPenalty PolicyCode="STD">
									<PenaltyDescription Name="Name">
										<Text TextFormat="PlainText">Standard</Text>
									</PenaltyDescription>
									<PenaltyDescription Name="Description">
										<Text TextFormat="PlainText">Bis zu 2 Tage vor der Anreise können Sie kostenfrei stornieren. Sie zahlen im Falle einer Stornierung in den 2 Tagen vor der Anreise einen Betrag in Höhe des Gesamtpreises. Keine Vorauszahlung erforderlich.</Text>
									</PenaltyDescription>
								</CancelPenalty>
							</CancelPenalties>
							<RatePlanInclusions TaxInclusive="true"/>
						</RatePlan>
The RatePlan is displayed now per day, to display the correct RateCode and MarketCode per dayIPA-74320.49

HTNG_HotelFolioNotifRQ

HTNG_FolioNotifRS

Outbound

Inbound

pAir

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | SubTypeID="Batch"/"BatchForecast" | UnitPrice | Taxes

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail | SubTypeID="Batch"/"BatchForecast" | ExtendedPrice | Taxes

Codeblock
languagexml
collapsetrue
<htng:RevenueDetails>
	<htng:RevenueDetail Amount="61.20" CurrencyCode="EUR" Description="Logis" ReferenceID="0" SubTypeID="Batch" TransactionDate="2020-09-18">
		<FolioIDs>
			<FolioID>393927</FolioID>
		</FolioIDs>
		<htng:UnitPrice AmountAfterTax="61.20" AmountBeforeTax="0.00" CurrencyCode="EUR" Type="31"/>
		<htng:ExtendedPrice AmountAfterTax="61.20" AmountBeforeTax="0.00" CurrencyCode="EUR" Quantity="1" Type="31"/>

For the SubType ="Batch"/"BatchForecast" will the Elements

  • UnitPrice | Taxes
  • ExtendedPrice | Taxes

will no longer be part of the message, because it is not possible to calculate it correctly

IPA-74620.49OTA_HotelAvailNotifRSOutboundpAirOTA_HotelAvailNotifRS | Warnings | Warning
Codeblock
languagexml
collapsetrue
<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:p="http://protel.io/soap" xmlns:px="http://protel.io/htng/extensions" xmlns:ns5="http://www.w3.org/2011/03/ws-evt" xmlns:htng="http://htng.org/2014B" xmlns:ns4="http://www.w3.org/2005/08/addressing" CorrelationID="IPA-734-01" EchoToken="IPA-734-01" TimeStamp="2020-11-20T14:17:13Z" Version="2.000">
	<Success/>
	<Warnings>
		<Warning Code="320" ShortText="RateGroups not found by RatePlanCategory code BAR2" Type="12">RateGroups not found by RatePlanCategory code BAR2</Warning>
		<Warning Code="450" ShortText="No matches for 2 AvailStatusMessage elements" Type="13">0</Warning>
	</Warnings>
	<UniqueID ID="2585" ID_Context="protelIO" Type="10"/>
</OTA_HotelAvailNotifRS>
The OTA_HotelAvailNotifRS displaying the Code="320" and Type="12" in case of Warning.IPA-73420.49IPA 20.47 AnkerIPA 20.47IPA 20.47

OTA_HotelResNotifRQ

IO_StatsNotifRQ

HTNG_HotelFolioNotifRQ

OTA_StayInfoNotifRQ

OutboundpAir

OTA_HotelResNotifRQ |  HotelReservations | HotelReservation | RoomStays | RoomStay | RoomRates | RoomRate | Rates | Rate | TPA_Extensions | RateAmountExtensions | RateAmount | @RevenueCategoryCode

OTA_HotelResNotifRQ |  HotelReservations | HotelReservation | RoomStays | TPA_Extensions | RateAmountExtensions | RateAmount | @RevenueCategoryCode

IO_StatsNotifRQ | Statistics | Statistic | StatisticApplicationSets | StatisticApplicationSet | RevenueCategorySummaries | RevenueCategorySummary | @RevenueCategoryCode

HTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetail | @RevenueCategoryCode

OTA_HotelStayInfoNotifRQ | StayInfos | StayInfo | RevenueCategories | RevenueCategory | @RevenueCategoryCode

Codeblock
languagexml
collapsetrue
<StatisticApplicationSet Start="2020-09-17" End="2020-09-17">
	<RevenueCategorySummaries>
		<RevenueCategorySummary RevenueCategoryCode="3" Amount="0.00" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="123" Amount="0.00" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="6" Amount="0.00" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="126" Amount="0.00" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="9" Amount="361.72" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="129" Amount="379.81" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="0" Amount="18.09" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="120" Amount="18.99" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="17" Amount="379.81" CurrencyCode="EUR"/>
		<RevenueCategorySummary RevenueCategoryCode="1217" Amount="398.80" CurrencyCode="EUR"/>
	</RevenueCategorySummaries>
</StatisticApplicationSet>
The messages will be extend with the @RevenueCategoryCode = 0 / @RevenueCategoryCode = 120 to display the Revenue for Article which are marked in pAir as  "non revenue item" IPA-73620.47OTA_HotelResNotifRQInboundpAirno changes in the XMLThe cancelled reservation, now can be reinstated by sending an inbound reservation with following attributes:
OTA_HotelResNotifRQ>ResStatus="Modify"
and
OTA_HotelResNotifRQ / HotelReservations / HotelReservation >ResStatus="Reserved"IPA-71720.47IO_ResModifyNotifRQInboundpAirIO_ResModifyNotifRQ | Reservations | Reservation | InvoiceItemRoutings | InvoiceItemRouting
Codeblock
languagexml
collapsetrue
<p:IO_ResModifyNotifRQ xmlns:p="http://protel.io/soap" CorrelationID="IPA-721-SR6" TimeStamp="2020-05-18T14:00:00.000Z" Version="1.00">
	<p:Reservations HotelCode="2575">
		<p:Reservation>
			<p:UniqueID Type="14" ID="17569" ID_Context="protelIO"/>
			<p:InvoiceItemRoutings>
				<p:InvoiceItemRouting Action="CREATE" Name="RI_Template" Type="InvoiceRoutingTemplate" ID="" ID_Context="protelIO"/>
			</p:InvoiceItemRoutings>
		</p:Reservation>
	</p:Reservations>
</p:IO_ResModifyNotifRQ>
We will add the use case to create a routing instruction using a predefined template. For this use case the type needs to be "InvoiceRoutingTemplate" instead of "PaymentInstruction".IPA-72120.47OTA_HotelResNotifRQOutboundpAirOTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | RoomRates | RoomRate
Codeblock
languagexml
collapsetrue
<RoomRate BookingCode="JST" RoomTypeCode="JST" NumberOfUnits="1" RoomID="10-2L" EffectiveDate="2020-08-09" ExpireDate="2020-08-10" RatePlanCode="Alireza" RatePlanID="28" RatePlanCategory="FLEX">
	<Rates>
		<Rate RateTimeUnit="Day" UnitMultiplier="1" AlternateCurrencyInd="false" EffectiveDate="2020-08-09" ExpireDate="2020-08-10">
			<Base AmountBeforeTax="90.91" AmountAfterTax="100.00" CurrencyCode="EUR"/>
			<Total AmountBeforeTax="90.91" AmountAfterTax="100.00" CurrencyCode="EUR"/>
			<TPA_Extensions>
				<px:RateAmountExtensions AlternateCurrencyInd="false" End="2020-08-09" Start="2020-08-09">
					<px:RateAmount AmountAfterTax="100.00" AmountBeforeTax="90.91" CurrencyCode="EUR" RevenueCategoryCode="17"/>
					<px:RateAmount AmountAfterTax="100.00" AmountBeforeTax="90.91" CurrencyCode="EUR" RevenueCategoryCode="9"/>
				</px:RateAmountExtensions>
				<px:FixedChargesAmountsExtensions AlternateCurrencyInd="false" End="2020-08-09" Start="2020-08-09">
					<px:RateAmount AmountAfterTax="100.00" AmountBeforeTax="90.91" CurrencyCode="EUR" RevenueCategoryCode="17"/>
					<px:RateAmount AmountAfterTax="100.00" AmountBeforeTax="90.91" CurrencyCode="EUR" RevenueCategoryCode="9"/>
				</px:FixedChargesAmountsExtensions>
			</TPA_Extensions>
		</Rate>
	</Rates>
	<RoomRateDescription Name="MarketCode">
		<Text TextFormat="PlainText">COU</Text>
	</RoomRateDescription>
	<RoomRateDescription Name="SourceOfBusiness">
		<Text TextFormat="PlainText">WEB</Text>
	</RoomRateDescription>
	<GuestCounts>
		<GuestCount AgeQualifyingCode="10" Count="1"/>
	</GuestCounts>
</RoomRate>
The GuestCounts element in RoomRate level is displaying for the canceled reservations as well.IPA-72820.47IO_ResModifyNotifRQInboundpAirno changes in the XMLWe will add a new use case to add additional arriving guests up to the guest count of the reservation IPA-73220.47OTA_HotelInvBlockNotifRQInboundpAirOTA_HotelInvBlockNotifRQ | TPA_Extensions | ReservationExtensions | ReservationStatus
Codeblock
languagexml
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
	<px:ReservationExtensions>
		<px:ReservationStatus Code="Conf" ID="1" ID_Context="protelIO" Name="FIX- inkl.ANZA" RPH="33523"/>
	</px:ReservationExtensions>
</TPA_Extensions>
Extend the TPA_Extentions for the Reservation Status for inbound message.IPA-73020.47OTA_HotelInvBlockNotifRQOutboundpAirOTA_HotelInvBlockNotifRQ | TPA_Extensions | ReservationExtensions | ReservationStatus
Codeblock
languagexml
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
	<px:ReservationExtensions>
		<px:ReservationStatus Code="Conf" ID="1" ID_Context="protelIO" Name="FIX- inkl.ANZA" RPH="33523"/>
	</px:ReservationExtensions>
</TPA_Extensions>
Extend the TPA_Extentions for the Reservation StatusIPA-69920.47IPA 20.45 AnkerIPA 20.45IPA 20.45IO_SystemDataRQOutboundpAirImplementation of the new message IO_SystemDataRQIPA-68020.45HTNG_HotelFolioNotifRQ
HTNG_HotelFolioRSOutboundpAirHTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail 
HTNG_HotelFolioRS | Folios | Folio | RevenueDetails | RevenueDetail
Codeblock
languagexml
collapsetrue
<htng:RevenueDetails>
	<htng:RevenueDetail SubTypeID="Revenue" RevenueCategoryCode="9" ReferenceID="66" TransactionDate="2019-10-10" Description="City Tax" PMSRevenueCode="3405" Amount="2.50" CurrencyCode="CHF">
		<FolioIDs>
			<FolioID>468056</FolioID>
		</FolioIDs>
		<htng:UnitPrice AmountBeforeTax="2.41" AmountAfterTax="2.50" Type="31" CurrencyCode="CHF">
			<Taxes CurrencyCode="CHF">
				<Tax Type="Inclusive" Percent="3.70" Amount="0.09" CurrencyCode="CHF"/>
			</Taxes>
		</htng:UnitPrice>
		<htng:ExtendedPrice Quantity="1" AmountBeforeTax="2.41" AmountAfterTax="2.50" Type="31" CurrencyCode="CHF">
			<Taxes CurrencyCode="CHF">
				<Tax Type="Inclusive" Percent="3.70" Amount="0.09" CurrencyCode="CHF"/>
			</Taxes>
		</htng:ExtendedPrice>
		<htng:Account Type="14" ID_Context="protelIO" ID="15702"/>
	</htng:RevenueDetail>

The Attribute @Percent  is not long rounded up

IPA-73720.46HTNG_HotelCheckOutNotifRSInboundpAirHTNG_HotelCheckOutNotifRS | TPA_Extensions | DocumentExtensions | DocumentExtensions
Codeblock
languagexml
collapsetrue
<htng:HTNG_HotelCheckOutNotifRS xmlns:htng="http://htng.org/2014B" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:p="http://protel.io/soap" xmlns:px="http://protel.io/htng/extensions" xmlns:ns5="http://www.w3.org/2011/03/ws-evt" xmlns:ns4="http://www.w3.org/2005/08/addressing" CorrelationID="Test_BRA_779" PrimaryLangID="de" TimeStamp="2020-11-06T09:42:30Z" Version="1">
	<htng:Success/>
	<TPA_Extensions>
		<px:DocumentExtensions>
			<px:DocumentData ID="5896" ID_Context="protelIO" Type="Invoice">j4KPDM2RDY5MEEyNjZCQzNBOEI1MTNFQkMxMjQ0NEZDRUU2Pg==</px:DocumentData>
		</px:DocumentExtensions>
	</TPA_Extensions>
</htng:HTNG_HotelCheckOutNotifRS>

Added the Element px:DocumentData → needs to be decoded by the Integration with the help of base64.

IPA-71420.46OTA_HotelResNotifRQInboundpAirOTA_HotelResNotifRS | Errors | Error
Codeblock
languagexml
collapsetrue
<Errors>
	<Error Code="446" RecordID="IPA-698-SR1" ShortText="Could not modify Reservation ID 17414, null" Type="12">CHECKED_OUT_DEPARTURE_DATE_CHANGE</Error>
</Errors>
Clearer error message if a to be modified reservation is already checked-out.IPA-69820.45IO_SystemDataRQ
IO_SystemDataRSInbound
OutboundpAirIO_SystemDataRQ
IO_SystemDataRSsee full message examples under MessageDocumentation/Message dictionary/System dataAdded new message to export system data.IPA-68020.45HTNG_HotelFolioNotifRQ
HTNG_HotelFolioRSOutboundpAirHTNG_HotelFolioNotifRQ | Folios | Folio | RevenueDetails | RevenueDetail 
HTNG_HotelFolioRS | Folios | Folio | RevenueDetails | RevenueDetail
Codeblock
languagexml
collapsetrue
<ns2:RevenueDetails>
	<ns2:RevenueDetail Amount="26.00" CurrencyCode="CHF" Description="Alkohol" ReferenceID="0" SubTypeID="Batch" TransactionDate="2020-10-22">
		<ns4:FolioIDs>
			<ns4:FolioID>606568</ns4:FolioID>
		</ns4:FolioIDs>
		<ns2:UnitPrice AmountAfterTax="26.00" AmountBeforeTax="24.14" CurrencyCode="CHF" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="1.86" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:UnitPrice>
		<ns2:ExtendedPrice AmountAfterTax="26.00" AmountBeforeTax="24.14" CurrencyCode="CHF" Quantity="1" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="1.86" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:ExtendedPrice>
		<ns2:RevenueDetailItems>
			<ns2:RevenueDetailItem Amount="11.00" CurrencyCode="CHF" Description="Wine" GuestViewable="false" PMSRevenueCode="3010" ReferenceID="44" RevenueCategoryCode="3" TransactionDate="2020-10-27">
				<ns4:FolioIDs>
					<ns4:FolioID>606565</ns4:FolioID>
				</ns4:FolioIDs>
				<ns2:UnitPrice AmountAfterTax="11.00" AmountBeforeTax="10.21" CurrencyCode="CHF" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="0.79" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:UnitPrice>
				<ns2:ExtendedPrice AmountAfterTax="11.00" AmountBeforeTax="10.21" CurrencyCode="CHF" Quantity="1" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="0.79" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:ExtendedPrice>
			</ns2:RevenueDetailItem>
			<ns2:RevenueDetailItem Amount="15.00" CurrencyCode="CHF" Description="Beer" GuestViewable="false" PMSRevenueCode="3020" ReferenceID="45" RevenueCategoryCode="3" TransactionDate="2020-10-27">
				<ns4:FolioIDs>
					<ns4:FolioID>606566</ns4:FolioID>
				</ns4:FolioIDs>
				<ns2:UnitPrice AmountAfterTax="15.00" AmountBeforeTax="13.93" CurrencyCode="CHF" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="1.07" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:UnitPrice>
				<ns2:ExtendedPrice AmountAfterTax="15.00" AmountBeforeTax="13.93" CurrencyCode="CHF" Quantity="1" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="1.07" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:ExtendedPrice>
			</ns2:RevenueDetailItem>
		</ns2:RevenueDetailItems>
		<ns2:Account ID="19551" ID_Context="protelIO" Type="14"/>
	</ns2:RevenueDetail>
	<ns2:RevenueDetail Amount="2.50" CurrencyCode="CHF" Description="City Tax" PMSRevenueCode="3405" ReferenceID="66" RevenueCategoryCode="9" SubTypeID="RevenueForecast" TransactionDate="2020-10-27">
		<ns4:FolioIDs>
			<ns4:FolioID>606561</ns4:FolioID>
		</ns4:FolioIDs>
		<ns2:UnitPrice AmountAfterTax="2.50" AmountBeforeTax="2.41" CurrencyCode="CHF" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="0.09" CurrencyCode="CHF" Percent="4.00" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:UnitPrice>
		<ns2:ExtendedPrice AmountAfterTax="2.50" AmountBeforeTax="2.41" CurrencyCode="CHF" Quantity="1" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="0.09" CurrencyCode="CHF" Percent="4.00" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:ExtendedPrice>
		<ns2:Account ID="19551" ID_Context="protelIO" Type="14"/>
	</ns2:RevenueDetail>
	<ns2:RevenueDetail Amount="0.00" CurrencyCode="CHF" Description="Accommodation incl. breakfast" ReferenceID="0" SubTypeID="BatchForecast" TransactionDate="2020-10-27">
		<ns4:FolioIDs>
			<ns4:FolioID>606564</ns4:FolioID>
		</ns4:FolioIDs>
		<ns2:UnitPrice AmountAfterTax="0.00" AmountBeforeTax="0.00" CurrencyCode="CHF" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="0.00" CurrencyCode="CHF" Percent="0" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:UnitPrice>
		<ns2:ExtendedPrice AmountAfterTax="0.00" AmountBeforeTax="0.00" CurrencyCode="CHF" Quantity="1" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="0.00" CurrencyCode="CHF" Percent="0" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:ExtendedPrice>
		<ns2:RevenueDetailItems>
			<ns2:RevenueDetailItem Amount="0.00" CurrencyCode="CHF" Description="Accommodation" GuestViewable="false" PMSRevenueCode="3400" ReferenceID="26" RevenueCategoryCode="9" TransactionDate="2020-10-27">
				<ns4:FolioIDs>
					<ns4:FolioID>606560</ns4:FolioID>
				</ns4:FolioIDs>
				<ns2:UnitPrice AmountAfterTax="0.00" AmountBeforeTax="0.00" CurrencyCode="CHF" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="0.00" CurrencyCode="CHF" Percent="0" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:UnitPrice>
				<ns2:ExtendedPrice AmountAfterTax="0.00" AmountBeforeTax="0.00" CurrencyCode="CHF" Quantity="1" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="0.00" CurrencyCode="CHF" Percent="0" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:ExtendedPrice>
			</ns2:RevenueDetailItem>
			<ns2:RevenueDetailItem Amount="22.00" CurrencyCode="CHF" Description="Breakfast" GuestViewable="false" PMSRevenueCode="3070" ReferenceID="50" RevenueCategoryCode="3" TransactionDate="2020-10-27">
				<ns4:FolioIDs>
					<ns4:FolioID>606562</ns4:FolioID>
				</ns4:FolioIDs>
				<ns2:UnitPrice AmountAfterTax="22.00" AmountBeforeTax="21.22" CurrencyCode="CHF" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="0.78" CurrencyCode="CHF" Percent="4.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:UnitPrice>
				<ns2:ExtendedPrice AmountAfterTax="22.00" AmountBeforeTax="21.22" CurrencyCode="CHF" Quantity="1" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="0.78" CurrencyCode="CHF" Percent="4.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:ExtendedPrice>
			</ns2:RevenueDetailItem>
			<ns2:RevenueDetailItem Amount="-22.00" CurrencyCode="CHF" Description="Accommodation" GuestViewable="false" PMSRevenueCode="3400" ReferenceID="26" RevenueCategoryCode="9" TransactionDate="2020-10-27">
				<ns4:FolioIDs>
					<ns4:FolioID>606563</ns4:FolioID>
				</ns4:FolioIDs>
				<ns2:UnitPrice AmountAfterTax="-22.00" AmountBeforeTax="-21.22" CurrencyCode="CHF" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="-0.78" CurrencyCode="CHF" Percent="4.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:UnitPrice>
				<ns2:ExtendedPrice AmountAfterTax="-22.00" AmountBeforeTax="-21.22" CurrencyCode="CHF" Quantity="1" Type="31">
					<ns4:Taxes CurrencyCode="CHF">
						<ns4:Tax Amount="-0.78" CurrencyCode="CHF" Percent="4.00" Type="Inclusive"/>
					</ns4:Taxes>
				</ns2:ExtendedPrice>
			</ns2:RevenueDetailItem>
		</ns2:RevenueDetailItems>
		<ns2:Account ID="19551" ID_Context="protelIO" Type="14"/>
	</ns2:RevenueDetail>
	<ns2:RevenueDetail Amount="4.00" CurrencyCode="CHF" Description="Chips" PMSRevenueCode="3090" ReferenceID="94" RevenueCategoryCode="3" SubTypeID="RevenueForecast" TransactionDate="2020-10-27">
		<ns4:FolioIDs>
			<ns4:FolioID>606567</ns4:FolioID>
		</ns4:FolioIDs>
		<ns2:UnitPrice AmountAfterTax="4.00" AmountBeforeTax="3.71" CurrencyCode="CHF" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="0.29" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:UnitPrice>
		<ns2:ExtendedPrice AmountAfterTax="4.00" AmountBeforeTax="3.71" CurrencyCode="CHF" Quantity="1" Type="31">
			<ns4:Taxes CurrencyCode="CHF">
				<ns4:Tax Amount="0.29" CurrencyCode="CHF" Percent="8.00" Type="Inclusive"/>
			</ns4:Taxes>
		</ns2:ExtendedPrice>
		<ns2:Account ID="19551" ID_Context="protelIO" Type="14"/>
	</ns2:RevenueDetail>
</ns2:RevenueDetails>
Sending RevenueDetail with the Batch identifier (Package Identifier) to display the package information in RevenueDetailItems element.IPA-72320.45OTA_HotelResNotifRQ InboundpAirOTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | GuestCounts
Codeblock
languagexml
collapsetrue
		<GuestCounts>
			<GuestCount AgeQualifyingCode="10" Count="1"/>
			<GuestCount AgeQualifyingCode="8" Count="1"/>
			<GuestCount AgeQualifyingCode="7" Count="1"/>
		</GuestCounts>
	</RoomRate>
</RoomRates>
<GuestCounts IsPerRoom="true">
	<GuestCount AgeQualifyingCode="10" Count="1"/>
	<GuestCount AgeQualifyingCode="8" Count="1"/>
	<GuestCount AgeQualifyingCode="7" Count="1"/>
</GuestCounts>

Extend the functionality for import Child with a Reservation

  1. If a AQC is part of the message pAir will evalute against the AQC
  2. If the AQC is missing pAir will evalute against the Age
  3. If both are missing, pAir treats GuestCounts as Adult
IPA-71620.45OTA_HotelResNotifRQOutboundpAir

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | RoomRates | RoomRate | GuestCounts | GuestCount

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | GuestCounts | GuestCount

Codeblock
languagexml
collapsetrue
<GuestCounts>
	<GuestCount AgeQualifyingCode="10" Count="1"/>
	<GuestCount AgeBucket="Teenage" AgeQualifyingCode="9" Count="1"/>
	<GuestCount AgeBucket="Child" AgeQualifyingCode="8" Count="1"/>
	<GuestCount AgeBucket="Infant" AgeQualifyingCode="7" Count="1"/>
</GuestCounts>
</RoomRate>
</RoomRates>
<GuestCounts IsPerRoom="true">
	<GuestCount AgeQualifyingCode="10" Count="1"/>
	<GuestCount AgeBucket="Teenage" AgeQualifyingCode="9" Count="1"/>
	<GuestCount AgeBucket="Child" AgeQualifyingCode="8" Count="1"/>
	<GuestCount AgeBucket="Infant" AgeQualifyingCode="7" Count="1"/>
</GuestCounts>

The AgeQualifyingCode set according to the Type set up in the Discount Group and display in the outbound reservations.

IPA-68220.45OTA_ProfileCreateRQInboundpAirOTA_ProfileCreateRQ | Profiles | @ShareAllOptOutInd
Codeblock
languagexml
collapsetrue
...
<Profile CreateDateTime="2020-10-29T07:55:51Z" CreatorID="alireza.memarifard@protel.net" LastModifierID="Unknown" LastModifyDateTime="2020-10-29T07:55:52Z" ProfileType="1" ShareAllOptOutInd="No" StatusCode="4">
				<Customer Gender="Unknown" Language="fr">
					<PersonName>
						<GivenName>tst5</GivenName>
						<Surname>test5</Surname>
					</PersonName>
...
Marketing allowed value changed and set to "Allowed" with ShareAllOptOutInd = No for a profile create inbound.IPA-71020.45OTA_HotelInvBlockNotifRQOutboundpAirOTA_HotelInvBlockNotifRQ | InvBlocks | InvBlock | RoomTypes | RoomType | RatePlans | BaseByGuestAmts | BaseByGuestAmt
Codeblock
languagexml
collapsetrue
...
<RatePlans>
	<RatePlan CurrencyCode="EUR" End="2020-10-27" MaxGuestApplicable="4" RatePlanCode="Alireza" Start="2020-10-27">
		<BaseByGuestAmts>
			<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="100.00" AmountBeforeTax="90.91" CurrencyCode="EUR" NumberOfGuests="1"/>
			<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="150.00" AmountBeforeTax="136.36" CurrencyCode="EUR" NumberOfGuests="2"/>
			<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="180.00" AmountBeforeTax="163.64" CurrencyCode="EUR" NumberOfGuests="3"/>
			<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="200.00" AmountBeforeTax="181.82" CurrencyCode="EUR" NumberOfGuests="4"/>
		</BaseByGuestAmts>
		<AdditionalGuestAmounts>
			<AdditionalGuestAmount AgeQualifyingCode="8" Amount="25.00" MaxAdditionalGuests="1" MaxAge="2" MinAge="0"/>
			<AdditionalGuestAmount AgeQualifyingCode="8" Amount="35.00" MaxAdditionalGuests="1" MaxAge="8" MinAge="3"/>
			<AdditionalGuestAmount AgeQualifyingCode="8" Amount="45.00" MaxAdditionalGuests="1" MaxAge="18" MinAge="9"/>
			<AdditionalGuestAmount AgeQualifyingCode="8" Amount="25.00" MaxAdditionalGuests="2" MaxAge="2" MinAge="0"/>
			<AdditionalGuestAmount AgeQualifyingCode="8" Amount="35.00" MaxAdditionalGuests="2" MaxAge="8" MinAge="3"/>
			<AdditionalGuestAmount AgeQualifyingCode="8" Amount="45.00" MaxAdditionalGuests="2" MaxAge="18" MinAge="9"/>
		</AdditionalGuestAmounts>
		<RateDescription Name="RateGroup">
			<Text TextFormat="PlainText">FLEX</Text>
		</RateDescription>
		<MarketCode MarketCode="COU" MarketCodeName="Couple"/>
	</RatePlan>
</RatePlans>
</RoomType>
...
To extend the amount for the @BaseByGuestAmt Attribute to show the detail for the rates with more than 1 adult.IPA-71120.45HTNG_HotelCheckOutNotifRSOutboundpAirHTNG_HotelCheckOutNotifRS | TPA_Extensions | DocumentExtensions | DocumentData
Codeblock
languagexml
collapsetrue
<HTNG_HotelCheckOutNotifRS xmlns="http://htng.org/2014B" TimeStamp="2020-09-28T11:28:12.2502538Z" Version="3.000" CorrelationID="Test_AKO_6">
	<Success/>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		<px:DocumentExtensions>
			<px:DocumentData Type="Invoice" ID="419" ID_Context="protelIO">JVBERi0xLjYKJcOkw7zDtsOfCjIgM...</px:DocumentData>
With the HTNG_HotelCheckOutNotifRS we will provide in the DocumentData element the base64 encoded PDF invoice.IPA-67020.45HTNG_ChargePostingRQInboundpAirHTNG_ChargePostingRQ | Posting | Transaction | RevenueDetails | RevenueDetail | Account
Codeblock
languagexml
collapsetrue
<htng:HTNG_ChargePostingRQ xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:htng="http://htng.org/2014B" xmlns:p="http://protel.io/soap" xmlns:px="http://protel.io/htng/extensions" EchoToken="IPA_704_13" TimeStamp="2020-06-09T18:03:07Z" Version="1" CorrelationID="IPA_704_13" PrimaryLangID="en_US">
	<htng:UniqueID Type="10" ID_Context="protelIO" ID="2787"/>
	<htng:Posting ID="12345">
		<htng:Transaction>
			<htng:RevenueDetails>
				<htng:RevenueDetail Amount="-7.00" CurrencyCode="EUR" Description="Logis" ReferenceID="98" SubTypeID="Payment" TransactionDate="2020-08-09">
					<htng:Account ID="2255" ID_Context="protelIO" Type="16"/>
				</htng:RevenueDetail>
			</htng:RevenueDetails>
		</htng:Transaction>
	</htng:Posting>
</htng:HTNG_ChargePostingRQ>
Posting to a specific invoice by Type="16" IPA-70420.45IPA 20.43  AnkerIPA 20.43IPA 20.43

OTA_HotelAvailNotifRS

OutboundpAirOTA_HotelAvailNotifRS | Warnings | Warning
Codeblock
languagexml
collapsetrue
<?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">OTA_HotelAvailNotifRS</p:Action>
		<p:CorrelationID xmlns:p="http://protel.io/soap">uuid::1111-1111::1111::11</p:CorrelationID>
		<p:CausedBy xmlns:p="http://protel.io/soap">uuid::1111-1111::1111::11</p:CausedBy>
		<p:Source xmlns:p="http://protel.io/soap" Module="backline" ModuleVersion="2020-10-12T10:50:32 (QA)" Product="protelAir" ProductVersion="2043.0.59498-RC" Service="io.protel.air"/>
		<htnga:RelatesToCorrelationID xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders">uuid::1111-1111::1111::11</htnga:RelatesToCorrelationID>
	</env:Header>
	<env:Body>
		<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:p="http://protel.io/soap" xmlns:px="http://protel.io/htng/extensions" xmlns:htng="http://htng.org/2014B" CorrelationID="uuid::1111-1111::1111::11" EchoToken="89970240-068e-438b-ba11-1da35da19144" TimeStamp="2020-10-12T12:09:58Z" Version="2.000">
			<Success/>
			<Warnings>
				<Warning Code="0" ShortText="AvailStatus (95) excluded : No RoomType found with inventory code [PMKG1] and inventory ID [null] " Type="12">AvailStatus(95) has inccorect data</Warning>
				<Warning Code="0" ShortText="RateGroups not found by RatePlanCategory code BAR1" Type="12">RateGroups not found by RatePlanCategory code BAR1</Warning>
				<Warning Code="0" ShortText="RoomTypes not found with inventory code PMKG1" Type="12">RoomTypes not found with inventory code PMKG1</Warning>
				<Warning Code="0" ShortText="No matches for 1 AvailStatusMessage elements" Type="13">0</Warning>
			</Warnings>
			<UniqueID ID="2585" ID_Context="protelIO" Type="10"/>
		</OTA_HotelAvailNotifRS>
	</env:Body>
</env:Envelope>

pAir will send back a warning in the OTA_HotelAvailNotifRS message if the RateGroup (RatePlanCategory) received is not existing.IPA-68920.43OTA_ProfileReadRSOutboundpAirOTA_ProfileReadRS | Warnings

no change in XML structure

Misleading warnings for OTA_ProfileReadRS regarding not applied search criterias will not be send any more.IPA-71320.43PWS 2.20.X  AnkerPWS 2.20PWS 2.20OTA_HotelResNotifRQOutboundOnPremOTA_HotelResNotifRQ | HotelReservations | HotelReservation | ResGlobalInfo | DepositPayments | GuaranteePayment | AcceptedPayments | AcceptedPayment | @PaymentTransactionTypeCode

Modify the Value for the Attribute @PaymentTransactionTypeCode

  • Charge → charge
  • Reserve → reserve
  • Refund → refund
PWS-2401PWS-2.20.4HTNG_HotelCheckInNotifRQInboundOnPremno change in XML structureno change in XML structureThe Unassigned room reservations get checked-in properly after sending the RQ.PWS-2451PWS 2.20.4OTA_HotelInvBlockNotifRQInboundOnPremOTA_HotelInvBlockNotifRQ | TPA_Extensions | ReservationExtensions | ReservationExtension
Codeblock
languagexml
collapsetrue
...
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
	<px:ProfileInfoExtensions>
		<px:ContactDetails>
			<px:AdditionalInfo />
		</px:ContactDetails>
	</px:ProfileInfoExtensions>
	<InvBlockExtensions>
		<InvBlockID ID="114411" ID_Context="SUI" Type="18" />
	</InvBlockExtensions>
	<ReservationExtensions xmlns="http://protel.io/htng/extensions">
		<ReservationStatus ID="17" ID_Context="protelIO"/>
	</ReservationExtensions>
</TPA_Extensions>
...
The reservation status can be set with new allotment (Commit) in an inboud RQ.PWS-2437PWS 2.20.XOTA_ProfileCreateRQ / OTA_ProfileModifyRQOutboundOnPrem

OTA_ProfileCreateRQ | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:VipCodes

OTA_ProfileCreateRQ | Profile | Customer | TPA_Extensions | px:ProfileInfoExtensions | px:PersonInfos | px:MarketingCodes

Codeblock
languagexml
collapsetrue
<px:ProfileInfoExtensions>
	<px:PersonInfos>
		<px:VipCodes>
			<px:Code DefaultInd="true" DisplaySequence="0" ID="3" ID_Context="protelIO" Type="VIPCODE" Value="Black List"/>
			<px:Code DefaultInd="false" DisplaySequence="0" ID="1" ID_Context="protelIO" Type="VIPCODE" Value="Stammgast"/>
		</px:VipCodes>
		<px:MarketingCodes>
			<px:Code DefaultInd="true" DisplaySequence="0" ID="8" ID_Context="protelIO" Type="MARKETINGCODE" Value="Urlauber"/>
			<px:Code DefaultInd="false" DisplaySequence="0" ID="16" ID_Context="protelIO" Type="MARKETINGCODE" Value="Wellness / Beauty"/>
		</px:MarketingCodes>
	</px:PersonInfos>
</px:ProfileInfoExtensions>
Add the TPA_Extensions for <VipCodes> and <MarketingCodes>to both messagesPWS-707PWS 2.20.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

InboundOnPrem

OTA_ProfileCreateRQ | Profile | Customer | URL

OTA_ProfileModifyRQ | ProfileModify | Customer | URL

Codeblock
languagexml
collapsetrue
<Profile ShareAllOptOutInd="Yes" ProfileType="1" CreateDateTime="2020-10-08T09:52:00" CreatorID="protel 37" RPH="" LastModifyDateTime="2020-10-08T09:52:48" LastModifierID="protel 37" StatusCode="4">
	<Customer Gender="Unknown" Language="de">
		<PersonName>
			<GivenName>Max</GivenName>
			<Surname>Mustermann</Surname>
		</PersonName>
		<Address FormattedInd="false" ShareMarketInd="No" Type="1" DefaultInd="true">
			<StateProv/>
			<CountryName Code="NO">Norwegen</CountryName>
		</Address>
		<CitizenCountryName DefaultInd="true" Code="NO"/>
		<Document BirthDate="1900-01-01" EffectiveDate="1900-01-01" ExpireDate="2050-12-31"/>
		<EmployerInfo CompanyShortName="Company2" Department="Department">Company1</EmployerInfo>
		<URL DefaultInd="true" ShareMarketInd="No">Url@test.com</URL>
	</Customer>
</Profile>
The URL send by third parties in OTA_ProfileCreateRQ and OTA_ProfileModifyRQ will be imported to the profile.PWS-295PWS 2.20.XOTA_HotelAvailNotifRSOutboundOnPremOTA_HotelAvailNotifRS | Warning
Codeblock
languagexml
collapsetrue
<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2020-11-11T12:42:52Z" Version="3.000" CorrelationID="PWS-2275-TestRound3-SR1">
	<Success/>
	<Warnings>
		<Warning ShortText="RateGroups not found by RatePlanCategory code SRBAR" Code="320" Type="12">RateGroups not found by RatePlanCategory code SRBAR</Warning>
		<Warning ShortText="No matches for 1 AvailStatusMessage elements" Code="320" Type="13">No matches for 1 AvailStatusMessage elements</Warning>
	</Warnings>
</OTA_HotelAvailNotifRS>

Currently when receiving an inbound AvailNotif with multiple restrictions, some of them are successfully but some fail, the PWS is replying with an Error

We will change this behaviour, the PWS should return a warning element for every failed restriction and process the correct ones, so that RS message holds Success and Warnings. Additionally there will be one warning element with the overall number of failed AvailStatusMessages.

PWS-2275PWS 2.20.XIO_ResModifyNotifRQinboundOnPremIO_ResModifyNotifRQ | Reservations | Reservation | FixedCharges | FixedCharge | Item | @ItemID
Codeblock
languagexml
collapsetrue
<p:IO_ResModifyNotifRQ xmlns:p="http://protel.io/soap" CorrelationID="PWS-2286-SR3" TimeStamp="2018-12-29T15:20:35.985Z" Version="1.00">
	<p:Reservations HotelCode="3153">
		<p:Reservation ArrivalDate="2018-01-10">
			<p:UniqueID ID="341561" Type="14" ID_Context="Protel_IO"/>
			<p:FixedCharges>
				<p:FixedCharge Action="CREATE" Code="TAA using article" UpsellInd="false" Recurrence="Daily" Quantity="1">
					<p:InvoiceText>TAA upsell using an article</p:InvoiceText>
					<p:Price SingleAmountAfterTax="22.22" CurrencyCode="EUR"/>
					<p:Item ItemID="1234" Code="1080"/>
				</p:FixedCharge>
			</p:FixedCharges>
		</p:Reservation>
	</p:Reservations>
</p:IO_ResModifyNotifRQ>
We will import the ItemID value with the IO_ResModifyNotifRQ for the use case "Create/Update a fixed charge using an article".
If UpsellInd="false" and no Item/@Code but Item/@ItemID provided, the fixed charge will be processed.
If  UpsellInd="false" and no Item/@ItemID provided, the PWS will send an error back.PWS-2286PWS 2.20.xOTA_ProfileModifyRQInboundOnPremOTA_ProfileCreateRQ | Profile | CompanyInfo | AddressInfo | @ShareMarketIndno change in XML structure

Modifying the ShareMarketInd for Company profiles without <Customer> Element is not possible, we will fix this. 

For Company Profiles only a <CompanyInfo> Element is needed to modify the ShareMarketInd.

PWS-2283PWS 2.20.XOTA_HotelResNotifRQOuboundOnPrem

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | @CreateDateTime

OTA_HotelResNotifRQ | HotelReservations | HotelReservation | @LastModifyDateTime

no change in XML structure

Timestamps corrected to use UTC time (equal to other messages).PWS-2310PWS 2.20.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

InboundOnPrem

OTA_ProfileCreateRQ | Profile | Customer | CustLoyalty | SubAccountBalance | Type

OTA_ProfileModifyRQ | ProfileModify | Customer | CustLoyalty | SubAccountBalance | Type

Codeblock
languagexml
collapsetrue
<CustLoyalty ProgramID="5566" MembershipID="5566" RPH="9" PrimaryLoyaltyIndicator="false" AllianceLoyaltyLevelName="GHA" Remark="" LoyalLevel="PLATINUM" SignupDate="2019-05-18" EffectiveDate="2019-05-18" ExpireDate="2019-05-18" ShareMarketInd="No" ShareSyncInd="No">
	<SubAccountBalance Type="Type1" Balance="60" />
</CustLoyalty>

To import the @Type correctly and set it in the guest's loyalty Program as Loyalty Type.

Extend the error handling for not existing Type, no change in the XML Message.

PWS-594PWS 2.20.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

InboundOnPrem

OTA_ProfileCreateRQ | Profile | Customer | CustLoyalty | @LoyalLevel

OTA_ProfileModifyRQ | ProfileModify | Customer | CustLoyalty | @LoyalLevel

Codeblock
languagexml
collapsetrue
<CustLoyalty ProgramID="5566" MembershipID="5566" RPH="9" PrimaryLoyaltyIndicator="false" AllianceLoyaltyLevelName="GHA" Remark="" LoyalLevel="PLATINUM" SignupDate="2019-05-18" EffectiveDate="2019-05-18" ExpireDate="2019-05-18" ShareMarketInd="No" ShareSyncInd="No">
	<SubAccountBalance Balance="0" />
</CustLoyalty>

To import the @LoyalLevel correctly and set it in the guest's loyalty Program as Loyalty level.

Extend the error handling for not existing LoyalLevel, no change in the XML Message.

PWS-593PWS 2.20.XHTNG_HotelFolioNotifRSOutboundOnPremHTNG_HotelFolioNotifRS | Folios | Folio | CustomerProfileno change in XML structureThe <CustomerProfile> element will always hold the main guest information for all folios.PWS-2276PWS 2.20.XHTNG_HotelFolioNotifRSOutboundOnPremHTNG_HotelFolioNotifRS | Folios | Folio | @GuestViewable
Codeblock
languagexml
collapsetrue
<HTNG_HotelFolioRS xmlns="http://htng.org/2014B" TimeStamp="2020-10-27T11:03:40.5921104Z" Version="3.000" CorrelationID="PWS_2252_01" EchoToken="PWS_2252_01" Target="Test" TransactionStatusCode="Start" RetransmissionIndicator="false">
			<Success/>
			<Folios>
				<Folio FolioID="341558-0" FolioType="Room" InvoiceID="0" GuestPayable="true">
					...
				</Folio>
				<Folio FolioID="341558-1" FolioType="Room" InvoiceID="0" GuestPayable="false">
					....
				</Folio>
			</Folios>
		</HTNG_HotelFolioRS>
	</env:Body>
</env:Envelope>
Remove the <GuestViewable> attribute, as there is no possibility in PMS to set it.PWS-2252PWS 2.20.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

InboundOnPrem

OTA_ProfileModifyRQ | Customer / EmployerInfo

OTA_ProfileCreateRQ | Customer | EmployerInfo

Codeblock
languagexml
collapsetrue
<Customer Gender="Male" Language="de">
	<PersonName>
		<GivenName>tst</GivenName>
		<Surname>Test593_02</Surname>
	</PersonName>
	<Address FormattedInd="false" ShareMarketInd="No" Type="1" DefaultInd="true">
		<StateProv/>
		<CountryName Code="NO">Norwegen</CountryName>
	</Address>
	<CitizenCountryName DefaultInd="true" Code="NO" />
	<Document BirthDate="1900-01-01" EffectiveDate="1900-01-01" ExpireDate="1900-01-01" />
	<EmployerInfo CompanyShortName="Company2" Department="Dep">Company</EmployerInfo>
</Customer>
The EmployerInfo will be implemented in the ProfilePWS-623PWS 2.20.XOTA_ResRestrieveRS OutboundOnPremOTA_ResResRetrieve | ResGuests | ResGuest | Profiles | ProfileInfo | Profile | 
  • Customer | @Gender
  • Customer | @BirthDate
  • Customer | @Language
  • Customer | PersonName | NamePrefix
  • Customer | CitizenCountryName (element)
  • Customer | RelatedTraveler (element)
  • Customer | Document (element)

OTA_ResResRetrieve | RoomStays | BasicPropertyInfo

OTA_ResResRetrieve | RoomStays | RoomStay | ResGuestRPH 

Root element

  • Version to 6.002
  • add PrimaryLangID="de"
  • add the attribute EchoToken
Codeblock
languagexml
collapsetrue
<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2020-10-15T07:45:33.7529995Z" Version="6.002" CorrelationID="READ#TEST#1" EchoToken="52151515151" PrimaryLangID="de">
	<Success/>
	<ReservationsList>
		<HotelReservation ResStatus="Reserved">
			<UniqueID Type="14" ID="33526" ID_Context="protelIO"/>
			<RoomStays>
				<RoomStay>
					<BasicPropertyInfo HotelCode="3236" HotelCodeContext="protelIO" HotelName="ART SKI - IN Hotel Hinterhag, A-5753 Saalbach" ChainCode="HC1"/>
					<ResGuestRPHs>
						<ResGuestRPH RPH="36842"/>
					</ResGuestRPHs>
					...
				</RoomStay>
			</RoomStays>
			<ResGuests>
				<ResGuest xmlns:px="http://protel.io/htng/extensions" PrimaryIndicator="false">
					<Profiles>
						<ProfileInfo>
							<UniqueID Type="1" ID="36842" ID_Context="protelIO"/>
							<Profile ProfileType="1">
								<Customer Gender="Female" BirthDate="1989-08-12" Language="de">
									<PersonName>
										<NamePrefix>Frau</NamePrefix>
										<GivenName>Test_GivenName</GivenName>
										<MiddleName/>
										<Surname>Test_SurName</Surname>
									</PersonName>
									<Telephone ShareMarketInd="Null" PhoneNumber="0231-915930" PhoneLocationType="6" PhoneTechType="1" DefaultInd="true"/>
									<Email DefaultInd="true" EmailType="1">support@protel.net</Email>
									<Address FormattedInd="false" Type="1" DefaultInd="true" UseType="6">
										<AddressLine>Europaplatz 9a</AddressLine>
										<CityName>Dortmund</CityName>
										<PostalCode>44269</PostalCode>
										<StateProv StateCode="DE-NW">Nordrhein-Westfalen</StateProv>
										<CountryName Code="DE">Deutschland</CountryName>
									</Address>
									<CitizenCountryName DefaultInd="true" Code="DE"/>
									<RelatedTraveler BirthDate="1985-10-17">
										<UniqueID Type="1" ID="36255"/>
										<PersonName Language="en">
											<NamePrefix>Mr.</NamePrefix>
											<GivenName>Jacob</GivenName>
											<Surname>Aliker</Surname>
											<Document/>
										</PersonName>
									</RelatedTraveler>
									<Document DocIssueLocation="Dormtund" DocID="12345" BirthDate="1989-08-12" EffectiveDate="2000-12-12" ExpireDate="2050-12-31"/>
...
Add several attributes/elements to the OTA_ResRetrieveRSPWS-2166 | PWS-1210PWS 2.20.X

HTNG_HotelFolioNotifRQ

OutboundOnPremHTNG_HotelFolioNotifRQ | TPA_Extensions | FiscalExtensions
Codeblock
languagexml
collapsetrue
<HTNG_HotelFolioNotifRQ>
	<TPA_Extensions>
		<px:FiscalExtensions xmlns:px="http://protel.io/htng/extensions">
			<px:FiscalExtension InvoiceID="2:130" FiscalCode="2"/>
		</px:FiscalExtensions>
	</TPA_Extensions>
For fiscalizing PMS the used FiscalCode will be exported with the new TPA_Extension, for non-fiscalizing PMS nothing will change.PWS-2265PWS 2.20.X

HTNG_HotelFolioRS

OutboundOnPremHTNG_HotelFolioRS | TPA_Extensions | FiscalExtensions
Codeblock
languagexml
collapsetrue
<HTNG_HotelFolioRS>
	<TPA_Extensions>
		<px:FiscalExtensions xmlns:px="http://protel.io/htng/extensions">
			<px:FiscalExtension InvoiceID="2:130" FiscalCode="2"/>
		</px:FiscalExtensions>
	</TPA_Extensions>
For fiscalizing PMS the used FiscalCode will be exported with the new TPA_Extension, for non-fiscalizing PMS nothing will change.PWS-2265PWS 2.20.XOTA_HotelAvailRSOutboundOnPremOTA_HotelAvailRS

no change in XML structure

Available rooms should be listed in the OTA_HotelAvailRS based on the following XSetup:

  1. if yield.enable = 0, normal rate calculation
  2. if yield.enable = 1, BAR rate calculation (query in yieldbar table) as current behavior
  3. if yield.enabledhurdle = 1, normal rate calculation compare to the valid hurdle rates. //for instance if normal rate is 100 and hurdle is 120, then No availability.
PWS-2070PWS 2.20.XOTA_HotelInvBlockNotifRSoutboundOnPremOTA_HotelInvBlockNotifRS | TPA_Extensions | ProfileInfoExtensions | ContactDetails | AdditionalInfo
Codeblock
languagexml
collapsetrue
<OTA_HotelInvBlockNotifRS>
	<Success/>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		<px:ProfileInfoExtensions>
			<px:ContactDetails>
				<px:AdditionalInfo>
					<px:Entry ID="155498" ID_Context="protelIO" RPH="1"/>
					<px:Entry ID="00000013" ID_Context="USI" RPH="1"/>
In OTA_HotelInvBlockNotifRS we will display the ProfileID with ID_Context = "protelIO"PWS-2271PWS 2.20.XIO_StatsNotifRQoutboundOnPremTrigger in EOD procedureno change in XML structure

OnPrem will trigger now as described in our documentation the correct number of days

Info
  • FiscalDate is always the Current Business Date of the PMS.
  • ALL CurrentDaily Reports do contain future data including FiscalDate (as a default for 30 days)
  • ALL PastDaily Reports do contain the data from FiscalDate -1 on (as a default for 1 day back)
PWS-2218PWS 2.20.XIO_StatsNotifRQoutboundOnPrem

IO_StatsNotifRQ | Statistics | Statistic | StatisticApplicationSets | StatisticApplicationSet | CountCategorySummaries | CountCategorySummary | CountCategoryCode = 14

IO_StatsNotifRQ | Statistics | Statistic | StatisticApplicationSets | StatisticApplicationSet | CountCategorySummaries | CountCategorySummary | CountCategoryCode = 19

Codeblock
languagexml
collapsetrue
<IO_StatsNotifRQ EchoToken="092f259e-bcf8-4739-8ecb-7b7cf2383c9f" TimeStamp="2020-10-07T15:28:39Z" Version="1.002" CorrelationID="092f259e-bcf8-4739-8ecb-7b7cf2383c9f" xmlns="http://protel.io/soap">
	<Statistics xmlns="http://www.opentravel.org/OTA/2003/05">
		<Statistic ChainCode="HC1" HotelCode="3153" FiscalDate="2017-06-21" ReportCode="Genius_CurrentDailyRoomTypeStatistics_v1">
			<StatisticApplicationSets>
				<StatisticApplicationSet Start="2017-06-21" End="2017-06-21">
					<StatisticCodes>
						<StatisticCode StatCode="ACCT" StatCategoryCode="3"/>
						<StatisticCode StatCode="1" StatCategoryCode="Pseudo"/>
					</StatisticCodes>
					<RevenueCategorySummaries>
						<RevenueCategorySummary RevenueCategoryCode="6" CurrencyCode="AED" Amount="0.00"/>
						<RevenueCategorySummary RevenueCategoryCode="3" CurrencyCode="AED" Amount="0.00"/>
						<RevenueCategorySummary RevenueCategoryCode="9" CurrencyCode="AED" Amount="0.00"/>
						<RevenueCategorySummary RevenueCategoryCode="17" CurrencyCode="AED" Amount="0.00"/>
					</RevenueCategorySummaries>
					<CountCategorySummaries>
						<CountCategorySummary SummaryCount="1" CountCategoryCode="8"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="9"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="10"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="11"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="12"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="13"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="22"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="14"/>
						<CountCategorySummary SummaryCount="3" CountCategoryCode="19"/>
					</CountCategorySummaries>
				</StatisticApplicationSet>
				<StatisticApplicationSet Start="2017-06-22" End="2017-06-22">
					<StatisticCodes>
						<StatisticCode StatCode="CBRT" StatCategoryCode="3"/>
						<StatisticCode StatCode="0" StatCategoryCode="Pseudo"/>
					</StatisticCodes>
					<RevenueCategorySummaries>
						<RevenueCategorySummary RevenueCategoryCode="6" CurrencyCode="AED" Amount="0.00"/>
						<RevenueCategorySummary RevenueCategoryCode="3" CurrencyCode="AED" Amount="0.00"/>
						<RevenueCategorySummary RevenueCategoryCode="9" CurrencyCode="AED" Amount="0.00"/>
						<RevenueCategorySummary RevenueCategoryCode="17" CurrencyCode="AED" Amount="0.00"/>
					</RevenueCategorySummaries>
					<CountCategorySummaries>
						<CountCategorySummary SummaryCount="2" CountCategoryCode="8"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="9"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="10"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="11"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="12"/>
						<CountCategorySummary SummaryCount="1" CountCategoryCode="13"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="22"/>
						<CountCategorySummary SummaryCount="1" CountCategoryCode="14"/>
						<CountCategorySummary SummaryCount="0" CountCategoryCode="19"/>
					</CountCategorySummaries>
				</StatisticApplicationSet>

Added the CountCategoryCode to the future Report

14 = Room cancelled
19 = Day-use rooms

PWS-2213PWS 2.20.XHTNG_HotelCheckOutNotifRSOutboundOnPrem

HTNG_HotelCheckOutNotifRS | TPA_Extensions | DocumentExtensions | DocumentData

Codeblock
languagexml
collapsetrue
<HTNG_HotelCheckOutNotifRS xmlns="http://htng.org/2014B" TimeStamp="2020-09-28T11:28:12.2502538Z" Version="3.000" CorrelationID="Test_AKO_6">
	<Success/>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		<px:DocumentExtensions>
			<px:DocumentData Type="Invoice" ID="419" ID_Context="protelIO">JVBERi0xLjYKJcOkw7zDtsOfCjIgM...</px:DocumentData>
We will provide in HTNG_HotelCheckOutNotifRS / DocumentData element the base64 encoded PDF invoice.PWS-2187PWS 2.20.XPWS 2.19.x   AnkerPWS 2.19PWS 2.19OTA_HotelResNotifRSInboundOnPremOTA_HotelResNotifRS | UniqueID
Codeblock
languagexml
collapsetrue
<OTA_HotelResNotifRS ResResponseType="Commited">
    <Success/>
    <HotelReservations>
        <HotelReservation>
            <UniqueID ID="33749" Type="14" ID_Context="protelIO"/>
            <UniqueID ID="WIRJOWARIabc1321" Type="14" ID_Context="PartnerCRS"/>
        </HotelReservation>
    </HotelReservations>
</OTA_HotelResNotifRS>

For "Commit" reservations which originated in the PMS it is now possible to store the external reservation confirmation number. 

The UniqueID/@ID and /@ID_Context will be then included in further OTA_HotelResNotifRQ messages from the PMS. 

PWS-2333PWS 2.19.XHTNG_HotelFolioNotifRQOutboundOnPremHTNG_HotelFolioNotifRQ | Folios | Folio | RevenueSummary
Codeblock
languagexml
collapsetrue
<HTNG_HotelFolioNotifRQ>
	<Folios>
		<Folio FolioID="33389-0" FolioType="Room" InvoiceID="0" GuestViewable="false" GuestPayable="true">
			<RevenueSummary>
				<GrossAmount Amount="0" xmlns="http://www.opentravel.org/OTA/2003/05"/>
				<TaxItems Amount="0" xmlns="http://www.opentravel.org/OTA/2003/05"/>
				<BalanceDueAmount Amount="0" xmlns="http://www.opentravel.org/OTA/2003/05"/>
				<AmountReceived Amount="0" xmlns="http://www.opentravel.org/OTA/2003/05"/>
			</RevenueSummary>
			<RevenueDetails/>
For Cancelled and No-Show Reservation the RevenueSummary will display a 0,00 AmountPWS-2356PWS 2.19.X

OTA_ProfileCreateRQ

OTA_ProfileModifyRQ

OutboundOnPrem

OTA_ProfileCreateRQ | POS | Source | TPA_Extensions | POSExtensions | HotelInfo | @FiscalDate

OTA_ProfileModifyRQ | POS | Source | TPA_Extensions | POSExtensions | HotelInfo | @FiscalDate

Codeblock
languagexml
collapsetrue
<OTA_ProfileCreateRQ>
	<POS>
		<Source>
			<TPA_Extensions>
				<px:POSExtensions xmlns:px="http://protel.io/htng/extensions">
					<px:HotelInfo/>
Remove the FiscalDate from the Profile message, can be enable in the message if neededPWS-2364PWS 2.19.XOTA_HotelResNotifRQOutboundOnPremno change in XML structureNo Preparer Exception after deleting the setting in the RBG and building ResNotif outbound.PWS-2355PWS 2.19.XHTNG_HotelFolioRSOutboundOnPremHTNG_HotelFolioRS | Folios | Folio | RevenueDetailsno change in XML structureThe issue with displaying the RevenueDetails as Forecast AND real Revenue for the last past day is fixed.PWS-2351PWS 2.19.XOTA_ProfileReadRSOutboundOnPremOTA_ProfileReadRS | Errors | Errorno change in XML structure

Changed the error text in case of not existing a profile ID to:
<Error ShortText="Could not find profile 61000000 - Profile does not exist." Code="321"/>

PWS-2349PWS 2.19.XOTA_HotelResNotifRQOutboundOnPremOTA_HotelResNotifRQno change in XML structureTo reproduce the missing entries for the past dates in prfutre after running a persistent forecast.PWS-2345PWS 2.19.XHTNG_HotelFolioNotifRQOutboundOnPremHTNG_HotelFolioNotifRQno change in XML structureMessage will be triggered when a reservation is created, modified (affecting the invoice) and cancelled.PWS-2320PWS 2.19.XHTNG_HotelCheckOutNotifRQInboundOnPremHTNG_HotelCheckOutNotifRQ

no change in XML structure

Added the functionality to check-in a reservation which has no roomID assignedPWS-2193PWS 2.19.XOTA_HotelInvBlockNotifRQInbound / OutboundOnPremOTA_HotelInvBlockNotifRQ | TPA_Extensions | ReservationExtensions
Codeblock
languagexml
collapsetrue
<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
	<px:ProfileInfoExtensions>
		<px:ContactDetails>
			<px:AdditionalInfo />
		</px:ContactDetails>
	</px:ProfileInfoExtensions>
	<InvBlockExtensions>
		<InvBlockID ID="213" ID_Context="protelIO" Type="18" />
		<InvBlockID ID="4444" ID_Context="iVvy" Type="18" />
	</InvBlockExtensions>
	<px:ReservationExtensions>
		<px:ReservationStatus Code="Conf" ID="3" ID_Context="protelIO" Name="Credit Card Guarante" RPH="213" />
	</px:ReservationExtensions>
</TPA_Extensions>
Implementing ReservationExtensions in TPA_Extension element to contain the allotment reservation status.PWS-2269PWS 2.19.XOTA_HotelInvBlockNotifRQOutboundOnPremOTA_HotelInvBlockNotifRQ / TPA_Extensions
Codeblock
languagexml
collapsetrue
<?xml version='1.0' encoding='utf-8'?>
<OTA_HotelInvBlockNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EchoToken="7e8b3c99-1097-4e4a-a542-c47836abc56e" TimeStamp="2020-09-23T10:06:44Z" Version="4.001" CorrelationID="7e8b3c99-1097-4e4a-a542-c47836abc56e" PrimaryLangID="en" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelInvBlockNotifRQ.xsd">
	<POS>...	</POS>
	<InvBlocks>
		...
	</InvBlocks>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		<px:ProfileInfoExtensions>
			<px:ContactDetails>
				<px:AdditionalInfo>
					<px:Entry ID="155463" ID_Context="protelIO" Type="5" DefaultInd="true">SafiranParvazAsia</px:Entry>
					<px:Entry ID="155460" ID_Context="protelIO" Type="4" DefaultInd="true">ADL</px:Entry>
					<px:Entry ID="155494" ID_Context="protelIO" Type="7" DefaultInd="true">AsiaParliment</px:Entry>
					<px:Entry ID="155456" ID_Context="protelIO" Type="9" DefaultInd="true">GRP1</px:Entry>
				</px:AdditionalInfo>
			</px:ContactDetails>
		</px:ProfileInfoExtensions>
		<InvBlockExtensions>
			<InvBlockID ID="202" ID_Context="protelIO" Type="18"/>
		</InvBlockExtensions>
	</TPA_Extensions>
</OTA_HotelInvBlockNotifRQ>
Added TPA_Extensions elementPWS-1325PWS-2.19.XOTA_HotelResNotifRQOutboundOnPremOTA_HotelResNotifRQ / HotelReservations / HotelReservation / ResGuests / ResGuest / TPA_Extensions
Codeblock
languagexml
collapsetrue
<OTA_HotelResNotifRQ>
	<HotelReservations>
		<HotelReservation>
			<ResGuests>
				<ResGuest>
					<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
						<px:GuestStayExtensions>
							<px:TelephoneSetting ClassOfService="1"/>
						</px:GuestStayExtensions>
					</TPA_Extensions>
Added TPA_Extensions / GuestStayExtensions / TelephoneSetting to OTA_HotelResNotifRQ outboundPWS-1271PWS-2.19.XOTA_HotelAvailRSOutboundOnPremOTA_HotelAvailRS / RoomStays / RoomStay / RatePlans / RatePlan / CancelPenalties
OTA_HotelAvailRS / RoomStays / RoomStay / RatePlans / RatePlan / RatePlanDescription
Codeblock
languagexml
collapsetrue
<?xml version='1.0' encoding='utf-8'?>
<OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2020-09-08T07:59:44.6739226Z" Version="6.001" CorrelationID="PWS-2221-SR4" EchoToken="PWS-2221-SR4" PrimaryLangID="en" SearchCacheLevel="live">
	<Success/>
	<HotelStays>...	</HotelStays>
	<RoomStays>
		<RoomStay RoomStayStatus="Quote" ResponseType="PropertyRateList" AvailabilityStatus="AvailableForSale" InfoSource="PMS" RPH="1" AvailableIndicator="true">
			<RoomTypes>
				<RoomType IsRoom="true" RoomTypeCode="CBR" RoomType="Classic One Bedroom Suite"/>
			</RoomTypes>
			<RatePlans>
				<RatePlan RatePlanCode="Ali3" RatePlanID="354" EffectiveDate="2017-06-20" ExpireDate="2017-06-21" PriceViewableInd="true">
					<AdditionalDetails>
				    ...
					</AdditionalDetails>
					<CancelPenalties>
						<CancelPenalty PolicyCode="Non Refundable">
							<PenaltyDescription Name="Name">
								<Text TextFormat="PlainText">Non Refundable</Text>
							</PenaltyDescription>
						</CancelPenalty>
					</CancelPenalties>
					<RatePlanDescription>
						<RatePlanDescription Name="Long Description">
							<Text TextFormat="PlainText">1111</Text>
						</RatePlanDescription>
					</RatePlanDescription>
				</RatePlan>
			</RatePlans>
			<RoomRates>...</RoomRates>
			<Total AmountAfterTax="120.00" CurrencyCode="AED"/>
		</RoomStay>
		<RoomStay RoomStayStatus="Quote" ResponseType="PropertyRateList" AvailabilityStatus="AvailableForSale" InfoSource="PMS" RPH="1" AvailableIndicator="true">
			<RoomTypes>
				<RoomType IsRoom="true" RoomTypeCode="CBR" RoomType="Classic One Bedroom Suite"/>
			</RoomTypes>
			<RatePlans>
				<RatePlan RatePlanCode="Ali3" RatePlanID="354" EffectiveDate="2017-06-20" ExpireDate="2017-06-21" PriceViewableInd="true">
					<AdditionalDetails>
					...
					</AdditionalDetails>
					<CancelPenalties>
						<CancelPenalty PolicyCode="Non Refundable">
							<PenaltyDescription Name="Name">
								<Text TextFormat="PlainText">Non Refundable</Text>
							</PenaltyDescription>
						</CancelPenalty>
					</CancelPenalties>
					<RatePlanDescription>
						<RatePlanDescription Name="Long Description">
							<Text TextFormat="PlainText">1111</Text>
						</RatePlanDescription>
					</RatePlanDescription>
				</RatePlan>
			</RatePlans>
			<RoomRates>
			...
			</RoomRates>
			<Total AmountAfterTax="150.00" CurrencyCode="AED"/>
		</RoomStay>
		...
	</RoomStays>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		...
	</TPA_Extensions>
</OTA_HotelAvailRS>

Elements CancelPenalties and RatePlanDescription will be displayedPWS-2221PWS-2.19.XIO_ResModifyNotifRQInboundOnPremIO_ResModifyNotifRQ | Reservations | Reservation | InvoiceItemRoutings
Codeblock
languagexml
collapsetrue
<p:IO_ResModifyNotifRQ xmlns:p="http://protel.io/soap" CorrelationID="PWS-2168-Test1a" TimeStamp="2018-12-29T15:20:35.985Z" Version="1.00">
	<p:Reservations HotelCode="2570">
		<p:Reservation ArrivalDate="2018-09-28">
			<p:UniqueID ID="345318" Type="14" ID_Context="Protel_IO"/>
			<p:InvoiceItemRoutings>
				<p:InvoiceItemRouting Action="CREATE" ID_Context="protelIO">
					<p:Target ID="345318-1" ID_Context="protelIO" Type="Invoice"/>
					<p:Source ID="345318" ID_Context="protelIO" Type="Reservation"/>
					<p:ItemFilter>
						<p:Posting From="2018-09-28" To="2018-10-03" Fri="true" Mon="true" Sat="true" Sun="true" Thu="true" Tue="true" Wed="true"/>
						<p:ItemGroups>
							<p:ItemGroup Code="-1000002" ID="-1" ID_Context="protelIO">FB</p:ItemGroup>
						</p:ItemGroups>
					</p:ItemFilter>
				</p:InvoiceItemRouting>
			</p:InvoiceItemRoutings>
		</p:Reservation>
	</p:Reservations>
</p:IO_ResModifyNotifRQ>
Added functionality to add a new payment/routing instruction to a reservation.PWS-2168PWS 2.19.X OTA_ProfileCreateRQ / 
OTA_ProfileModifyRQ
InboundOnPremOTA_ProfileCreateRQ | UniqueID
OTA_ProfileModifyRQ | UniqueID 
Codeblock
languagexml
collapsetrue
<OTA_ProfileCreateRQ xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1">
	<POS>
		...
	</POS>
	<UniqueID Type="5" ID="556671101" ID_Context="IATA"/>
	<Profile ShareAllOptOutInd="Yes" ProfileType="4" CreateDateTime="2020-06-26T16:13:00" CreatorID="protel I/O_4866" LastModifyDateTime="2020-06-30T16:06:17" LastModifierID="protel 1" StatusCode="4">
		<Customer/>
		<CompanyInfo>
		...
		</CompanyInfo>
	</Profile>
</OTA_ProfileCreateRQ>
Added the functionality to import IATA number to a profilePWS-2231PWS 2.19.XOTA_HotelResNotifRQoutboundOnPremOTA_HotelResNotifRQ | HotelReservations | HotelReservation | RoomStays | RoomStay | TPA_Extensions
Codeblock
languagexml
collapsetrue
<OTA_HotelResNotifRQ>
	<HotelReservations>
		<HotelReservation>
			<RoomStays>
				<RoomStay>
					<TPA_Extensions>
						<px:RateAmountExtensions xmlns:px="http://protel.io/htng/extensions" End="2018-11-21" Start="2018-11-17" AlternateCurrencyInd="false">
							...
						</px:RateAmountExtensions>
						<px:FixedChargesAmountsExtensions xmlns:px="http://protel.io/htng/extensions" End="2018-11-21" Start="2018-11-17">
							<px:RateAmount AmountAfterTax="0.00" AmountBeforeTax="0.00" RevenueCategoryCode="3" CurrencyCode="EUR"/>
							<px:RateAmount AmountAfterTax="0.00" AmountBeforeTax="0.00" RevenueCategoryCode="6" CurrencyCode="EUR"/>
							<px:RateAmount AmountAfterTax="0.00" AmountBeforeTax="0.00" RevenueCategoryCode="9" CurrencyCode="EUR"/>
							<px:RateAmount AmountAfterTax="0.00" AmountBeforeTax="0.00" RevenueCategoryCode="17" CurrencyCode="EUR"/>
						</px:FixedChargesAmountsExtensions>
					</TPA_Extensions>
Renaming of TPA_Extensions/FixedChargesAmounts element to TPA_Extensions/FixedChargesAmountsExtensions and TPA_Extensions/FixedChargesAmounts/FixedChargeAmount to TPA_Extensions/FixedChargesAmounts/RateAmount to unify messages for both PMS.PWS-1266PWS 2.19.XOTA_HotelAvailRSoutboundOnPremOTA_HotelAvailRS | RoomStays | RoomStay | RatePlans | RatePlan | Guarantee 
OTA_HotelAvailRS | TPA_Extensions | 
AvailabilityExtensions
Codeblock
languagexml
collapsetrue
<OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2020-08-27T09:51:57.7432169Z" Version="6.001" CorrelationID="SR_Test1" EchoToken="EchoToken_String" PrimaryLangID="en" SearchCacheLevel="live">
	<Success/>
	<HotelStays>...</HotelStays>
	<RoomStays>
		...
		<RoomStay RoomStayStatus="Quote" ResponseType="PropertyRateList" AvailabilityStatus="AvailableForSale" InfoSource="PMS" RPH="1" AvailableIndicator="true">
			<RoomTypes>
				<RoomType IsRoom="true" RoomTypeCode="DZ Tal" RoomType="Doppelzimmer "Tal""/>
			</RoomTypes>
			<RatePlans>
				<RatePlan RatePlanCode="PACKTEST" RatePlanID="44" EffectiveDate="2019-08-01" ExpireDate="2019-08-05" PriceViewableInd="true">
					<AdditionalDetails>...</AdditionalDetails>
					<Guarantee GuaranteeCode="Test">
						<GuaranteeDescription Name="Name">
							<Text TextFormat="PlainText">Test</Text>
						</GuaranteeDescription>
					</Guarantee>
				</RatePlan>
			</RatePlans>
			<RoomRates>...</RoomRates>
			<Total AmountAfterTax="400.00" CurrencyCode="EUR"/>
		</RoomStay>
	</RoomStays>
	<TPA_Extensions xmlns:px="http://protel.io/htng/extensions">
		<px:AvailabilityExtensions>
			<px:RoomAvailable IsRoom="true" RoomTypeCode="DZ Tal" RoomID="101" RoomType="101 - Doppelzimmer "Tal"" uantity="1">
				<RoomDescription Name="Short Description">
					<Text TextFormat="PlainText">Doppelzimmer mit Balkon</Text>
				</RoomDescription>
				<Occupancy MinOccupancy="2"/>
				<px:Amenities>
					<px:Amenity>
						<px:RoomAmenity>Extra Fenster </px:RoomAmenity>
					</px:Amenity>
				</px:Amenities>
			</px:RoomAvailable>
			...
		</px:AvailabilityExtensions>
	</TPA_Extensions>
</OTA_HotelAvailRS>
Added several elements and attributes to unify the messages for both PMS.PWS-2136PWS 2.19.X