Les tarifs envoyés via <OTA_HotelRateAmountNotifRQ>
peuvent être
modifié pour tenir compte des adultes et des enfants en plus du tarif d'origine
le nombre d'invités. Le message ExtraGuestCharges
permet
spécifications relatives au calcul des tarifs pour ces clients supplémentaires
les chambres, les plans tarifaires et les dates de séjour auxquels leurs frais doivent s'appliquer.
Exigences concernant la capacité
Les prix calculés à partir du message ExtraGuestCharges
ne sont valides que si tous
les exigences de capacité sont satisfaites. Consultez la section Transaction (Données sur un établissement).
pour en savoir plus.
Demandes
Syntaxe
Le message ExtraGuestCharges
utilise la syntaxe suivante:
<?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>
Éléments et Attributs
Le message ExtraGuestCharges
contient les éléments suivants et
Attributs:
Élément / @Attribut | Occurrences | Type | Description |
---|---|---|---|
ExtraGuestCharges | 1 | Complex element | Élément racine de ce message. |
ExtraGuestCharges / @partner | 1 | string | Compte du partenaire pour ce message. Cette valeur de chaîne est la
Partner key valeur listée sur
le
Page "Paramètres du compte" dans Hotel Center.
Remarque:Si vous disposez d'un backend qui fournit des flux pour
plusieurs comptes, cette valeur doit correspondre à l' |
ExtraGuestCharges / @id | 1 | string | Identifiant unique de ce message de requête. Cette valeur est renvoyée
dans le message de réponse. Caractères autorisés : a-z ,
A-Z , 0-9 , _ (trait de soulignement) et
- (tiret) |
ExtraGuestCharges / @timestamp | 1 | DateTime | Date et heure de création de ce message. |
ExtraGuestCharges / HotelExtraGuestCharges | 0..n | HotelExtraGuestCharges | Conteneur pour les frais d'un seul établissement. |
ExtraGuestCharges / HotelExtraGuestCharges / @hotel_id | 1 | string | Identifiant unique de l'établissement. Cette valeur doit correspondre au
Identifiant de l'hôtel spécifié à l'aide de
<id> dans l'élément <listing>
dans le flux Hotel List Feed. L'ID de l'hôtel est également indiqué dans Hotel Center. |
ExtraGuestCharges / HotelExtraGuestCharges / @action | 0..1 | enum | Indique la manière dont la mise à jour est appliquée. Seul overlay est
prises en charge, et la valeur par défaut est la superposition. Tous les frais précédents pour cet élément
est effacée avant l'application de la mise à jour. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge | 0..99 | ExtraGuestCharge | Un seul ensemble de frais pour un établissement. Peut contenir des restrictions sur les débits et les modalités d'application des frais calculé par âge ou par catégorie de clients. Chaque |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets | 1 | AgeBrackets | Conteneur de tranches d'âge permettant de calculer les frais en fonction de l'âge ou catégorie d'invité. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge | 0..1 | AdultCharge | Conteneur des frais pour un adulte supplémentaire. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge / @amount | 0..1 | float | Valeur décimale positive qui spécifie le montant fixe à facturé pour un adulte supplémentaire. Ces frais sont libellés dans la même devise que celui spécifié pour les tarifs par nuit. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets | 0..1 | ChildAgeBrackets | Conteneur pour des frais enfants supplémentaires. Ces tranches d'âge ne peuvent couvrent la tranche d’âge 0-17 inclus. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket | 1..99 | ChildAgeBracket | Frais qui s'appliquent aux enfants d'une tranche d'âge spécifique. Ces
doit être classé par ordre croissant (max_age )
max_age Le montant à facturer peut être spécifié à l'aide de
amount , percentage ou
discount_amount Un seul de ces attributs doit être
spécifié pour chaque <ChildAgeBracket> .
|
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age | 1 | integer | Âge maximal pour lequel les frais spécifiés dans
<ChildAgeBracket> peut s'appliquer. L'âge minimal est de zéro
si aucun autre <ChildAgeBracket> n'est spécifié
avant celui-ci. Sinon, elle est d'une valeur plus grande que la plage précédente.
l'âge maximal. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @exclude_from_capacity | 1 | boolean | Booléen indiquant si un enfant de cette tranche d'âge doit sont comptabilisées dans la capacité totale d'une chambre et du nombre d'enfants. Ces les capacités peuvent être définies avec Transaction(Données sur un établissement). Par exemple, les bébés n'ayant pas atteint un certain âge n'ont peut-être pas besoin d'être comptabilisées dans la capacité enfant. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount | 0..1 | float | Valeur décimale non négative qui indique le montant forfaitaire à facturé pour un enfant supplémentaire de cette tranche d'âge. Ces frais utilisent le dans la même devise que celle spécifiée pour les tarifs par nuit. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @percentage | 0..1 | float | Valeur décimale comprise entre 1 et 99 qui indique le pourcentage d'une prix adulte qui devrait être facturé pour un enfant supplémentaire dans cette crochet fermant. Ces frais sont libellés dans la même devise que celle indiquée pour tarifs par nuit. Pour en savoir plus, consultez la discussion sous |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @discount_amount | 0..1 | float | Valeur décimale positive indiquant une remise fixe de remise sur le prix adulte pour un enfant supplémentaire de cette tranche. Ces frais sont libellés dans la même devise que celle spécifiée pour la tarification par nuit. taux de conversion. En général, les frais pour un enfant de cette tranche d'âge sont calculés comme suit :
déduisant le montant fixe du "prix unitaire". Le prix unitaire est
plus en détail dans la |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @counts_as_base_occupant | 0..1 | string | Si L'objectif ici est d'obtenir un "prix unitaire" d'où proviennent les données les frais peuvent être calculés.
La valeur de cet attribut doit être
|
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes | 0..1 | RoomTypes | Conteneur pour la liste des types de chambres auxquels les frais s'appliquent.
Les frais sont appliqués à chaque <RoomType>
spécifié. Si <RoomTypes> n'est pas spécifié, le
des frais s'appliquent à toutes les chambres de l'établissement spécifié. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType | 1..n | RoomType | Spécifie un type de chambre. Un type de chambre est défini
Élément <RoomData> dans une
Transaction
(Données sur un établissement) et est référencé à l'aide de son
<RoomID> . (Il est <RoomID>
est également référencée par l'attribut InvTypeCode dans
OTA_HotelRateAmountNotifRQ.) |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType / @id | 1 | string | Identifiant unique de l'inventaire (type de chambre). Cette valeur correspond
à <RoomID> dans un message Transaction (Données sur un établissement).
Le nombre maximal de caractères autorisés est de 50. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans | 0..1 | RatePlans | Conteneur pour la liste des plans tarifaires auxquels les frais s'appliquent.
Si <RatePlans> n'est pas spécifié, les frais
s'applique à tous les plans tarifaires. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan | 1..n | RatePlan | Spécifie un plan tarifaire. Un plan tarifaire est défini par une combinaison le forfait, les tarifs et la disponibilité, tels que définis dans l'article (Données sur un établissement), OTA_HotelRateAmountNotifRQ et OTA_HotelAvailNotifRQ et tel qu'identifié par le PackageID. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan / @id | 1 | string | Identifiant unique du plan tarifaire. Cette valeur correspond au
Valeur PackageID dans <PackageData>
dans un message Transaction (Données sur un établissement),
Attribut RatePlanCode dans
<StatusApplicationControl> dans les deux cas
<OTA_HotelRateAmountNotifRQ> et
<OTA_HotelAvailNotifRQ> messages.
Le nombre maximal de caractères autorisés est de 50. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates | 0..1 | StayDates | Conteneur pour une ou plusieurs plages de dates qui déterminent la manière s'appliquent. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange | 1..99 | DateRange | Plage de dates indiquant les dates auxquelles la promotion doit être appliquée. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @start | 0..1 | Date | Date de début (en fonction du fuseau horaire de l'établissement), date de début incluse,
la plage de dates. Cette date doit être antérieure ou identique à la date
Date end . Si start n'est pas spécifié, la date
est en fait illimitée en termes de date de début. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @end | 0..1 | Date | Date de fin (en fonction du fuseau horaire de l'établissement), incluse, de l'événement
la plage de dates. Cette date doit être identique ou postérieure au start
la date de début. Si end n'est pas spécifié, la date
est en réalité illimitée en termes de date de fin. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si ce n'est pas le cas tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne indique un jour. Par exemple, « MTWHF ». spécifie que les jours de la semaine sont autorisés dans la plage de dates. Les caractères suivants sont acceptés:
Toute combinaison de caractères est valide. |
Exemples
Frais pour adultes
Les frais pour les adultes supplémentaires ne peuvent être exprimés que sous forme de montants fixes. La
L'exemple suivant montre un message ExtraGuestCharges
spécifiant le contenu réservé aux adultes
frais:
<?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>
Voici les tarifs correspondants:
<?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>
Lorsqu'un utilisateur recherche quatre adultes sur Google, le tarif total est 170 = 120 + 50.
120 provient du tarif <BaseByGuestAmt>
avec NumberOfGuests="3"
et 50
provient de AdultCharge amount="50"
.
Frais enfant
Les frais facturés aux enfants sont exprimés en tranches d'âge jusqu'à 17 ans et peuvent être exprimés en montants fixes, pourcentages ou remises.
L'exemple suivant montre un message ExtraGuestCharges
qui spécifie
frais enfants:
<?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>
Voici les tarifs correspondants:
<?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
Restrictions relatives aux frais
Tous les types de restrictions sont facultatifs, et il est possible de les combiner utilisé.
L'exemple suivant montre un message ExtraGuestCharges
qui spécifie
restrictions:
<?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>
Le message ci-dessus précise que tous les produits doivent être facturés aux adultes dont le type de chambre est "reine" ou "roi" avec l'offre "Wi-Fi gratuit" ou "petit-déjeuner chaud" pour la période allant du 1er au 14 septembre 2020.
Chevauchement de frais
Cette section présente un exemple de message non valide spécifiant différents pour les mêmes combinaisons de dates et de produits.
<?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>
Le message ci-dessus n'est pas valide, car le premier <ExtraGuestCharge>
spécifie que "reine" et "Wi-Fi gratuit" pour la période du 1er au 14 septembre devrait être facturée
d'adultes supplémentaires de 50 ans. Le deuxième <ExtraGuestCharge>
spécifie que l'une des valeurs ou "roi" avec l'une des options "Wi-Fi gratuit" ou
"petit-déjeuner chaud" pour la période du 1er au 5 septembre devrait entraîner des frais supplémentaires de 20 adultes.
Des frais se chevauchent pour "reine" et "Wi-Fi gratuit" du 1er septembre au
5 et un conflit entre le fait de facturer 20 ou 50 $ pour un adulte supplémentaire.
Réponses
Syntaxe
Le message ExtraGuestChargesResponse
utilise les éléments suivants :
syntaxe:
<?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>
Éléments et Attributs
Le message ExtraGuestChargesResponse
contient les éléments suivants :
et attributs:
Élément / @Attribut | Occurrences | Type | Description |
---|---|---|---|
ExtraGuestChargesResponse | 1 | Complex element | Élément racine indiquant le succès ou les problèmes d'une réponse
Message de requête ExtraGuestCharges . |
ExtraGuestChargesResponse / @timestamp | 1 | DateTime | Date et heure de création de ce message. |
ExtraGuestChargesResponse / @id | 1 | string | Identifiant unique du message ExtraGuestCharges associé. |
ExtraGuestChargesResponse / @partner | 1 | string | Compte du partenaire pour ce message. |
ExtraGuestChargesResponse / Success | 0..1 | Success | Indique que le message ExtraGuestCharges a bien été traité
sans avertissement, erreur ni échec.
|
ExtraGuestChargesResponse / Issues | 0..1 | Issues | Conteneur pour un ou plusieurs problèmes rencontrés lors du traitement de la
Message ExtraGuestCharges .
|
ExtraGuestChargesResponse / Issues / Issue | 1..n | Issue | La description d'un avertissement, d'une erreur ou d'un échec rencontré pendant
Traitement du message ExtraGuestCharges ... Pour en savoir plus sur ces problèmes,
dans Messages d'erreur concernant l'état du flux. |
ExtraGuestChargesResponse / Issues / Issue / @code | 1 | integer | Identifiant du problème. |
ExtraGuestChargesResponse / Issues / Issue / @status | 1 | enum | Type de problème rencontré. Les valeurs valides sont |
Exemples
Opération réussie
Vous trouverez ci-dessous une réponse à une requête
Message ExtraGuestCharges
.
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</ExtraGuestChargesResponse>
Problèmes
La réponse ci-dessous est une réponse à un message ExtraGuestCharges
non traité.
en raison d'erreurs.
<?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>