Promozioni

Panoramica

Questa API consente di specificare possibili sconti. Delle promozioni specificate, Google applica la promozione idonea o l'insieme di promozioni che genera il prezzo più basso. Se stai cercando un'API che supporti aggiustamenti arbitrari delle tariffe che possono aumentare o diminuire il prezzo quando le condizioni sono soddisfatte, ti consigliamo di utilizzare la nostra API Rate Modifications. Tieni presente che, se sono presenti entrambe le API, le modifiche alle tariffe vengono applicate prima promozioni.

Richieste

Sintassi

Il messaggio Promotions utilizza la seguente sintassi:

<?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>

Elementi e attributi

Il messaggio Promozioni contiene i seguenti elementi e attributi:

Elemento / @attributo Occorrenze Tipo Descrizione
Promotions 1 Complex element L'elemento principale di un messaggio di promozioni.
Promotions / @partner 1 string L'account partner per questo messaggio. Questo valore di stringa corrisponde alla "Chiave del partner" valore indicato il Impostazioni account in Hotel Center.

Se hai un backend che fornisce feed per più account, questo valore deve corrispondere al valore dell'attributo ID specificato nell'elemento <RequestorID> dei messaggi <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ> per lo stesso account.

Promotions / @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).
Promotions / @timestamp 1 DateTime La data e l'ora di creazione di questo messaggio.
Promotions / HotelPromotions 0..n HotelPromotions

Promozioni per una proprietà. Ogni promozione si applica a una singola proprietà.

A meno che non venga usato <Stacking>, la promozione con lo sconto maggiore viene applicata alla prenotazione quando sono idonee più promozioni.

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

Se specificato, il valore deve essere "overlay". Quando il valore è "overlay", tutte le promozioni archiviate vengono eliminate prima di archiviare le promozioni specificate nel messaggio corrente.

Se non specificato, ogni promozione specificata nel campo è:

  • Added (se nessuna delle promozioni memorizzate ha il valore stesso id)
  • Updated (se una promozione archiviata ha lo stesso id)
  • Deleted (se una promozione archiviata ha lo stesso id e il valore dell'attributo action per la promozione specificata nel messaggio corrente è "delete")
Promotions / HotelPromotions / Promotion 0..99 Promotion

Una singola promozione per una struttura. Tieni presente che se action="overlay" e <Promotion> è non specificato, vengono eliminate tutte le promozioni per la proprietà.

Se devi utilizzare più di 99 promozioni, contatta il tuo Technical Account Manager (TAM).

Promotions / HotelPromotions / Promotion / @id 1 string Un identificatore univoco per la promozione. Il numero massimo di caratteri consentiti è 40. I caratteri consentiti sono a-z, A-Z, 0-9, _ (trattino basso), - (trattino) e . (punto).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

Se specificato, il valore deve essere delete. Se il valore non è specificato e se non viene archiviata una promozione con lo stesso id, allora questa promozione viene archiviata. Altrimenti, se non specificato e se una promozione con viene archiviata la stessa id, la promozione esistente aggiornato.

Se delete viene specificato, la promozione memorizzata con il valore lo stesso id viene eliminato. Quando utilizzi delete, non includere nessun elemento secondario in <Promotion>. Inoltre, delete non è consentito in combinazione con <HotelPromotions action="overlay"/>.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates Un contenitore per uno o più intervalli che definiscono il momento in cui deve avvenire la prenotazione per poter applicare la promozione.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange Un intervallo che specifica il periodo in cui deve essere effettuata la prenotazione affinché la promozione venga applicata.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date o DateTime

La data di inizio o la data e l'ora (in base al fuso orario della proprietà), inclusi, dell'intervallo.

  • La data o la data/ora specificate da start devono essere precedente (o uguale alla) data o ora specificate da end.
  • Se start non è specificato, l'intervallo è effettivamente senza limiti in termini di ora di inizio.
  • Se il campo start è compilato come data "AAAA-MM-GG", è interpretata come data/ora "AAAA-MM-GGT00:00:00".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date o DateTime

La data di fine o la data e l'ora (in base al fuso orario della proprietà). inclusi, dell'intervallo.

  • La data o la data/ora specificate da end devono essere successive rispetto a (o uguale alla) data o ora specificate da start.
  • Se end non è specificato, l'intervallo è effettivamente senza limiti in termini di ora di fine.
  • Se end è specificata come data "AAAA-MM-GG", interpretata come data/ora "AAAA-MM-GGT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / 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. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica determinati giorni della settimana sono consentiti nell'intervallo di date.

I caratteri validi sono:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

È valida qualsiasi combinazione di caratteri.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Specifica il periodo di tempo in cui deve essere effettuata la prenotazione rispetto al data del check-in (in base al fuso orario della proprietà). Ad esempio, è possibile impostare una finestra di prenotazione di almeno 7 giorni, ma non oltre 180 giorni, prima del check-in.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration La durata minima prima del check-in quando deve essere effettuata la prenotazione per l'applicazione della promozione. Se non è specificato o il relativo valore è 0, non esiste un minimo.

I tipi di valore validi sono:

  • Numero intero:il numero di giorni prima del check-in data. Ad esempio, un valore 30 indica che la promozione si applica solo alle prenotazioni effettuate almeno 30 giorni prima della data di check-in.
  • Durata ISO 8601 (giorni, ore e minuti): il numero di giorni (e, facoltativamente, ore/minuti) prima della data di check-in. Per Ad esempio, il valore P30D indica solo la promozione si applica alle prenotazioni almeno 30 giorni prima della data di check-in. R il valore di P30DT6H richiede la prenotazione entro le 18:00 del il 30° giorno prima dell'arrivo.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration Il numero massimo di giorni prima del check-in in cui deve essere effettuata la prenotazione per l'applicazione della promozione. Se non è specificato o se il valore è 0, non è previsto un limite massimo.

I tipi di valore validi sono:

  • Numero intero: il numero di giorni prima della data di check-in. Ad esempio, un valore 30 indica la promozione si applica solo alle prenotazioni effettuate al massimo da 30 giorni prima della data del check-in.
  • Durata ISO 8601 (giorni, ore e minuti): il numero di giorni (e facoltativamente ore/minuti) prima della data del check-in. Per Ad esempio, il valore P30D indica solo la promozione si applica alle prenotazioni al massimo 30 giorni prima della data di check-in. R il valore di P30DT6H richiede la prenotazione a partire dalle 18:00 del il 30° giorno prima dell'arrivo.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Definisce le restrizioni relative al valore massimo che può essere impostato per una tariffa dopo l'applicazione delle promozioni.

Le promozioni devono sempre specificare un <Discount> o un <BestDailyDiscount>, per creare una promozione che applica solo un <Ceiling>, un'opzione è impostare <Discount> con percentage di 0.

Se la sovrapposizione è configurata, allora più promozioni con <Ceiling> possono essere applicati a un singolo soggiorno. A ogni promozione viene applicato il relativo sconto, immediatamente seguito dal relativo limite. La l'esempio seguente mostra come ogni tetto contribuisca all'aumento calcolo delle promozioni nell'elenco.

Esempio:

Prezzi di un soggiorno di 1 notte per un soggiorno di AmountBeforeTax 100 ed è presente una pila di due promozioni:

  1. Promozione con tipo di sovrapposizione base, una fixed_amount di 25 e un limite amount_per_night di 60
  2. Promozione con tipo di sovrapposizione second, fixed_amount di 25 e un limite amount_per_night di 90

Ecco l'ordine di calcolo:

  1. La promozione base viene applicata prima e gli sconti AmountBeforeTax a 75, ma poi il soffitto si abbassa fino a 60.
  2. La promozione second applica uno sconto sul AmountBeforeTax da 60 a 35. Questo è al di sotto del limite pari a 90, per cui il secondo tetto non viene applicato. La tariffa finale è 35.

Il fatto che 60 sia un tetto massimo più rigido è irrilevante poiché è valido solo per la propria promozione e non può esserci che copre l'intero stack di promozioni.

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

L'importo massimo su cui può essere impostata una tariffa per notte dopo il viene applicato uno sconto.

Se viene specificato anche un elemento <Floor>, questo deve essere impostato su un valore maggiore o uguale al Attributo amount_per_night in <Floor>.

Il amount_per_night viene applicato a tasse e commissioni quando sono inclusi nella tariffa per notte di AmountAfterTax, ma non quelli specificati utilizzando TaxFeeInfo.

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

Definisce le restrizioni sul valore minimo su cui è possibile impostare una tariffa dopo l'applicazione delle promozioni.

Le promozioni devono sempre specificare un <Discount> o un <BestDailyDiscount>, quindi per creare una promozione che applichi solo un <Floor>, un'opzione è impostare un <Discount> con un percentage di 0.

La logica <Floor> continua a essere applicata a Sconti di <FreeNights>, anche se la notte senza costi prevede un Sconto di 100% applicato.

Se la sovrapposizione è configurata, allora più promozioni con <Floor> possono essere applicati a un singolo soggiorno. Ogni promozione applica lo sconto, seguito subito dal suo prezzo minimo. L' esempio seguente mostra in che modo ogni livello contribuisce al calcolo della promozione successiva nello stack.

Esempio:

Prezzi di un soggiorno di 1 notte per un soggiorno di AmountBeforeTax 100 ed è presente una pila di due promozioni:

  1. Promozione con tipo di sovrapposizione base, una fixed_amount di 25 e un piano amount_per_night di 90
  2. Promozione con tipo di sovrapposizione second, fixed_amount di 25 e un piano amount_per_night di 60

Ecco l'ordine di calcolo:

  1. La promozione base viene applicata prima e gli sconti AmountBeforeTax a 75, ma poi il piano lo alza fino a 90.
  2. La promozione second sconta le AmountBeforeTax da 90 a 65. Si trova sopra il livello minimo pari a 60, per cui il secondo piano non viene applicato. La tariffa finale è 65.

Il fatto che 90 sia un prezzo minimo complessivo è irrilevante poiché è valido solo per la propria promozione e non può esserci che copre l'intero stack di promozioni.

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

L'importo minimo che può essere impostato per una tariffa per notte dopo l'applicazione dello sconto.

Se viene specificato anche un elemento <Ceiling>, questo deve essere impostato su un valore minore o uguale a Attributo amount_per_night in <Ceiling>.

Il amount_per_night viene applicato a tasse e commissioni quando sono inclusi nella tariffa per notte di AmountAfterTax, ma non quelli specificati utilizzando TaxFeeInfo.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates Un contenitore di uno o più intervalli di date che definiscono il periodo in cui deve essere effettuato il check-in affinché venga applicata la promozione.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

Un intervallo di date che specifica il periodo in cui deve essere effettuato il check-in affinché la promozione . Questo elemento non è necessario se stai eliminando uno o più promozioni.

È supportato anche il formato YearlessDate.

  • Se una delle date (start o end) non include l'anno, entrambe devono essere compilate come date senza anno.
  • Gli intervalli di date senza anni non devono aggregarsi al nuovo anno. Invece, rappresentano l'intervallo come due intervalli di date adiacenti. Ad esempio, {"12-29", "01-05"} può essere rappresentato come {"12-29", "12-31"} e {"01-01", "01-05"}.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate 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.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla data start data. Se end non è specificato, la data è di fatto illimitato in termini di data di fine.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ciascuna nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali.

I caratteri validi sono:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

È valida qualsiasi combinazione di caratteri.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates Un contenitore di uno o più intervalli di date che definiscono il momento del pagamento perché la promozione venga applicata.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

Un intervallo di date che specifica il periodo in cui deve essere effettuato il check-out affinché la promozione . Questo elemento non è obbligatorio se l'eliminazione di una o più promozioni.

È supportato anche il formato YearlessDate.

  • Se una tra start o end non ha un anno data, entrambe devono essere compilate come date senza anno.
  • Gli intervalli di date senza anno non devono includere il nuovo anno. Invece, rappresentano l'intervallo come due intervalli di date adiacenti. Ad esempio, {"12-29", "01-05"} può essere rappresentato come {"12-29", "12-31"} e {"01-01", "01-05"}.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate 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.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla data start data. Se end non è specificato, la data è di fatto illimitato in termini di data di fine.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ciascuna nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali.

I caratteri validi sono:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

È valida qualsiasi combinazione di caratteri.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Contenitore dell'elenco dei dispositivi utente idonei per il promozione. Se specificato, solo gli utenti idonei sui dispositivi elencati hanno diritto a una tariffa scontata. Se non specificato, gli utenti idonei su qualsiasi dispositivi a una tariffa scontata.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Definisce un tipo di dispositivo dell'utente idoneo alla promozione.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum Un tipo di dispositivo. Il valore deve essere desktop, tablet o mobile.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Esattamente uno di Discount o È necessario specificare BestDailyDiscount.

Specifica lo sconto da applicare a questa promozione.

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

Esattamente uno di percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night è obbligatorio.

Un valore decimale compreso tra 0 e 100 che specifica la percentuale di sconto. Viene applicata a AmountAfterTax (o AmountBeforeTax se AmountAfterTax non è specificato).

Esempi:

  • Se AmountAfterTax è 100 e percentage è 20, quindi

    tariffa promozionale = AmountAfterTax * (1 - percentuale sconto)

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

  • Se AmountBeforeTax è 100, percentage è 20 e TaxFeeInfo specifica un'imposta pari a 10, poi

    tariffa promozionale = AmountBeforeTax * (1 - percentuale sconto) + imposte

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

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

Esattamente uno di percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night è obbligatorio.

Un importo fisso da sottrarre dalla somma dei AmountAfterTax tariffe per notte (o somma di AmountBeforeTax tariffe per notte se AmountAfterTax non è specificato). Si presume che e la stessa valuta delle tariffe per notte. Se questo valore è maggiore del somma delle tariffe per notte, il valore risultante è zero.

Esempi:

  • Se stiamo definendo il prezzo di un soggiorno di 1 notte in cui AmountBeforeTax fa 90, AmountAfterTax è 100 e fixed_amount è 20, quindi

    tariffa promozionale = AmountAfterTax - fisso sconto

    80,00 = 100 - 20

  • Se stiamo definendo il prezzo di un soggiorno di 1 notte in cui AmountBeforeTax è 100, fixed_amount è 20 e TaxFeeInfo specifica una tassa dell'8%, quindi

    tariffa promozionale = (AmountBeforeTax - fisso sconto) * (1 + imposta percentuale)

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

  • Se stiamo definendo il prezzo di un soggiorno di 1 notte in cui AmountBeforeTax è 50, fixed_amount è 60 e TaxFeeInfo specifica un'imposta pari a 10, quindi

    tariffa promozionale = (AmountBeforeTax - fisso sconto) * tasse

    10,00 = 0 + 10

  • Se stiamo definendo il prezzo di un soggiorno di 3 notti in cui I valori di AmountAfterTax sono 100, 110 e 120; e fixed_amount è 150, poi

    tariffa promozionale = somma(AmountAfterTax) - (fisso sconto)

    180,00 = (100 + 110 + 120) - 150

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

Esattamente uno di percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night è obbligatorio.

Uno sconto fisso applicato a ciascuno degli AmountAfterTax le tariffe per notte (o il valore N più economico se è specificato applied_nights). Se AmountAfterTax non è specificato, viene applicato a AmountBeforeTax. Si presume che e la stessa valuta delle tariffe per notte. Se fixed_amount_per_night è superiore a tariffa per notte, tale tariffa per notte viene ridotta a zero, uno sconto non può far diventare negativa una tariffa per notte.

Esempi:

  • Se stiamo definendo il prezzo di un soggiorno di 3 notti in cui I valori di AmountAfterTax sono 100, 110 e 120; e ai fixed_amount_per_night fa 10, poi

    tariffa promozionale = somma(AmountBeforeTax - importo fisso sconto)

    300,00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • Se stiamo definendo il prezzo di un soggiorno di 3 notti in cui I valori di AmountAfterTax sono 10, 50 e 100; e ai fixed_amount_per_night fa 20, poi

    tariffa promozionale = somma (AmountAfterTax - importo sconto fisso)

    110,00 = (0 + (50 - 20) + (100 - 20))

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

Esattamente uno di percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night è obbligatorio.

Se vengono specificate le tariffe per notte di AmountAfterTax, allora imposta il prezzo del soggiorno, tasse e commissioni, al specificato. Se AmountBeforeTax è specificato, allora indipendentemente dal fatto che AmountAfterTax sia specificato o meno, questa opzione imposta la il prezzo al lordo delle imposte per il soggiorno al valore specificato. Si presume che e la stessa valuta delle tariffe per notte.

Se AmountAfterTax intende riflettere un d'imposta percentuale, quindi impostando un prezzo fisso AmountBeforeTax può comportare imprecisioni nelle tasse e commissioni. In generale, ti consigliamo vivamente di utilizzare TaxFeeInfo per specificare le tasse e le commissioni di una proprietà.

Esempi:

  • Se stiamo definendo il prezzo di un soggiorno di 1 notte in cui AmountBeforeTax fa 90, AmountAfterTax è 100 e fixed_price è 80, la tariffa di promozione è 80.
  • Se stiamo definendo il prezzo di un soggiorno di 1 notte in cui AmountBeforeTax è 100, fixed_amount è 80 e TaxFeeInfo specifica una tassa dell'8%, quindi

    tariffa promozionale = prezzo fisso * (1 + imposta percentuale)

    86,40 = 80 * 1,08

  • Se si sta definendo il prezzo di un soggiorno di tre notti in cui i valori di AmountAfterTax sono 100, 110 e 120, con fixed_amount pari a 300, allora

    tariffa promozionale = 300

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

È necessario specificare un solo valore tra percentage, fixed_amount, fixed_amount_per_night, fixed_price o fixed_price_per_night.

Se vengono specificate le tariffe per notte di AmountAfterTax, allora imposta il prezzo per ogni notte di soggiorno, tasse e commissioni, alla specificato. Se AmountBeforeTax è specificato, allora indipendentemente dal fatto che AmountAfterTax sia specificato o meno, questa opzione imposta la prezzo al lordo delle imposte per ogni notte di soggiorno entro il valore specificato. È nella stessa valuta delle tariffe per notte.

Se AmountAfterTax deve riflettere una imposta percentuale, l'impostazione di un prezzo fisso per AmountBeforeTax può comportare tasse e commissioni imprecise. In generale, consigliamo vivamente di utilizzare TaxFeeInfo per specificare tasse e commissioni di una proprietà.

Se viene specificato applied_nights, il nuovo prezzo è applicata alle N notti più economiche.

Esempi:

  • Se stiamo definendo il prezzo di un soggiorno di 2 notti in cui I valori di AmountBeforeTax sono 90, 90; I valori di AmountAfterTax sono 100, 100; e fixed_price è 80, quindi la percentuale di promozione è 80 + 80 = 160.
  • Se stiamo definendo il prezzo di un soggiorno di 2 notti in cui AmountBeforeTax è 100, 100; fixed_amount è 80 e TaxFeeInfo specifica una tassa pari all'8%, quindi l'aliquota della promozione è (80 + 80) * 1,08 = 172,8.
  • Se si sta definendo il prezzo di un soggiorno di tre notti in cui i valori di AmountAfterTax sono 100, 110 e 120, con fixed_amount pari a 110, il tasso di promozione è 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Deve essere utilizzato solo con percentage o fixed_amount_per_night.

Il numero di notti a cui viene applicato lo sconto, a partire da il meno costoso. Deve essere un numero intero compreso tra 1 e 99. Se non specificato, viene applicato a tutte le notti.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Specifica uno sconto su determinate notti di un soggiorno quando un soggiorno minimo la lunghezza massima consentita. Attributi nell'elemento Discount principale non sono consentiti se viene utilizzato questo elemento.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

Numero di notti richieste per l'applicazione dello sconto. Ciascuna viene applicato a un segmento separato di notti di soggiorno.

Ad esempio, per un soggiorno di 10 notti in cui stay_nights è equale a 4 (e repeats è true), esistono due segmenti di notti di soggiorno: dalla prima alla quarta notte e dalla quinta all'ottava notte; la nona e la decima notte non fanno parte di un segmento di notti di soggiorno.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Il numero di notti scontate in ogni segmento di notti di soggiorno.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float Lo sconto applicato alle notti scontate. Se questo valore è di 50, poi ogni notte selezionata è scontata del 50%.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Deve essere cheapest o last. Se last, poi le notti alla fine del segmento di soggiorno notti sono scontate. Se cheapest, il modello più economico le notti incluse nel segmento dei pernottamenti sono scontate.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Indica se lo sconto può essere applicato a più notti di soggiorno. segmenti. Se false, solo il segmento delle notti di soggiorno alle all'inizio dell'itinerario è scontato. Se true, allora ogni segmento di notti di soggiorno è scontato.

Ad esempio, se stay_nights è 4 e l'itinerario è 10 notti, poi, se repeats è true, allora 2 i segmenti sono scontati (notti 1-4 e notti 5-8); ma se repeats è false, poi solo 1 segmento è scontato (notti 1-4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Assegna un ranking alla promozione e la attiva nella selezione classificata, dove viene selezionata per l'applicazione solo la promozione con il ranking più basso. Valori deve essere compreso tra 1 e 99 inclusi. Se più promozioni condividono lo stesso di valutazione, ne viene selezionato e applicato arbitrariamente.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Esattamente uno di Discount o È necessario specificare BestDailyDiscount.

Specifica un valore sconto giornaliero applicabile a una notte di soggiorno. Questo è in rispetto a Discount, che applica sconti a interi soggiorni.

Ogni proprietà può avere un singolo gruppo di promozioni che sono considerati "migliori del giorno". Ciò significa che per ogni notte di soggiorno, singolo "migliore del giorno" di promozione idonea e che genera il rendimento più alto per la notte in questione è selezionato e può essere applicato.

Stacking può essere specificato con BestDailyDiscount. Deve essere impostato su base o none. Il "migliore del giorno" sconti che genera lo sconto più profondo per ogni notte vengono combinati e uno sconto per un singolo soggiorno (ad es. Discount), rispettando al contempo il tipo di stack configurato. Questo sconto combinato viene confrontato e cumulabile con altre offerte di tipo <Discount> idonee per trovare quella o la combinazione che offre la risposta uno sconto. Sia la combinazione di BestDailyDiscount o il singolo Discount, a seconda di quale sia il prezzo più basso, è selezionato e applicato per il tipo di sovrapposizione base.

StayDates può essere specificato con questo tipo di sconto, ma application deve essere impostato su overlap

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

Esattamente uno di percentage, È obbligatorio specificare fixed_amount o fixed_price.

Un valore decimale compreso tra 0 e 100 che specifica la percentuale di sconto. Viene applicata a AmountAfterTax (o AmountBeforeTax se AmountAfterTax non è specificato).

Esempi:

  • Se AmountAfterTax per una notte di soggiorno è 100 e percentage fa 20, poi

    tariffa promozionale = AmountAfterTax * (1 - percentuale sconto)

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

  • Se AmountBeforeTax per un 8 di soggiorno è 100, percentage è 20 e TaxFeeInfo specifica un'imposta pari a 10, poi

    tariffa promozionale = AmountBeforeTax * (1 - percentuale sconto) + imposte

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

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

Esattamente uno di percentage, È obbligatorio specificare fixed_amount o fixed_price.

Un importo fisso da sottrarre a una singola AmountAfterTax tariffa per notte (o AmountBeforeTax tariffa per notte se AmountAfterTax non è specificato). Si presume che e la stessa valuta delle tariffe per notte. Se questo valore è maggiore della somma delle tariffe per notte, si avrà un valore pari a zero.

Esempi:

  • Se AmountBeforeTax per una sola notte è 90, AmountAfterTax è 100 e fixed_amount è 20, allora

    tariffa promozionale = AmountAfterTax - sconto fisso

    80,00 = 100 - 20

  • Se AmountBeforeTax per una singola notte è 100, fixed_amount è 20 e TaxFeeInfo specifica un'imposta di 8%, poi

    tariffa promozionale = (AmountBeforeTax - fisso sconto) * (1 + imposta percentuale)

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

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

Esattamente uno di percentage, È obbligatorio specificare fixed_amount o fixed_price.

Se vengono specificate le tariffe per notte AmountAfterTax, il prezzo per la notte di soggiorno, incluse tasse e commissioni, viene impostato sul valore specificato. Se AmountBeforeTax è specificato, allora indipendentemente dal fatto che AmountAfterTax sia specificato o meno, questa opzione imposta la il prezzo al lordo delle imposte per il soggiorno al valore specificato. Si presume che e la stessa valuta delle tariffe per notte.

Esempi:

  • Se AmountBeforeTax per una sola notte è 90, AmountAfterTax è 100 e fixed_price è 80, la tariffa della promozione è 80.
  • Se AmountBeforeTax per una singola notte è 100, fixed_amount è 80 e TaxFeeInfo specifica un'imposta pari a 8%, poi

    tariffa promozionale = prezzo fisso * (1 + imposta percentuale)

    86,40 = 80 * 1,08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Definisce le restrizioni relative al numero di camere che devono essere disponibili affinché la promozione venga applicata. Lo sconto viene applicato solo notti che soddisfano il vincolo. Non consentito con Sconto di fixed_amount. Nota che il numero di pod disponibili è specificato con uno dei seguenti OTA_HotelInvCountNotifRQ (InvCount) oppure OTA_HotelAvailNotifRQ (BookingLimit).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer Il numero minimo di camere che devono essere disponibili per la promozione da applicare alla tariffa per notte. Se non specificato, non è previsto un valore minimo.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer Il numero massimo di camere che devono essere disponibili per la promozione da applicare alla tariffa per notte. Se non specificato, non sono massimo.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Definisce i limiti di durata del soggiorno entro i quali è applicabile questa promozione. La promozione non viene applicata se la durata del soggiorno non è compresa tra tra i limiti minimo e massimo.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer Il numero minimo di notti consentito per il soggiorno affinché la promozione applicati. Se non specificato, non è previsto un limite minimo.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer Il numero massimo di notti consentito per il soggiorno affinché venga applicata la promozione. Se non specificato, non è previsto un limite massimo.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Contenitore di una regola tariffaria di adesione che attiva una UI specifica per lo sconto associato.

Questo elemento non deve essere specificato a meno che È specificato anche <Discount>.

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

ID di regola tariffaria associata a un programma di affiliazione.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Specifica la somma minima delle tariffe giornaliere della camera (utilizzando il valore più grande tra AmountBeforeTax e AmountAfterTax) che deve essere superata affinché la promozione venga applicata.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer Il valore che deve essere superato affinché la promozione venga applicata.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Definisce le limitazioni relative al numero di persone per cui viene applicata questa promozione applicati. La promozione non viene applicata quando il numero di persone non è compreso tra i limiti minimo e massimo.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer Il numero di persone specificato dall'utente deve essere almeno pari a questo valore per lo sconto da applicare.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer Il numero di persone specificato dall'utente deve essere al massimo pari a questo valore affinché lo sconto possa essere applicato.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Contenitore di un elenco di piani tariffari a cui si applica la promozione. Se <RatePlans> non è specificato, la promozione si applica a tutti i piani tariffari.
Promotions / HotelPromotions / Promotion / 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
Promotions / HotelPromotions / Promotion / 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 nella Attributo RatePlanCode in <StatusApplicationControl> in entrambi <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ> messaggi. Il numero massimo di caratteri consentiti è 50.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Contenitore di un elenco dei tipi di camera a cui si applica la promozione. La promozione viene applicata a ogni <RoomType> specificato. Se <RoomTypes> non è specificato, la promozione si applica a tutte le camere.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Specifica un tipo di camera. Il tipo di camera viene definito in un elemento <RoomData> all'interno di un messaggio Transaction (Property Data) e vi viene fatto riferimento tramite il relativo valore <RoomID> (al valore <RoomID> viene fatto riferimento anche tramite l'attributo InvTypeCode nei messaggi OTA_HotelRateAmountNotifRQ).
Promotions / HotelPromotions / Promotion / 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.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Specifica il modo in cui le promozioni possono essere combinate. Se non specificato, si presume che "type" sia base.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

È possibile applicare più promozioni a una singola tariffa a seconda del questa impostazione:

  • any: può essere combinata con qualsiasi altra promozione (ad eccezione di none), ma l'ordine in cui devono essere le promozioni non è garantito.
  • base: la migliore promozione base idonea è selezionate e applicate prima delle altre promozioni. Questo è stato precedentemente denominato base_only.
  • second: la migliore promozione second idonea è stato selezionato e applicato dopo una promozione base (se applicabile) e prima del giorno any promozioni.
  • none: non può essere combinato con altri promozioni.

Tra le combinazioni consentite, alla tariffa verrà applicato l'insieme di promozioni che offre lo sconto più elevato.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates Un contenitore di uno o più intervalli di date che determinano il modo in cui venga applicata una promozione, ad esempio per tenere conto degli sconti stagionali.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Descrive come deve essere applicata la promozione.

I valori validi sono:

  • all: applica la promozione a ogni notte nell'itinerario se tutte le date nell'itinerario si sovrappongono alle date del soggiorno.
  • any: applica la promozione a tutte le notti in itinerario se una data dell'itinerario si sovrappone a una data nell'intervallo dell'intervallo di date del soggiorno.
  • overlap: applica la promozione solo a quelli notti nell'itinerario che si sovrappongono a una data nelle date del soggiorno intervallo.

Questo attributo deve essere sempre specificato.

  • Se per <Discount> è specificato percentage e application è impostato su all o any, lo sconto viene applicato come percentuale dell'intero soggiorno.
  • Se <Discount> specifica percentage e application è impostato su overlap, il Lo sconto viene applicato come percentuale delle tariffe per notte per gli notti.
  • <Discount> con fixed_amount e application impostato su overlap è un combinazione non valida.
  • <FreeNights> supporta tutti application valori. Tieni presente che per overlap, solo le notti di soggiorno sovrapposte vengono prese in considerazione per i requisiti di sconto.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

Un intervallo di date che specifica le date in cui deve essere applicata la promozione.

È supportato anche il formato YearlessDate.

  • Se una delle date (start o end) non include l'anno, entrambe devono essere compilate come date senza anno.
  • Gli intervalli di date senza anni non devono aggregarsi al nuovo anno. Invece, rappresentano l'intervallo come due intervalli di date adiacenti. Ad esempio: {"12-29", "01-05"} può essere rappresentato come {"12-29", "12-31"} e {"01-01", "01-05"}.

Se vuoi impostare l'intervallo StayDates su consentire la promozione in giorni specifici della settimana, devi impostare il Data start come data corrente senza end quindi che la promozione non scada.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla end. Se start non è specificato, la data è di fatto illimitato in termini di data di inizio.

Devi specificare il valore start se il valore Il valore end non è specificato.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla data Data start. Se end non è specificato, la data è effettivamente illimitato a partire dalla data start.

Devi specificare il valore end se il valore start non è fornito.

Promotions / HotelPromotions / Promotion / 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:

  • M per lunedì
  • T per martedì
  • W per mercoledì
  • H per giovedì
  • F per venerdì
  • S per sabato
  • U per domenica

È valida qualsiasi combinazione di caratteri.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Contenitore dell'elenco relativo alle località degli utenti (paesi) idonee per la promozione. Se specificato, solo gli utenti idonei nell'elenco paesi prevedono la tariffa scontata. Se non specificato, idoneo agli utenti di qualsiasi paese viene offerta la tariffa scontata.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum Il tipo di specifica UserCountries.

I valori validi sono include e exclude.

Se il campo UserCountries type è impostato come include, la promozione si applica agli utenti del paesi elencati.

Se il valore type UserCountries è exclude, La promozione si applica agli utenti al di fuori dei paesi elencati paesi.

Se il valore type UserCountries non viene impostato, viene trattato come include e la promozione viene applicata agli utenti di nei paesi elencati.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Definisce un paese in cui gli utenti sono idonei alla promozione.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string Un paese CLDR codice, come DE o FR. Tieni presente che, per alcuni paesi, il codice paese CLDR non corrisponde all'ISO di due lettere il prefisso internazionale del paese. Inoltre, i codici regione CLDR non sono supportati.

Esempi

Esiste un limite di 500 promozioni per proprietà. Fai riferimento all'esempio "Eliminare una promozione" per rimuovere le promozioni da una proprietà.

Messaggio di base

L'esempio seguente mostra un messaggio Promotions di 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>


Condizione dell'inventario

L'esempio seguente mostra come creare uno sconto se è presente inventario in eccesso in prossimità della data di arrivo:

<?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>


Eliminare una promozione

L'esempio seguente mostra come eliminare una promozione per una proprietà:

<?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>

Elimina tutte le promozioni

L'esempio seguente mostra come eliminare tutte le promozioni per una proprietà:

<?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>



Sovrapponi tutte le promozioni

L'esempio seguente mostra come sovrapporre <HotelPromotions> per una proprietà con una o più nuove promozioni. Quando action="overlay", tutti i dati archiviati le promozioni vengono eliminate prima di archiviare le promozioni specificate in messaggio attuale:

<?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 diversi tipi di accatastamento

L'esempio seguente mostra un caso in cui tre diverse promozioni vengono applicata (base, second, any). Tieni presente che la promozione none non sarebbe poiché le altre promozioni offrono uno sconto migliore. Se il prezzo originale era di 100 $, il prezzo scontato sarà di 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>


Nessuno Tipo di impilamento

L'esempio seguente mostra un caso in cui la promozione none viene utilizzata perché la combinazione di altre promozioni offre uno sconto minore. Se il prezzo originale era di 100 €, il prezzo scontato era di 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>



Limiti della durata della finestra di prenotazione

L'esempio seguente mostra un caso in cui BookingWindow viene utilizzato con limiti di inizio e fine definiti come Durata ISO 8601 di testo. Questa limitazione della finestra di prenotazione richiede la prenotazione entro le 18:00 il giorno prima dell'arrivo ed entro le 12:00 del 2° giorno prima all'arrivo.

<?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>


Limiti DateTime e date di prenotazione

L'esempio seguente mostra un caso in cui l'elemento BookingDates viene utilizzato con gli attributi start e end come tipi DateTime. Questa limitazione relativa alle date di prenotazione richiede che la prenotazione venga effettuata tra le 06:30 del 01-07-2020 e le 18:45 del 02-07-2020.

<?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>


Intervalli di date senza anni

L'esempio seguente mostra un caso in cui CheckInDates contiene DateRanges con start e end campi senza anni. In questo esempio, la promozione si applica alle date del check-in tra il 29/12 e il 2/1, indipendentemente dall'anno. Senza anno gli intervalli di date che superano il limite del nuovo anno non sono validi, pertanto il valore è espresso come due intervalli di date adiacenti.

<?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>



Sconto FreeNights

Nell'esempio seguente viene applicato uno sconto del 50% per due notti ogni quattro notti di soggiorno per l'intervallo specificato per le date di prenotazione. Per un itinerario di dieci notti, un totale di quattro notti verrebbe scontato del 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>

Nell'esempio successivo viene applicato lo sconto del 50% per una notte ogni tre notti di soggiorno per il specifici degli intervalli di date del soggiorno. Vengono conteggiate solo le notti sovrapposte del soggiorno per l'idoneità allo sconto. Per il seguente itinerario con check-in il 1° gennaio 2022 e check-out il 7 gennaio 2022, le notti di soggiorno idonee e gli sconti vengono applicati come segue.

  • 01/01/2022 (soggiorno)
  • 02/01/2022 (soggiorno)
  • 2022-01-03
  • 04/01/2022 (scontato)
  • 05-01-2022 (soggiorno)
  • 06-01-2022 (soggiorno)
<?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>


Selezione classificata

L'esempio seguente offre due sconti, uno per il 20% e un altro per il 15% di sconto. Durante la valutazione, viene applicato solo lo sconto del 15% perché ha un ranking più basso.

<?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

Nell'esempio seguente viene applicato uno sconto su un soggiorno di due notti BestDailyDiscount sovrapposte a un 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>

Considera un soggiorno di due notti dal 30 aprile 2023 al 2 maggio 2023 Ai fini del calcolo, la combinazione dei migliori sconti giornalieri che genera viene trovato per primo.

Per la prima notte, le regole "generali" è l'unico importo idoneo con uno sconto fisso di 20.

Per la seconda notte, "maggio" la promozione offre uno sconto maggiore rispetto il "generale" uno sconto. Quindi, quando "potrebbe" sia selezionato lo sconto fisso è 50.

Poi per il soggiorno, la "fiesta" sconti fino a 5 a notte, oppure 10 in totale. Può essere cumulabile con la combinazione dei migliori sconti giornalieri perché "fiesta" ha il tipo di sovrapposizione impostato su any. Se fosse stato impostato a base, solo la combinazione dei migliori sconti giornalieri o la "fiesta" viene applicato uno sconto. Vedi la descrizione di Stacking per avere ulteriori informazioni.

`Nel complesso, il prezzo del soggiorno riceve un importo fisso di 20 + 50 + 10 = 80 uno sconto.

Risposte

Sintassi

Il messaggio PromotionsResponse utilizza la seguente sintassi:

<?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>

Elementi e attributi

Il messaggio PromotionsResponse contiene i seguenti elementi e attributi:

Elemento / @attributo Occorrenze Tipo Descrizione
PromotionsResponse 1 Complex element L'elemento principale che indica l'esito positivo o negativo di un Messaggio di richiesta promozioni.
PromotionsResponse / @timestamp 1 DateTime La data e l'ora di creazione di questo messaggio.
PromotionsResponse / @id 1 string L'identificatore univoco del messaggio Promotions associato.
PromotionsResponse / @partner 1 string L'account partner per questo messaggio.
PromotionsResponse / Success 0..1 Success Indica che il messaggio Promotions è stato elaborato correttamente senza avvisi o errori.

<Success> o <Issues> sono presenti in ogni messaggio.

PromotionsResponse / Issues 0..1 Issues Un contenitore per uno o più problemi riscontrati durante l'elaborazione del messaggio Promotions.

<Success> o <Issues> sono presenti in ogni messaggio.

PromotionsResponse / Issues / Issue 1..n Issue La descrizione di un avviso, un errore o un errore riscontrato durante durante l'elaborazione del messaggio Promotions. Puoi trovare i dettagli su questi problemi nel Messaggi di errore relativi allo stato dei feed.
PromotionsResponse / Issues / Issue / @code 1 integer L'identificatore del problema.
PromotionsResponse / Issues / Issue / @status 1 enum

Il tipo di problema riscontrato.

I valori validi sono warning, error, e failure.

Esempi

Operazione riuscita

Di seguito è riportata una risposta a un messaggio Promotions elaborato correttamente.

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

Problemi

Di seguito è riportata una risposta a un messaggio Promozioni non elaborato a causa di errori.

<?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>