Promotions

Présentation

Cette API vous permet de spécifier des remises possibles. Parmi les promotions spécifiées, Google applique la promotion ou l'ensemble de promotions éligibles qui conduit au le prix le plus bas. Si vous recherchez une API compatible avec des ajustements de prix arbitraires pouvant augmenter ou diminuer le prix lorsque les conditions sont remplies, envisagez notre API Rate Modifications. Notez que si les deux API sont présentes, les modifications de tarif sont appliquées avant promotions.

Demandes

Syntaxe

Le message Promotions utilise la syntaxe suivante:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
            id="message_ID"
            timestamp="timestamp">
  <HotelPromotions hotel_id="HotelID" action="[overlay]">
    <Promotion id="PromotionID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
      </BookingDates>
      <BookingWindow min="integer_or_duration" max="integer_or_duration"/>
      <Ceiling amount_per_night="float"/>
      <Floor amount_per_night="float"/>
      <CheckinDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckoutDates>
      <!-- Specify only one of percentage, fixed_amount, fixed_amount_per_night,
           fixed_price, or fixed_price_per_night; applied_nights is only used
           with percentage, fixed_amount_per_night, and fixed_price_per_night. -->
      <Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float"
                fixed_price="float" fixed_price_per_night="float"
                applied_nights="integer_1_to_99" rank="integer_1_to_99">
        <!-- FreeNights may not be used in conjunction with attributes on Discount -->
        <FreeNights stay_nights="integer" discount_nights="integer"
                    discount_percentage="float" night_selection="[cheapest|last]"
                    repeats="boolean"/>
      </Discount>
      <!-- Exactly one of Discount or BestDailyDiscount must be specified.
           Specify only one of percentage, fixed_amount, or fixed_price. -->
      <BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <InventoryCount min="integer" max="integer"/>
      <LengthOfStay min="integer" max="integer"/>
      <MembershipRateRule id="RateRuleID"/>
      <MinimumAmount before_discount="integer"/>
      <Occupancy min="integer" max="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <Stacking type="[any|base|none|second]"/>
      <StayDates application="[all|any|overlap]">
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

Éléments et attributs

Le message Promotions contient les éléments et les attributs suivants :

Élément / @Attribut Occurrences Type Description
Promotions 1 Complex element Élément racine d'un message promotionnel.
Promotions / @partner 1 string Compte partenaire pour ce message. Cette valeur de chaîne est la "Clé partenaire" valeur indiquée sur le <ph type="x-smartling-placeholder"></ph> Page "Paramètres du compte" dans Hotel Center.

Si vous disposez d'un backend qui fournit des flux plusieurs comptes, cette valeur doit correspondre à l'ID spécifiée dans <RequestorID> de votre <OTA_HotelRateAmountNotifRQ> et <OTA_HotelAvailNotifRQ> messages pour le même de service.

Promotions / @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 et _ (trait de soulignement) et - (trait d'union).
Promotions / @timestamp 1 DateTime Date et heure de création de ce message.
Promotions / HotelPromotions 0..n HotelPromotions

Promotions pour un établissement. Chaque promotion s'applique à un seul établissement.

Sauf si <Stacking> est utilisé, la promotion offrant la plus grande remise est appliquée à la réservation plusieurs promotions sont éligibles.

Promotions / HotelPromotions / @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.
Promotions / HotelPromotions / @action 0..1 enum

Si cet attribut est spécifié, la valeur doit être "overlay". Lorsque la valeur est "overlay", toutes les promotions stockées sont supprimées avant le stockage des promotions spécifiées dans le message actuel.

S'il n'est pas spécifié, chaque promotion spécifiée dans le champ est soit:

  • Added (si aucune des promotions stockées ne possède le paramètre même id)
  • Updated (si une promotion stockée a le même id)
  • Deleted (si une promotion stockée possède le même id et la valeur de l'attribut action pour la promotion spécifiée dans le message actuel est "delete")
Promotions / HotelPromotions / Promotion 0..99 Promotion

Une seule promotion pour un établissement. Notez que si action="overlay" et <Promotion> est n'est pas spécifié, toutes les promotions de l'établissement sont supprimées.

Si vous devez utiliser plus de 99 promotions, contactez votre responsable de compte technique (TAM).

Promotions / HotelPromotions / Promotion / @id 1 string Identifiant unique de la promotion. Le nombre maximal de Le nombre de caractères autorisés est de 40. Caractères autorisés : a-z, A-Z, 0-9, _ (trait de soulignement), - (trait d'union) et . (point).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

Si spécifié, la valeur doit être delete. S'il n'est pas spécifié et qu'aucune promotion ayant le même id n'est stockée, cette promotion est stockée. Sinon, s'il n'est pas spécifié et qu'une promotion ayant le même id est stockée, la promotion existante est mise à jour.

Si delete est spécifié, la promotion stockée avec le paramètre le même id est supprimé. En cas d'utilisation de delete, n'incluez aucun élément enfant dans <Promotion>. De plus, delete n'est pas autorisé conjointement avec <HotelPromotions action="overlay"/>.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates Conteneur pour une ou plusieurs plages qui définissent le moment auquel la réservation doit être effectuée pour que la promotion soit appliquée.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange Plage indiquant le moment auquel la réservation doit être effectuée pour que la promotion soit appliquée.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date ou DateTime

Date de début ou date/heure (en fonction du fuseau horaire de la propriété) inclus, de la plage.

  • La date ou l'heure spécifiée par start doit être antérieure (ou identique) à la date ou l'heure spécifiée par end.
  • Si start n'est pas spécifié, la plage est en fait illimitée en ce qui concerne l'heure de début.
  • Si start est renseigné en tant que date "AAAA-MM-JJ", il est interprétée comme la date et l'heure "AAAA-MM-JJT00:00:00".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date ou DateTime

Date ou date/heure de fin (en fonction du fuseau horaire de la propriété) inclus, de la plage.

  • La date ou la date/heure spécifiées par end doit être postérieure à la date du jour (ou identiques) à la date ou à la date et à l'heure spécifiées par start
  • Si end n'est pas spécifié, la plage est effectivement et il n'y a aucune limite quant à l'heure de fin.
  • Si end est défini comme date "AAAA-MM-JJ", il est interprétée comme la date et l'heure "AAAA-MM-JJT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / 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 spécifie 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:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Spécifie la période au cours de laquelle la réservation doit être effectuée par rapport au la date d'arrivée (en fonction du fuseau horaire de l'établissement). Par exemple, la période de réservation peut être définie sur au moins 7 jours, mais pas plus de 180 jours. avant l'arrivée.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration Durée minimale avant l'arrivée où la réservation doit être effectuée pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié ou si sa valeur est de 0, il n'y a pas de minimum.

Les types de valeurs reconnus sont les suivants :

  • Entier:nombre de jours avant l'arrivée la date de début. Par exemple, la valeur 30 indique la promotion ne s'applique qu'aux réservations effectuées au moins 30 jours avant le date d'arrivée.
  • Durée ISO 8601 (jours, heures et minutes) : le nombre de jours (et éventuellement des heures/minutes) avant la date d'arrivée. Pour Par exemple, la valeur P30D indique que la promotion ne concerne que s'applique aux réservations effectuées au moins 30 jours avant la date d'arrivée. A d'une valeur de P30DT6H, vous devez réserver au plus tard à 18h le le 30e jour avant l'arrivée.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration Nombre maximal de jours avant l'arrivée où la réservation doit être effectuée pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié ou si sa valeur est de 0, il n'y a pas de limite maximale.

Les types de valeurs reconnus sont les suivants :

  • Entier:nombre de jours avant l'arrivée la date de début. Par exemple, la valeur 30 indique la promotion ne s'applique qu'aux réservations effectuées jusqu'à 30 jours avant le date d'arrivée.
  • Durée ISO 8601 (jours, heures et minutes) : le nombre de jours (et éventuellement des heures/minutes) avant la date d'arrivée. Pour Par exemple, la valeur P30D indique que la promotion ne concerne que s'applique aux réservations effectuées au plus tard 30 jours avant la date d'arrivée. A d'une valeur de P30DT6H nécessite une réservation à partir de 18 h le le 30e jour avant l'arrivée.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Définit les restrictions sur la valeur maximale sur laquelle un tarif peut être défini. après l'application des promotions.

Les promotions doivent toujours spécifier un <Discount> ou un <BestDailyDiscount>, afin de créer une promotion n'applique qu'un <Ceiling>, vous pouvez définir <Discount> avec un percentage de 0

Si l'empilement est configuré, plusieurs promotions avec <Ceiling> peut s'appliquer à un seul séjour. Chaque promotion s'applique à son prix réduit, immédiatement suivi de son plafond. La l'exemple suivant montre comment chaque plafond contribue à la le calcul des promotions dans la pile.

Exemple :

Prix d'un séjour d'une nuit où AmountBeforeTax est 100 et que deux promotions sont empilées:

  1. Promotion avec le type de pile base, un fixed_amount sur 25, et un plafond amount_per_night sur 60
  2. Promotion avec type d'empilement second, fixed_amount de 25 et un plafond amount_per_night de 90

Voici l'ordre de calcul:

  1. La promotion base est appliquée en premier et réduit le prix de AmountBeforeTax à 75, mais le plafond le réduit ensuite à 60.
  2. La promotion second propose une remise sur AmountBeforeTax de 60 à 35. C'est en dessous du plafond de 90, le deuxième plafond ne sera donc pas appliqué. Le taux final est 35.

Le fait que 60 soit un plafond global plus strict n'a pas d'importance puisque elle n'est valable que pour sa propre promotion, et il n'est pas possible qui s'applique à l'ensemble de la pile de promotions.

Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night 1 float

Montant maximal fixé pour un tarif par nuit après le est appliquée.

Si un élément <Floor> est également spécifié, doit être défini sur une valeur supérieure ou égale à Attribut amount_per_night dans <Floor>

amount_per_night s'applique aux taxes et aux frais lorsqu'ils sont inclus dans le tarif par nuit avec AmountAfterTax, mais et non celles spécifiées via TaxFeeInfo.

Promotions / HotelPromotions / Promotion / Floor 0..1 Floor

Définit les restrictions sur la valeur minimale pour laquelle un tarif peut être défini. après l'application des promotions.

Les promotions doivent toujours spécifier un <Discount> ou un <BestDailyDiscount>, afin de créer une promotion n'applique qu'un <Floor>, vous pouvez définir <Discount> avec un percentage de 0

La logique <Floor> s'applique toujours de <FreeNights> de remise, même si la nuit sans frais inclut Remise de 100% appliquée.

Si l'empilement est configuré, plusieurs promotions avec <Floor> peut s'appliquer à un seul séjour. Chaque promotion applique sa remise, immédiatement suivie de son prix plancher. La L'exemple suivant montre comment chaque étage contribue à le calcul des promotions dans la pile.

Exemple :

Prix d'un séjour d'une nuit où AmountBeforeTax est 100 et que deux promotions sont empilées:

  1. Promotion avec le type d'empilement base, un fixed_amount de 25 et un amount_per_night de 90
  2. Promotion avec le type de pile second, fixed_amount sur 25, et un étage amount_per_night sur 60

Voici l'ordre de calcul:

  1. La promotion base est appliquée en premier et les remises AmountBeforeTax à 75, mais la valeur plancher l'augmente. jusqu'à 90.
  2. La promotion second propose une remise sur AmountBeforeTax de 90 à 65. C'est au-dessus du sol de 60, le deuxième étage ne sera donc pas appliqué. Le taux final est de 65.

Le fait que 90 soit un prix plancher global plus strict n'a pas d'importance puisque elle n'est valable que pour sa propre promotion, et il n'est pas possible qui s'étend sur l'ensemble de la pile de promotions.

Promotions / HotelPromotions / Promotion / Floor / @amount_per_night 1 float

Montant minimal fixé pour un tarif par nuit après le est appliquée.

Si un élément <Ceiling> est également spécifié, doit être défini sur une valeur inférieure ou égale à Attribut amount_per_night dans <Ceiling>

amount_per_night s'applique aux taxes et aux frais lorsqu'ils sont inclus dans le tarif par nuit avec AmountAfterTax, mais et non celles spécifiées via TaxFeeInfo.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates Conteneur pour une ou plusieurs plages de dates qui définissent le moment auquel l'arrivée doit avoir lieu pour que la promotion soit appliquée.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

Plage de dates indiquant le moment auquel l'arrivée doit avoir lieu pour que la promotion être appliqué. Cet élément n'est pas obligatoire si vous supprimez un ou plusieurs promotions.

Le format YearlessDate est également accepté.

  • Si start ou end est une date sans année, les deux attributs doivent être renseignés avec une valeur sans année.
  • Les plages de dates sans année ne doivent pas coïncider avec le Nouvel An. À la place, représenter la période sous la forme de deux périodes adjacentes. Par exemple, {"12-29", "01-05"} peut être représenté par {"12-29", "12-31"} et {"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate 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 end. Si start n'est pas spécifié, la date est en fait illimitée en termes de date de début.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate 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 à la date start. Si end n'est pas spécifié, la date est en réalité illimitée en termes de date de fin.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne indique un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates.

Les caractères suivants sont acceptés:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates Conteneur pour une ou plusieurs plages de dates qui définissent le moment du départ pour que la promotion soit appliquée.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

Une plage de dates indiquant à quel moment le départ doit avoir lieu pour que la promotion être appliqué. Cet élément n'est pas obligatoire si vous supprimez une ou plusieurs promotions.

Le format YearlessDate est également accepté.

  • Si l'un des attributs start ou end est une date sans année, les deux doivent être renseignés avec une valeur sans année.
  • Les plages de dates sans année ne doivent pas coïncider avec le Nouvel An. À la place, représenter la période sous la forme de deux périodes adjacentes. Par exemple, {"12-29", "01-05"} peut être représenté par {"12-29", "12-31"} et {"01-01", "01-05"}.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate 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 plage de dates est en fait illimitée en ce qui concerne la date de début.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate 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 à la date start. Si end n'est pas spécifié, la date est en réalité illimitée en termes de date de fin.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne indique un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates.

Les caractères suivants sont acceptés:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Conteneur permettant de lister les appareils des utilisateurs éligibles à promotion. Si cet élément est spécifié, seuls les utilisateurs éligibles sur les appareils répertoriés bénéficient d'un tarif réduit. S'il n'est pas spécifié, il s'agit des utilisateurs éligibles appareil bénéficient d'un tarif réduit.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Définit un type d'appareil d'utilisateur éligible à la promotion.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum Type d'appareil. La valeur doit être desktop, tablet ou mobile.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Exactement une des valeurs suivantes : Discount ou BestDailyDiscount doit être spécifié.

Indique la remise à appliquer pour cette promotion.

Promotions / HotelPromotions / Promotion / Discount / @percentage 0..1 float

Exactement une des percentage, fixed_amount, fixed_amount_per_night, fixed_price ou fixed_price_per_night est obligatoire.

Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise. Elle s'applique à AmountAfterTax (ou AmountBeforeTax si AmountAfterTax n'est pas spécifié).

Exemples :

  • Si AmountAfterTax est égal à 100 et que percentage est de 20, alors

    taux de promotion = AmountAfterTax * (1 - pourcentage remise)

    80,00 = 100 * (1 - 0,2)

  • Si AmountBeforeTax est de 100, percentage est égal à 20 et TaxFeeInfo indique une taxe de 10, puis

    taux de promotion = AmountBeforeTax * (1 - pourcentage remise) + taxes

    90,00 = 100 x (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

Exactement une des percentage, fixed_amount, fixed_amount_per_night, fixed_price ou fixed_price_per_night est obligatoire.

Montant fixe à soustraire de la somme des AmountAfterTax tarifs par nuit (ou somme des tarifs par nuit de AmountBeforeTax si AmountAfterTax n'est pas spécifié). Il s'agit dans la même devise que le tarif par nuit. Si elle est supérieure à la valeur somme des tarifs par nuit, la valeur qui en résulte est zéro.

Exemples :

  • Si nous fixons le tarif d'un séjour d'une nuit AmountBeforeTax est de 90, AmountAfterTax est de 100, et fixed_amount est de 20, alors

    taux de promotion = AmountAfterTax - valeur fixe remise

    80.00 = 100 - 20

  • Si nous fixons le tarif d'un séjour d'une nuit AmountBeforeTax est de 100, fixed_amount est égal à 20 et que TaxFeeInfo spécifie une taxe de 8%, alors

    taux de promotion = (AmountBeforeTax - fixe (remise) * (1 + pourcentage de taxe)

    86,40 = (100 - 20) * 1,08

  • Si nous fixons le tarif d'un séjour d'une nuit AmountBeforeTax est de 50, fixed_amount de 60, et TaxFeeInfo indique une taxe de 10, alors

    taux de promotion = (AmountBeforeTax - fixe ) * taxes

    10.00 = 0 + 10

  • Si nous fixons le tarif d'un séjour de trois nuits où les valeurs AmountAfterTax sont 100, 110 et 120, et où fixed_amount est égal à 150, alors

    taux de promotion = somme(AmountAfterTax) - (fixe) remise)

    180.00 = (100 + 110 + 120) - 150

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night 0..1 float

Exactement une des percentage, fixed_amount, fixed_amount_per_night, fixed_price ou fixed_price_per_night est obligatoire.

Une remise fixe appliquée à chacun des AmountAfterTax des tarifs par nuit (ou le N le moins cher si applied_nights est spécifié). Si AmountAfterTax n'est pas spécifié, il s'applique à AmountBeforeTax Il est supposé être dans la même devise que les tarifs par nuit. Si l'attribut fixed_amount_per_night est supérieur à un tarif par nuit, ce tarif est réduit à zéro. La remise ne peut pas générer un tarif négatif.

Exemples :

  • Si nous fixons le prix d'un séjour de 3 nuits Les valeurs AmountAfterTax sont 100, 110 et 120. et fixed_amount_per_night est égal à 10, puis

    taux de promotion = somme(AmountBeforeTax - montant fixe) remise)

    300.00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • Si nous fixons le tarif d'un séjour de trois nuits où les valeurs AmountAfterTax sont 10, 50 et 100, et que fixed_amount_per_night est égal à 20, alors

    taux de promotion = somme(AmountAfterTax - montant fixe) remise)

    110.00 = (0 + (50 - 20) + (100 - 20))

Promotions / HotelPromotions / Promotion / Discount / @fixed_price 0..1 float

Exactement une des percentage, fixed_amount, fixed_amount_per_night, fixed_price ou fixed_price_per_night est obligatoire.

Si des tarifs par nuit de AmountAfterTax sont spécifiés, définit le prix du séjour, taxes et frais compris, au la valeur spécifiée. Si AmountBeforeTax est spécifié, alors que AmountAfterTax soit spécifié ou non, cela définit prix hors taxes du séjour sur la valeur spécifiée. Il est supposé être dans la même devise que les tarifs par nuit.

Si AmountAfterTax est destiné à refléter une taxe en pourcentage, définir un prix fixe pour AmountBeforeTax peut entraîner des taxes et des frais inexacts. En général, il est fortement recommandé d'utiliser TaxFeeInfo pour spécifier les taxes et les frais d'un établissement.

Exemples :

  • Si nous fixons le tarif d'un séjour d'une nuit où AmountBeforeTax est égal à 90, AmountAfterTax à 100 et fixed_price à 80, alors le tarif promotionnel est de 80.
  • Si nous fixons le tarif d'un séjour d'une nuit AmountBeforeTax est de 100, fixed_amount est de 80 et que TaxFeeInfo spécifie une taxe de 8%, alors

    taux de promotion = prix fixe * (1 + pourcentage de taxe)

    86,40 = 80 * 1,08

  • Si nous fixons le prix d'un séjour de 3 nuits Les valeurs AmountAfterTax sont 100, 110 et 120. et fixed_amount est égal à 300, puis

    taux de promotion = 300

Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night 0..1 float

Exactement une des percentage, fixed_amount, fixed_amount_per_night, fixed_price ou fixed_price_per_night est obligatoire.

Si des tarifs par nuit de AmountAfterTax sont spécifiés, définit le prix de chaque nuit de séjour, taxes et frais compris, sur la valeur spécifiée. Si AmountBeforeTax est spécifié, alors que AmountAfterTax soit spécifié ou non, cela définit prix hors taxes par nuit de séjour à la valeur spécifiée. Il est est censé être dans la même devise que les tarifs par nuit.

Si AmountAfterTax est destiné à refléter une taxe en pourcentage, définir un prix fixe pour AmountBeforeTax peut entraîner des taxes et des frais inexacts. En général, il est fortement recommandé d'utiliser TaxFeeInfo pour spécifier les taxes et les frais d'un établissement.

Si applied_nights est spécifié, le nouveau prix est appliquée aux N nuits les moins chères.

Exemples :

  • Si nous fixons le tarif d'un séjour de 2 nuits Les valeurs AmountBeforeTax sont 90, 90. Les valeurs AmountAfterTax sont 100, 100. et La valeur de fixed_price est de 80, le taux de promotion est alors de 80 + 80 = 160.
  • Si nous fixons le tarif d'un séjour de deux nuits où AmountBeforeTax est égal à 100, fixed_amount à 80 et TaxFeeInfo indique une taxe de 8 %, le tarif promotionnel est (80 + 80) * 1,08 = 172,8.
  • Si nous fixons le tarif d'un séjour de trois nuits où les valeurs AmountAfterTax sont 100, 110 et 120, et où fixed_amount est égal à 110, alors le tarif promotionnel est 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Il ne doit être utilisé qu'avec percentage ou fixed_amount_per_night.

Nombre de nuits auxquelles la remise est appliquée, à partir de le moins cher. La valeur doit être un entier compris entre 1 et 99. Si aucune valeur n'est spécifiée, s'applique à toutes les nuits.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Spécifie une remise sur certaines nuits de séjour lorsqu'une durée de séjour minimum est atteinte. Les attributs de l'élément parent Discount ne sont pas autorisés si cet élément est utilisé.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

Nombre de nuitées requises pour que la remise soit appliquée. Chaque est appliquée à un segment distinct des nuitées.

Par exemple, pour un séjour de 10 nuits où stay_nights est 4 (et repeats est vrai), alors il y a deux nuits de la première à la quatrième nuit et de la cinquième à la huitième nuit. la Les nuits 9e et 10e ne font pas partie du segment "séjour".

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Nombre de nuits à tarif réduit dans chaque segment de nuits de séjour.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float Remise appliquée aux nuits avec remise. Si cette valeur est définie sur 50, une remise de 50% est donc appliquée pour chaque nuit sélectionnée.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Doit être cheapest ou last. Si last, puis les nuits à la fin du segment de séjour nuits à tarif réduit. Si la valeur est cheapest, alors le tarif le moins cher une remise est appliquée.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Possibilité d'appliquer la remise à plusieurs nuitées segments. Si la valeur est false, seul le segment des nuitées à au début du séjour fait l'objet d'une remise. Si la valeur est true, tous les segments de nuits de séjour sont soumis à une remise.

Par exemple, si stay_nights correspond à 4 et si l'itinéraire est défini sur 10. nuits, si repeats correspond à true, alors 2 les segments font l'objet d'une remise (nuits 1-4 et nuits 5-8). mais si La valeur de "repeats" est false, alors qu'un seul segment l'est à tarif réduit (du 1er au 4e nuits).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Attribue un classement à cette promotion et active la sélection avec classement, où seule la promotion avec le classement le plus bas est sélectionnée pour être appliquée. Valeurs doit être comprise entre 1 et 99 inclus. Si plusieurs promotions ont le même rangé, l'un est arbitrairement sélectionné et appliqué.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Exactement une des valeurs suivantes : Discount ou BestDailyDiscount doit être spécifié.

Spécifie remise quotidienne pouvant être appliquée à une nuit de séjour. Contrairement à Discount, qui applique des remises à l'ensemble du séjour.

Chaque établissement peut avoir un seul groupe de promotions considérées comme "meilleures chaque jour". Cela signifie que pour chaque nuit de séjour, single "best Daily" qui est éligible et qui génère le plus pour cette nuit est sélectionnée et peut être appliquée.

Stacking peut être spécifié avec BestDailyDiscount. Il doit être défini sur base ou none. Le "meilleur quotidien" remises afin d'obtenir la remise la plus importante pour chaque nuit sont combinés et traités comme une remise pour un seul séjour (par exemple, Discount) tout en respectant le type d'empilement configuré. Cette remise combinée est comparée et peut être cumulé avec d'autres <Discount> éligibles pour trouver celle ou la combinaison qui offre le meilleur une remise. Soit la combinaison de BestDailyDiscount, soit La valeur Discount unique, selon le prix le moins élevé, est sélectionné et appliqué pour le type de pile base.

StayDates peut être spécifié avec ce type de remise, mais application doit être défini sur overlap

.
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage 0..1 float

Exactement une des percentage, fixed_amount ou fixed_price est obligatoire.

Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise. Elle s'applique à AmountAfterTax (ou AmountBeforeTax si AmountAfterTax n'est pas spécifié).

Exemples :

  • Si AmountAfterTax pour une nuit de séjour est égal à 100 et que percentage est égal à 20, alors

    taux de promotion = AmountAfterTax * (1 - pourcentage remise)

    80,00 = 100 * (1 - 0,2)

  • Si AmountBeforeTax pour un séjour est de 100, percentage est égal à 20 et TaxFeeInfo indique une taxe de 10, puis

    taux de promotion = AmountBeforeTax * (1 - pourcentage remise) + taxes

    90,00 = 100 x (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount 0..1 float

Exactement une des percentage, fixed_amount ou fixed_price est obligatoire.

Montant fixe à soustraire d'un tarif par nuit AmountAfterTax (ou d'un tarif par nuit AmountBeforeTax si AmountAfterTax n'est pas spécifié). Il s'agit dans la même devise que le tarif par nuit. Si elle est supérieure à la valeur somme des tarifs par nuit, la valeur qui en résulte est zéro.

Exemples :

  • Si AmountBeforeTax pour une seule nuit est à 90 degrés, AmountAfterTax est de 100, et fixed_amount est de 20, alors

    taux de promotion = AmountAfterTax - valeur fixe remise

    80.00 = 100 - 20

  • Si AmountBeforeTax pour une seule nuit atteint 100 $, fixed_amount a la valeur 20, et TaxFeeInfo indique une taxe de 8%, puis

    taux de promotion = (AmountBeforeTax - fixe (remise) * (1 + pourcentage de taxe)

    86,40 = (100 - 20) * 1,08

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price 0..1 float

Exactement une des percentage, fixed_amount ou fixed_price est obligatoire.

Si des tarifs par nuit de AmountAfterTax sont spécifiés, définit le prix de la nuit du séjour, taxes et frais compris, sur la valeur spécifiée. Si AmountBeforeTax est spécifié, alors que AmountAfterTax soit spécifié ou non, cela définit prix hors taxes du séjour sur la valeur spécifiée. Il s'agit dans la même devise que le tarif par nuit.

Exemples :

  • Si AmountBeforeTax pour une seule nuit est égal à 90, que AmountAfterTax est égal à 100 et que fixed_price est égal à 80, le tarif promotionnel est de 80.
  • Si AmountBeforeTax pour une seule nuit atteint 100 $, fixed_amount est égal à 80, et TaxFeeInfo indique une taxe de 8%, puis

    taux de promotion = prix fixe * (1 + pourcentage de taxe)

    86,40 = 80 * 1,08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Définit les restrictions sur le nombre de chambres devant être disponibles dans pour que cette promotion soit appliquée. La remise s'applique uniquement de nuits qui respectent la contrainte. Non autorisé avec les Remise de fixed_amount. Notez que le nombre d'instances "rooms" est spécifié OTA_HotelInvCountNotifRQ (InvCount) ou OTA_HotelAvailNotifRQ (BookingLimit).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer Nombre minimal de chambres devant être disponibles pour bénéficier de la promotion doit être appliqué au tarif par nuit. Si cet attribut n'est pas spécifié, minimum.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer Nombre maximal de chambres devant être disponibles pour la promotion doit être appliqué au tarif par nuit. Si cet attribut n'est pas spécifié, il n'y a pas de maximum.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Définit la durée maximale de séjour pendant laquelle cette promotion peut être appliquée appliquée. La promotion n'est pas appliquée lorsque la durée du séjour est supérieure à les limites minimale et maximale.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer Nombre minimal de nuits autorisées dans le séjour pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de minimum.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer Le nombre maximal de nuits autorisées dans le séjour pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de valeur maximale.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Conteneur d'une règle d'offres pour les adhésions qui déclenche une UI spécifique de la remise associée.

Cet élément ne doit pas être spécifié, sauf si <Discount> est également spécifié.

Promotions / HotelPromotions / Promotion / MembershipRateRule / @id 1 string

Identifiant de règle d'offre associée à un programme d'adhésion.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Spécifie la somme minimale des prix à la journée des chambres (en utilisant la valeur la plus élevée des AmountBeforeTax ou AmountAfterTax) qui doit est dépassé pour que la promotion soit appliquée.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer Valeur à dépasser pour que la promotion soit appliquée.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Définit les restrictions concernant le nombre de personnes pour lesquelles cette promotion est appliquée. La promotion n'est pas appliquée lorsque le nombre de personnes est en dehors des limites minimale et maximale.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer Le nombre de personnes spécifié par l'utilisateur doit être au moins égal à cette valeur pour que la remise à appliquer.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer Le nombre de personnes spécifié par l'utilisateur ne doit pas dépasser cette valeur pour que la remise à appliquer.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Conteneur pour la liste des plans tarifaires auxquels la promotion s'applique. Si <RatePlans> n'est pas spécifié, la promotion s'applique à tous les plans tarifaires.
Promotions / HotelPromotions / Promotion / 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.
Promotions / HotelPromotions / Promotion / 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), et dans 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.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Conteneur pour la liste des types de chambres auxquels la promotion s'applique. La promotion est appliquée à chaque <RoomType> spécifié. Si <RoomTypes> n'est pas spécifié, le s'applique à toutes les chambres.
Promotions / HotelPromotions / Promotion / 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), référencée à l'aide de sa valeur <RoomID>. (Sa valeur <RoomID> est également référencée par l'attribut InvTypeCode dans les messages OTA_HotelRateAmountNotifRQ.)
Promotions / HotelPromotions / Promotion / 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.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Indique comment combiner les promotions. S'il n'est pas spécifié, le "type" est censé être base.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Plusieurs promotions peuvent être appliquées à un même tarif en fonction de ce paramètre:

  • any: se cumule avec toute autre promotion (sauf none), mais l'ordre dans lequel les promotions doivent être appliquée n'est pas garantie.
  • base: la meilleure promotion base éligible est sélectionnées et appliquées en premier, avant les autres promotions. Il s'agissait auparavant de base_only.
  • second: la meilleure promotion second éligible est sélectionné et appliqué après une promotion base (le cas échéant) et avant les promotions any.
  • none: ne peut pas être associé à d'autres promotions.

Parmi les combinaisons autorisées, l'ensemble de promotions qui offre la plus grande remise est appliqué au tarif.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates Conteneur pour une ou plusieurs plages de dates qui déterminent la manière est appliquée, par exemple pour tenir compte des remises saisonnières.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Décrit comment la promotion doit être appliquée.

Les valeurs valides sont les suivantes :

  • all : applique la promotion à chaque nuit du séjour si toutes les dates du séjour se superposent exactement aux dates de séjour définies.
  • any : applique la promotion à toutes les nuits du séjour si une date de celui-ci se superpose à une date de la plage de dates de séjour.
  • overlap: applique la promotion uniquement aux Nombre de nuits du séjour qui chevauchent une date des dates de séjour la plage d'adresses IP.

Cet attribut doit toujours être spécifié.

  • Si <Discount> spécifie percentage et que application est défini sur all ou any, la remise est appliquée en tant que pourcentage du séjour total.
  • Si <Discount> spécifie percentage et application est défini sur overlap, de remise est appliquée sous forme de pourcentage des tarifs par nuit en cas de chevauchement nuits.
  • <Discount> spécifiant fixed_amount et application défini sur overlap est un combinaison incorrecte.
  • <FreeNights> est compatible avec tous Valeurs application. Notez que pour overlap, Seules les nuits de séjour qui se chevauchent sont prises en compte pour la remise. exigences.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

Plage de dates indiquant les dates auxquelles la promotion doit être appliquée.

Le format YearlessDate est également accepté.

  • Si l'une des valeurs start ou end est une valeur sans année date, les deux doivent être renseignées en tant que dates sans année.
  • Les plages de dates sans année ne doivent pas se répéter à l'arrivée du Nouvel An. À la place, représenter la période sous la forme de deux périodes adjacentes. Par exemple, {"12-29", "01-05"} peut être représenté par {"12-29", "12-31"} et {"01-01", "01-05"}

Si vous voulez définir la plage StayDates sur si la promotion n'est autorisée que certains jours de la semaine, vous devez définir start comme date actuelle sans end, donc afin que la promotion n'expire pas.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate 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 end. Si start n'est pas spécifié, la date est en fait illimitée en termes de date de début.

Vous devez spécifier la valeur start si le La valeur end n'est pas fournie.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate 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 Date start. Si end n'est pas spécifié, la date est de fait illimitée à partir de la date start.

Vous devez spécifier la valeur end si la valeur start n'est pas fournie.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne indique un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates.

Les caractères suivants sont acceptés:

  • M pour lundi
  • T pour mardi
  • W pour mercredi
  • H pour jeudi
  • F pour vendredi
  • S pour samedi
  • U pour dimanche

Toute combinaison de caractères est valide.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Conteneur permettant de lister les emplacements géographiques des utilisateurs (pays) éligibles pour la promotion. Si spécifié, seuls les utilisateurs éligibles de la liste pays bénéficient d'un tarif réduit. Si non spécifié, éligible les utilisateurs de n'importe quel pays bénéficient d'un tarif réduit.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum Type de spécification UserCountries.

Les valeurs valides sont include et exclude

Si la propriété UserCountries type est définie sur include, la promotion s'applique aux utilisateurs du domaine pays listés.

Si la valeur de type UserCountries est exclude, la promotion s'applique aux utilisateurs situés en dehors des pays listés.

Si le type UserCountries n'est pas défini, il est traité comme include et la promotion est appliquée aux utilisateurs des pays listés.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Définit un pays dans lequel les utilisateurs peuvent bénéficier de la promotion.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string Un pays CLDR du code, comme DE ou FR. Notez que, pour certains pays, le code pays CLDR n'est pas le même que les codes ISO à deux lettres code pays. De plus, les codes de région CLDR ne sont pas acceptés.

Exemples

Vous ne pouvez pas ajouter plus de 500 promotions par propriété. Reportez-vous à la section promotion" pour supprimer les promotions d'un établissement.

Message de base

L'exemple suivant présente un message Promotions de base:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <Discount percentage="20" applied_nights="2"/>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <Stacking type="base"/>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>


Condition d'inventaire

L'exemple suivant montre comment créer une remise en cas de dépassement d'inventaire peu de temps avant la date d'arrivée:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow max="7"/>
      <Discount percentage="10"/>
      <InventoryCount min="3"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Supprimer une promotion

L'exemple suivant montre comment supprimer une promotion pour un établissement:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1" action="delete"/>
  </HotelPromotions>
</Promotions>

Supprimer toutes les promotions

L'exemple suivant montre comment supprimer toutes les promotions d'un établissement:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>



Superposer toutes les promotions

L'exemple suivant montre comment superposer <HotelPromotions> pour une propriété avec une ou plusieurs nouvelles promotions. Lorsque la valeur est action="overlay", tous les stockages sont stockés. les promotions sont supprimées avant que celles-ci soient stockées message actuel:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <Discount percentage="10"/>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <Stacking type="base"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

3 types d'empilement différents

L'exemple suivant montre un cas où trois promotions différentes sont appliquées (base, second et any). Notez que la promotion none ne sera pas appliquée, car les autres promotions offrent une remise plus intéressante. Si l'original 100 $, le prix réduit est de 72,90 $.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="10"/>
      <Stacking type="base"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="10"/>
      <Stacking type="second"/>
    </Promotion>
    <Promotion id="3">
      <Discount percentage="10"/>
      <Stacking type="any"/>
    </Promotion>
    <Promotion id="4">
      <Discount percentage="25"/>
      <Stacking type="none"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Aucun type d'empilage

L'exemple suivant illustre l'utilisation de la promotion none, car si vous combinez d'autres promotions, vous obtiendrez une remise moins importante. Si le le prix d'origine était de 100 $, le prix réduit était de 75 $.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="10"/>
      <Stacking type="base"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="10"/>
      <Stacking type="any"/>
    </Promotion>
    <Promotion id="3">
      <Discount percentage="25"/>
      <Stacking type="none"/>
    </Promotion>
  </HotelPromotions>
</Promotions>



Limites de durée de la période de réservation

L'exemple suivant montre un cas où l'élément BookingWindow est utilisé avec ses limites de début et de fin définies en tant que type de durée ISO 8601. Cette restriction de la période de réservation nécessite une réservation au plus tard à 18h la veille de votre arrivée, et à 12 h 00 ou après le 2e jour précédant votre arrivée de l'arrivée.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow min="P1DT6H" max="P2DT12H"/>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Limites de date et d'heure des dates de réservation

L'exemple suivant montre un cas où BookingDates est utilisé avec les attributs start et end en tant que DateTime. Cette restriction sur la date de réservation nécessite que la réservation ait lieu entre le 01/07/2020 à 6h30 et le 02/07/2020 à 18h45.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
      </BookingDates>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Plages de dates sans année

L'exemple suivant montre un cas où CheckInDates contient des DateRanges comportant les valeurs start et Champs end sans années. Dans cet exemple, la promotion s'applique aux dates d'arrivée comprises entre le 29/12 et le 02/01, quelle que soit l'année. Sans année plages de dates qui dépassent la limite du Nouvel An ne sont pas valides. La valeur DateRange est exprimée sous la forme de deux périodes adjacentes.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <CheckInDates>
         <DateRange start="12-29" end="12-31"/>
         <DateRange start="01-01" end="01-02"/>
      </CheckInDates>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>



Remise FreeNights

L'exemple suivant propose une remise de 50 % sur deux nuits pour chaque séjour de quatre nuits pour la période de réservation spécifiée. Pour un séjour de dix nuits, pour quatre nuits serait de 50%.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
        <DateRange start="2022-01-01" end="2022-05-31"/>
      </BookingDates>
      <Discount>
        <FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>

Dans l'exemple suivant, une remise de 50% est appliquée à une nuit pour chaque séjour de trois nuits pendant la période une plage de dates de séjour spécifique. Seules les nuits de séjour qui se chevauchent sont prises en compte pour bénéficier de la remise. Pour l'itinéraire suivant avec une arrivée le 01/01/2022 et un départ le 07/01/2022, les nuits d'hébergement éligibles et les remises sont appliquées comme suit.

  • 01/01/2022 (séjour)
  • 02/01/2022 (séjour)
  • 2022-01-03
  • 04/01/2022 (prix réduit)
  • 05/01/2022 (séjour)
  • 2022-01-06 (séjour)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <StayDates application="overlap">
        <DateRange start="2022-01-01" end="2022-01-02"/>
        <DateRange start="2022-01-04" end="2022-01-06"/>
      </StayDates>
      <Discount>
        <FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>


Sélection classée

L'exemple suivant propose deux remises, l'une de 20 % et l'autre de 15 %. Lors de l'évaluation, seule la remise de 15 % est appliquée, car elle a un rang inférieur.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="15" rank="25"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="20" rank="50"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

BestDailyDiscount

L'exemple suivant réduit un séjour de deux nuits en appliquant BestDailyDiscount empilé avec Discount.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
 <HotelPromotions hotel_id="HotelID" action="overlay">
   <Promotion id="general">
     <BestDailyDiscount fixed_amount="20"/>
   </Promotion>
   <Promotion id="may">
     <BestDailyDiscount fixed_amount="50"/>
     <StayDates application="overlap">
        <DateRange start="2023-05-01" end="2023-05-31"/>
     </StayDates>
   </Promotion>
   <Promotion id="fiesta">
     <Discount fixed_amount_per_night="5"/>
     <Stacking type="any"/>
   </Promotion>
 </HotelPromotions>
</Promotions>

Prenons l'exemple d'un séjour de deux nuits du 30 avril 2023 au 2 mai 2023. Pour le calcul, la combinaison des meilleures remises quotidiennes qui génère la remise la plus importante est déterminée en premier.

Pour la première nuit, le « général » est le seul montant éligible avec une remise fixe de 20.

Pour la deuxième nuit, la promotion "mai" offre une remise plus importante que la remise "générale". Ainsi, lorsque "peut-être" est sélectionné, le montant de la remise fixe est de 50.

Ensuite, pour le séjour, la "fiesta" des remises jusqu'à 5 par nuit, ou 10 au total. Il peut être cumulé avec la combinaison des meilleures remises quotidiennes. parce que "fiesta" dont le type de pile est défini sur any. S'il était défini à base, seule la combinaison des meilleures remises quotidiennes ou la "fiesta" est appliquée. Voir la description pour Stacking pour en savoir plus.

Au total, le prix du séjour bénéficie d'une remise de 20 + 50 + 10 = 80 €.

Réponses

Syntaxe

Le message PromotionsResponse utilise la syntaxe suivante:

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues are populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code"
           status="issue_type">
      issue_description
    </Issue>
  </Issues>
</PromotionsResponse>

Éléments et attributs

Le message PromotionsResponse comporte les éléments et attributs suivants:

Élément / @Attribut Occurrences Type Description
PromotionsResponse 1 Complex element Élément racine indiquant le succès ou les problèmes d'une réponse Message de la demande Promotions.
PromotionsResponse / @timestamp 1 DateTime Date et heure de création de ce message.
PromotionsResponse / @id 1 string Identifiant unique issu du message Promotions associé.
PromotionsResponse / @partner 1 string Compte du partenaire pour ce message.
PromotionsResponse / Success 0..1 Success Indique que le message Promotions a bien été traité sans avertissement, erreur ni échec.

La valeur <Success> ou <Issues> est présentes dans chaque message.

PromotionsResponse / Issues 0..1 Issues Conteneur pour un ou plusieurs problèmes rencontrés lors du traitement du message Promotions.

La valeur <Success> ou <Issues> est présentes dans chaque message.

PromotionsResponse / Issues / Issue 1..n Issue La description d'un avertissement, d'une erreur ou d'un échec rencontré pendant lors du traitement du message Promotions. Pour en savoir plus sur ces problèmes, dans Messages d'erreur concernant l'état du flux
PromotionsResponse / Issues / Issue / @code 1 integer Identifiant du problème.
PromotionsResponse / Issues / Issue / @status 1 enum

Type de problème rencontré.

Les valeurs valides sont warning, error et failure.

Exemples

Opération réussie

La réponse ci-dessous est une réponse à un message Promotions correctement traité.

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</PromotionsResponse>

Problèmes

La réponse ci-dessous est une réponse à un message Promotions non traité pour le motif suivant : les erreurs.

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</PromotionsResponse>