Le tariffe inviate tramite <OTA_HotelRateAmountNotifRQ>
possono essere
modificato per tenere conto di adulti e bambini oltre all'offerta originale della tariffa
di ospiti. Il messaggio ExtraGuestCharges
consente
specifica di come calcolare le tariffe per gli ospiti aggiuntivi e
per quali camere, piani tariffari e date del soggiorno devono essere applicati i relativi costi.
Requisiti di capacità
I prezzi calcolati a partire dal messaggio ExtraGuestCharges
sono validi solo se tutti
siano soddisfatti i requisiti di capacità. Vedi Transaction (Property Data)
per ulteriori informazioni.
Richieste
Sintassi
Il messaggio ExtraGuestCharges
utilizza la seguente sintassi:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges partner="partner_account_name"
id="message_ID"
timestamp="timestamp">
<HotelExtraGuestCharges hotel_id="HotelID" action="[overlay]">
<ExtraGuestCharge>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<StayDates>
<DateRange start="YYYY-MM-DD" end="YYYY-MM-DD"
days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="float"/>
<ChildAgeBrackets>
<!-- The following are different ways child charges can be specified.
Use the option that matches your system. -->
<ChildAgeBracket max_age="integer" amount="float"
exclude_from_capacity="[true|false]"/>
<ChildAgeBracket max_age="integer" percentage="float"
exclude_from_capacity="[true|false]"
counts_as_base_occupant="[never|preferred|always]"/>
<ChildAgeBracket max_age="integer" discount_amount="float"
exclude_from_capacity="[true|false]"
counts_as_base_occupant="[never|preferred|always]"/>
</ChildAgeBrackets>
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Elementi e Attributi
Il messaggio ExtraGuestCharges
contiene i seguenti elementi e
attributi:
Elemento / @attributo | Occorrenze | Tipo | Descrizione |
---|---|---|---|
ExtraGuestCharges | 1 | Complex element | L'elemento principale di questo messaggio. |
ExtraGuestCharges / @partner | 1 | string | L'account partner per questo messaggio. Questo valore di stringa corrisponde alla
Partner key valore elencato in
Impostazioni account di Hotel Center.
Nota: se hai un backend che fornisce feed per
più account, questo valore deve corrispondere a |
ExtraGuestCharges / @id | 1 | string | Un identificatore univoco per questo messaggio di richiesta. Questo valore viene restituito
nel messaggio di risposta. I caratteri consentiti sono a-z ,
A-Z , 0-9 , _ (trattino basso) e
- (trattino). |
ExtraGuestCharges / @timestamp | 1 | DateTime | La data e l'ora di creazione di questo messaggio. |
ExtraGuestCharges / HotelExtraGuestCharges | 0..n | HotelExtraGuestCharges | Contenitore degli addebiti per una singola proprietà. |
ExtraGuestCharges / HotelExtraGuestCharges / @hotel_id | 1 | string | L'identificatore univoco della struttura. Questo valore deve corrispondere alla
ID hotel specificato utilizzando
<id> nell'elemento <listing>
nel feed elenco hotel. L'ID hotel è indicato anche in Hotel Center. |
ExtraGuestCharges / HotelExtraGuestCharges / @action | 0..1 | enum | Specifica il modo in cui viene applicato l'aggiornamento. Solo overlay è
e il valore predefinito è overlay. Eventuali addebiti precedenti
viene cancellata prima di applicare l'aggiornamento. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge | 0..99 | ExtraGuestCharge | Una singola serie di addebiti per una proprietà. Può contenere: Restrizioni sulla modalità di applicazione degli addebiti e sulle relative modalità calcolato in base all'età o alla categoria degli ospiti. Ogni |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets | 1 | AgeBrackets | Un contenitore di fasce d'età per calcolare gli addebiti in base all'età o categoria di ospiti. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge | 0..1 | AdultCharge | Contenitore per il costo di un adulto aggiuntivo. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge / @amount | 0..1 | float | Un valore decimale positivo che specifica l'importo fisso da addebitato per un adulto aggiuntivo. Questo addebito utilizza la stessa valuta quello specificato per le tariffe per notte. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets | 0..1 | ChildAgeBrackets | Contenitore per addebiti secondari aggiuntivi. Queste fasce d'età possono includere solo coprono la fascia d'età compresa tra 0 e 17 anni. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket | 1..99 | ChildAgeBracket | Un addebito valido per i bambini di una specifica fascia d'età. Questi
deve essere ordinato dal più basso max_age al più alto
max_age . L'importo da addebitare può essere specificato utilizzando
amount , percentage o
discount_amount . Uno di questi attributi deve essere
specificato per ogni <ChildAgeBracket> .
|
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age | 1 | integer | L'età massima per la quale sono specificati gli addebiti
<ChildAgeBracket> . L'età minima è zero
se non sono specificati altri <ChildAgeBracket>
prima di questa. Altrimenti è uno più grande della parentesi precedente
età massima. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @exclude_from_capacity | 1 | boolean | Un valore booleano che indica se un figlio in questa fascia di età deve vengono conteggiate nella capacità totale e nella capacità per bambini di una stanza. Questi le capacità possono essere impostate con Transaction(Property Data). Ad esempio, bambini al di sotto di una determinata età potrebbe non essere necessario conteggiare la capacità del figlio. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount | 0..1 | float | Un valore decimale non negativo che specifica l'importo fisso da addebitato per un altro bambino in questa fascia. Questo addebito utilizza la stessa valuta specificata per le tariffe per notte. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @percentage | 0..1 | float | Un valore decimale compreso tra 1 e 99 che specifica la percentuale di un prezzo per adulti che dovrebbe essere addebitato per un bambino aggiuntivo in questa parentesi quadra aperta. Questo addebito utilizza la stessa valuta specificata per tariffe per notte. Consulta la discussione in |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @discount_amount | 0..1 | float | Un valore decimale positivo che specifica uno sconto fisso di sconto sul prezzo di un adulto per un bambino aggiuntivo di questa fascia. Questo addebito utilizza la stessa valuta specificata per la notte tariffe. In generale, il costo per un bambino in questa fascia viene calcolato
detraendo l'importo fisso dal "prezzo unitario". Il prezzo unitario è
discussi più dettagliatamente nel |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @counts_as_base_occupant | 0..1 | string | Se L'obiettivo è ottenere un "prezzo unitario" da cui l'effettiva per calcolare l'addebito.
Il valore di questo attributo deve essere uno tra
|
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes | 0..1 | RoomTypes | Contenitore di un elenco dei tipi di camera a cui si applicano gli addebiti.
Gli addebiti vengono applicati a ogni <RoomType>
specificato. Se <RoomTypes> non è specificato,
I costi si applicano a tutte le camere all'interno della proprietà specificata. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType | 1..n | RoomType | Specifica un tipo di camera. Il tipo di camera è definito in
<RoomData> elemento in un
Transazione
(Property Data) a cui viene fatto riferimento tramite il relativo
<RoomID> valore. (È <RoomID>
viene indicato anche dall'attributo InvTypeCode in
messaggi di OTA_HotelRateAmountNotifRQ.) |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType / @id | 1 | string | L'identificatore univoco dell'inventario (tipo di camera). Questo valore viene mappato
a <RoomID> in un messaggio Transaction (Property Data).
Il numero massimo di caratteri consentiti è 50. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans | 0..1 | RatePlans | Contenitore di un elenco di piani tariffari a cui si applicano gli addebiti.
Se <RatePlans> non è specificato, gli addebiti
si applica a tutti i piani tariffari. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan | 1..n | RatePlan | Specifica un piano tariffario. Un piano tariffario è definito da una combinazione di pacchetto, tariffe e disponibilità, come definiti nella sezione Transazione (Dati della proprietà), OTA_HotelRateAmountNotifRQ e OTA_HotelAvailNotifRQ e come identificato dal valore |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan / @id | 1 | string | L'identificatore univoco del piano tariffario. Questo valore viene mappato
Valore PackageID in <PackageData>
in un messaggio Transaction (Property Data) e
Attributo RatePlanCode in
<StatusApplicationControl> in entrambi
<OTA_HotelRateAmountNotifRQ> e
<OTA_HotelAvailNotifRQ> messaggi.
Il numero massimo di caratteri consentiti è 50. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates | 0..1 | StayDates | Un contenitore di uno o più intervalli di date che determinano il modo in cui si applicano addebiti. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange | 1..99 | DateRange | Un intervallo di date che specifica le date in cui deve essere applicata la promozione. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @start | 0..1 | Date | La data di inizio (in base al fuso orario della proprietà), inclusa, di
l'intervallo di date. Questa data deve essere precedente o uguale alla data
Data end . Se start non è specificato, la data
è di fatto illimitato in termini di data di inizio. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @end | 0..1 | Date | La data di fine (in base al fuso orario della proprietà), inclusa, della data
intervallo di date. Questa data deve essere uguale o successiva alla data start
data. Se end non è specificato, la data
è effettivamente illimitato in termini di data di fine. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @days_of_week | 0..1 | string | I giorni della settimana consentiti nell'intervallo di date. In caso contrario specificato, sono consentiti tutti i giorni nell'intervallo di date. Ciascuna nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica determinati giorni della settimana sono consentiti nell'intervallo di date. I caratteri validi sono:
È valida qualsiasi combinazione di caratteri. |
Esempi
Addebiti per adulti
Gli addebiti per gli adulti aggiuntivi possono essere espressi solo come importi fissi. La
l'esempio seguente mostra un messaggio ExtraGuestCharges
che specifica "adult"
addebiti:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<StayDates />
<AgeBrackets>
<AdultCharge amount="50" />
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Ecco le tariffe corrispondenti:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
EchoToken="12345678"
TimeStamp="2020-05-19T20:50:37-05:00"
Version="3.0">
<RateAmountMessages HotelCode="ABC">
<RateAmountMessage>
<StatusApplicationControl Start="2020-05-18"
End="2020-05-23"
InvTypeCode="RoomID_1"
RatePlanCode="PackageID_1"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="100.00"
CurrencyCode="USD"
NumberOfGuests="1"/>
<BaseByGuestAmt AmountAfterTax="110.00"
CurrencyCode="USD"
NumberOfGuests="2"/>
<BaseByGuestAmt AmountAfterTax="120.00"
CurrencyCode="USD"
NumberOfGuests="3"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
Quando un utente cerca quattro adulti su Google, la tariffa totale sarà pari a 170 = 120 + 50.
120 proviene dalla tariffa di <BaseByGuestAmt>
con NumberOfGuests="3"
e 50
proviene da AdultCharge amount="50"
.
Addebiti per bambini
Gli addebiti per i bambini sono espressi in fasce di età fino a 17 anni e possono essere espressi in importi fissi, percentuali o sconti.
L'esempio seguente mostra un messaggio ExtraGuestCharges
che specifica
addebiti per bambini:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<AgeBrackets>
<ChildAgeBrackets>
<ChildAgeBracket max_age="3" percentage="10"
counts_as_base_occupant="never" />
<ChildAgeBracket max_age="10" percentage="30"
counts_as_base_occupant="preferred"/>
<ChildAgeBracket max_age="17" discount_amount="10"
counts_as_base_occupant="always" />
</ChildAgeBrackets>
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Ecco le tariffe corrispondenti:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
EchoToken="12345678"
TimeStamp="2020-05-19T20:50:37-05:00"
Version="3.0">
<RateAmountMessages HotelCode="ABC">
<RateAmountMessage>
<StatusApplicationControl Start="2020-05-18"
End="2020-05-23"
InvTypeCode="RoomID_1"
RatePlanCode="PackageID_1"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="100.00"
CurrencyCode="USD"
NumberOfGuests="1"/>
<BaseByGuestAmt AmountAfterTax="110.00"
CurrencyCode="USD"
NumberOfGuests="2"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
```
1. Suppose you want the total price for 2 adults and 1 child of 2 years
of age.
Children aged 0-3 are never included in the rate's occupancy,
so here you should take the double occupancy rate and divide by 2 to
get the unit price. Then, multiply by the percentage rate and sum
with the rate to get the total price.
`unit price ` = 110 / 2 = 55
`total price` = 110 + 55 * 0.1 = 115.5
1. Suppose you want the total price for 1 adult and 2 children, both of 5
years of age.
Children aged 4-10 are preferably included in the rate's
occupancy. you should start by looking for a 3 adult rate since both
children are preferably included in the rate's occupancy. Since
that doesn't exist you should fall back to the 2 adult rate and then,
take this rate and divide by two to get the unit price. Finally,
multiply by the percentage rate and sum with the scaled rate to
get the total price.
`unit price` = 110 / 2 = 55
`total price` = 55 + 55 * 0.3 + 55 * 0.3 = 88
1. Suppose you want the total price for 1 adult and 1 child of 17
years of age.
Children aged 11-17 are always included in the rate's occupancy, so,
in this case, take the double occupancy rate and divide by 2 to get
the unit price. Then, deduct it by the discount amount and sum with
the scaled rate to get the total price.
`unit price` = 110 / 2 = 55
`total price` = 55 + (55 - 10) = 100
Limitazioni degli addebiti
Tutti i tipi di limitazioni sono facoltativi e una qualsiasi combinazione di questi può essere in uso.
L'esempio seguente mostra un messaggio ExtraGuestCharges
che specifica
restrizioni:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<RoomTypes>
<RoomType id="queen" />
<RoomType id="king" />
</RoomTypes>
<RatePlans>
<RatePlan id="free-wifi" />
<RatePlan id="hot-breakfast" />
</RatePlans>
<StayDates>
<DateRange start="2020-09-01" end="2020-09-14"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="50" />
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Il messaggio riportato sopra specifica che il costo di qualsiasi prodotto deve essere addebitato agli adulti con tipo di camera "queen" o "re" con piano tariffario "Wi-Fi gratuito" o "colazione calda" per le date dal 1° settembre 2020 al 14 settembre 2020.
Addebiti sovrapposti
Questa sezione mostra un esempio di messaggio non valido che specifica per le stesse combinazioni di date e prodotti.
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<RoomTypes>
<RoomType id="queen" />
</RoomTypes>
<RatePlans>
<RatePlan id="free-wifi" />
</RatePlans>
<StayDates>
<DateRange start="2020-09-01" end="2020-09-14"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="50" />
</AgeBrackets>
</ExtraGuestCharge>
<ExtraGuestCharge>
<RoomTypes>
<RoomType id="queen" />
<RoomType id="king" />
</RoomTypes>
<RatePlans>
<RatePlan id="free-wifi" />
<RatePlan id="hot-breakfast" />
</RatePlans>
<StayDates>
<DateRange start="2020-09-01" end="2020-09-05"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="20" />
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Il messaggio riportato sopra non è valido perché il primo <ExtraGuestCharge>
specifica che "queen" e "Wi-Fi gratuito" per il periodo dal 1° al 14 settembre
adulti in più 50. Il secondo <ExtraGuestCharge>
specifica che qualsiasi valore di "queen" o "re" con una qualsiasi di "Wi-Fi gratuito" o
"colazione calda" dal 1° al 5 settembre si applica un supplemento di 20 adulti.
Ci sono addebiti sovrapposti per "regina" e "Wi-Fi gratuito" per il periodo dal 1° settembre
5 e la differenza tra la possibilità di addebitare 20 o 50 notti per un adulto in più.
Risposte
Sintassi
Il messaggio ExtraGuestChargesResponse
utilizza quanto segue:
sintassi:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues will be populated. -->
<Success/>
<Issues>
<Issue code="issue_code" status="issue_type">issue_description</Issue>
</Issues>
</ExtraGuestChargesResponse>
Elementi e Attributi
Il messaggio ExtraGuestChargesResponse
contiene i seguenti elementi
e attributi:
Elemento / @attributo | Occorrenze | Tipo | Descrizione |
---|---|---|---|
ExtraGuestChargesResponse | 1 | Complex element | L'elemento principale che indica l'esito positivo o negativo di un
Messaggio di richiesta di ExtraGuestCharges . |
ExtraGuestChargesResponse / @timestamp | 1 | DateTime | La data e l'ora di creazione di questo messaggio. |
ExtraGuestChargesResponse / @id | 1 | string | L'identificatore univoco del messaggio ExtraGuestCharges associato. |
ExtraGuestChargesResponse / @partner | 1 | string | L'account partner per questo messaggio. |
ExtraGuestChargesResponse / Success | 0..1 | Success | Indica che il messaggio ExtraGuestCharges è stato elaborato correttamente
senza avvisi o errori.
|
ExtraGuestChargesResponse / Issues | 0..1 | Issues | Un container per uno o più problemi riscontrati durante l'elaborazione
ExtraGuestCharges messaggio.
|
ExtraGuestChargesResponse / Issues / Issue | 1..n | Issue | La descrizione di un avviso, un errore o un errore riscontrato durante
elaborazione del messaggio ExtraGuestCharges in corso... Puoi trovare i dettagli su questi problemi
nella sezione Messaggi di errore relativi allo stato dei feed. |
ExtraGuestChargesResponse / Issues / Issue / @code | 1 | integer | L'identificatore del problema. |
ExtraGuestChargesResponse / Issues / Issue / @status | 1 | enum | Il tipo di problema riscontrato. I valori validi sono |
Esempi
Operazione riuscita
Di seguito è riportata una risposta a un modulo elaborato correttamente
ExtraGuestCharges
messaggio.
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</ExtraGuestChargesResponse>
Problemi
Di seguito è riportata una risposta a un messaggio ExtraGuestCharges
non elaborato
a causa di errori.
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</ExtraGuestChargesResponse>