Promociones

Descripción general

Esta API te permite especificar posibles descuentos. De las promociones especificadas, Google aplica la promoción apta o el conjunto de promociones que dirige a los al precio más bajo. Si estás buscando una API que admita tasas arbitrarias ajustes que pueden aumentar o disminuir el precio cuando las condiciones satisfecho, entonces considera nuestro API de Rate Modifications. Ten en cuenta que si ambas APIs están presentes, las modificaciones de tarifa se aplican antes promociones.

Solicitudes

Sintaxis

El mensaje Promotions usa la siguiente sintaxis:

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

Elementos y atributos

El mensaje de promociones tiene los siguientes elementos y atributos:

Elemento / @Attribute Casos Tipo Descripción
Promotions 1 Complex element Es el elemento raíz de un mensaje de promoción.
Promotions / @partner 1 string La cuenta de socio de este mensaje. Este valor de cadena es el "Clave de socio" valor que aparece en el Página Configuración de la cuenta en Hotel Center.

Si tienes un backend que proporciona feeds para varias cuentas, este valor debe coincidir con el ID valor del atributo especificado en el archivo <RequestorID> de tu <OTA_HotelRateAmountNotifRQ> y <OTA_HotelAvailNotifRQ> mensajes para el mismo de servicio predeterminada.

Promotions / @id 1 string Un identificador único para este mensaje de solicitud. Se muestra este valor en el mensaje de respuesta. Los caracteres permitidos son a-z, A-Z, 0-9, _ (guion bajo) y - (guion).
Promotions / @timestamp 1 DateTime La fecha y hora de creación de este mensaje.
Promotions / HotelPromotions 0..n HotelPromotions

Promociones de una propiedad. Cada promoción se aplica a un solo propiedad.

A menos que se use <Stacking>, la promoción con el mayor descuento se aplica a la reserva cuando varias promociones son aptas.

Promotions / HotelPromotions / @hotel_id 1 string Es el identificador único de la propiedad. Este valor debe coincidir con el ID de hotel especificado con <id> en el elemento <listing> en el feed de lista de hoteles. El ID de hotel también aparece en Hotel Center.
Promotions / HotelPromotions / @action 0..1 enum

Si se especifica, el valor debe ser "overlay" Cuando el valor es "overlay", todo promociones almacenadas se borran antes de almacenar las promociones especificadas en el mensaje actual.

Si no se especifica, cada promoción especificada en la URL actual mensaje:

  • Added (si ninguna de las promociones almacenadas tiene el elemento mismo id)
  • Updated (si una promoción almacenada tiene la misma id)
  • Deleted (si una promoción almacenada tiene la misma id y el valor del atributo action para la promoción especificada en el mensaje actual es "delete")
Promotions / HotelPromotions / Promotion 0..99 Promotion

Es una promoción única para una propiedad. Ten en cuenta que si action="overlay" y <Promotion> son si no se especifica, se borrarán todas las promociones de la propiedad.

Si necesitas usar más de 99 promociones, comunícate con tu administrador técnico de cuentas (TAM).

Promotions / HotelPromotions / Promotion / @id 1 string Es un identificador único para la promoción. El número máximo de caracteres permitidos es de 40. Los caracteres permitidos son a-z, A-Z, 0-9, _ (guion bajo), - (guion) y . (punto).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

Si se especifica, el valor debe ser delete. Si no es así especificada y una con el mismo id no se almacena, esta se almacena la promoción. De lo contrario, si no se especifica, y una promoción con se almacena el mismo id, la promoción existente se se actualicen.

Si se especifica delete, la promoción almacenada con el mismo id se borró. Cuando uses delete, no incluyas ningún elemento secundario en <Promotion> Además, delete no es se permite junto con <HotelPromotions action="overlay"/>.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates Un contenedor para uno o más rangos que definen cuándo debe ocurrir la reserva para que se aplique la promoción.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange Es un intervalo que especifica cuándo debe ocurrir la reserva para que se realice la promoción. se aplicó.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date o DateTime

La fecha y hora de inicio (según la zona horaria de la propiedad) inclusivos del rango.

  • La fecha o la fecha y hora especificadas por start deben ser anterior (o igual a) la fecha u fecha y hora especificadas por end
  • Si no se especifica start, el rango es efectivamente ilimitados en términos de una hora de inicio.
  • Si start se completa con la fecha "AAAA-MM-DD", es se interpreta como fecha y hora "YYYY-MM-DDT00:00:00".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date o DateTime

La fecha y hora de finalización (según la zona horaria de la propiedad) inclusivos del rango.

  • La fecha o la fecha y hora especificadas por end deben ser posteriores que (o igual que) la fecha u fecha y hora especificadas por start
  • Si no se especifica end, el rango es efectivamente ilimitado en términos de una hora de finalización.
  • Si se proporciona end con la fecha "AAAA-MM-DD", es se interpreta como fecha y hora "AAAA-MM-DDT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

Indica los días de la semana que se permiten en el período. Si no es así especificado, todos los días están permitidos en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "MTWHF" especifica que están permitidos los días de la semana en el período.

Los caracteres válidos son los siguientes:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow Especifica el período durante el cual la reserva debe ocurrir en relación con la fecha de entrada (según la zona horaria de la propiedad). Por ejemplo, el El período de reserva se puede establecer en 7 días como mínimo, pero no en más de 180 días antes de la entrada.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration La duración mínima antes del registro de entrada cuando debe realizarse la reserva para que se aplique la promoción. Si no se especifica, o su valor es 0, no hay un mínimo.

Los tipos de valor válidos son los siguientes:

  • Número entero: La cantidad de días antes de la entrada fecha. Por ejemplo, un valor de 30 indica la la promoción solo se aplica a las reservas realizadas al menos 30 días antes de la fecha de entrada.
  • Duración de la norma ISO 8601 (días, horas y minutos): La cantidad de días (y, opcionalmente, horas/minutos) antes de la fecha de entrada. Para Por ejemplo, un valor de P30D indica solo la promoción se aplica a las reservas con al menos 30 días de anticipación a la fecha de entrada. R valor de P30DT6H requiere que la reserva se haga a las 6:00 p.m. o antes del el día 30 antes de la llegada.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration La cantidad máxima de días antes del registro de entrada cuando debe realizarse la reserva para que se aplique la promoción. Si no se especifica, o su valor es 0, no hay un máximo.

Los tipos de valor válidos son los siguientes:

  • Número entero: La cantidad de días antes de la entrada fecha. Por ejemplo, un valor de 30 indica la la promoción solo se aplica a las reservas realizadas hasta 30 días antes de la fecha de entrada.
  • Duración de la norma ISO 8601 (días, horas y minutos): La cantidad de días (y, opcionalmente, horas/minutos) antes de la fecha de entrada. Para Por ejemplo, un valor de P30D indica solo la promoción se aplica a las reservas que se hayan realizado hasta 30 días antes de la fecha de entrada. R El valor de P30DT6H requiere una reserva a partir de las 6:00 p.m. del el día 30 antes de la llegada.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Define las restricciones sobre el valor máximo en el que se puede establecer una tarifa después de que se apliquen las promociones.

Las promociones siempre deben especificar un <Discount> o un <BestDailyDiscount>, por lo tanto, para crear una promoción que solo aplica un <Ceiling>, una opción es establecer un <Discount> con un percentage de 0

Si se configura el apilamiento, entonces se mostrarán varias promociones con <Ceiling> podría aplicarse a una sola estadía. Cada promoción aplicaría el descuento, seguido inmediatamente del límite. El El siguiente ejemplo demuestra cómo cada límite contribuye a la siguiente el cálculo de la promoción en la pila.

Ejemplo:

Precios para estadías de 1 noche en AmountBeforeTax 100 y hay una pila de dos promociones:

  1. Promoción con el tipo de apilamiento base, a fixed_amount de 25 y un límite amount_per_night de 60
  2. Promoción con el tipo de apilamiento second, fixed_amount de 25 y un límite amount_per_night de 90

Este es el orden de cálculo:

  1. Primero se aplica la promoción base y los descuentos AmountBeforeTax a 75, pero luego el techo baja a 60.
  2. La promoción second ofrece un descuento para las AmountBeforeTax de 60 a 35. Esto está por debajo del límite de 90, por lo que no se aplica el segundo techo. La tarifa final es de 35

El hecho de que 60 sea un límite general más estricto es irrelevante porque es válido solo para su propia promoción, y no puede haber límite que abarca toda la pila de promociones.

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

Cantidad máxima a la que se puede establecer una tarifa por noche después de se aplica el descuento.

Si también se especifica un elemento <Floor>, este se debe establecer en un valor mayor o igual que el Atributo amount_per_night en <Floor>

Se aplica el amount_per_night a los impuestos y las tarifas cuando se incluyen en la tarifa por noche mediante AmountAfterTax, pero no las especificadas con TaxFeeInfo.

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

Define las restricciones sobre el valor mínimo en el que se puede establecer una tarifa después de que se apliquen las promociones.

Las promociones siempre deben especificar un <Discount> o un <BestDailyDiscount>, por lo tanto, para crear una promoción que solo aplica un <Floor>, una opción es establecer un <Discount> con un percentage de 0

La lógica de <Floor> aún se aplica a <FreeNights> de descuento, incluso si la noche gratis tiene un Se aplicó un descuento del 100%.

Si se configura el apilamiento, entonces se mostrarán varias promociones con <Floor> podría aplicarse a una sola estadía. Cada promoción aplicaría su descuento, seguido inmediatamente del precio mínimo. El El siguiente ejemplo demuestra cómo cada precio mínimo contribuye al siguiente el cálculo de la promoción en la pila.

Ejemplo:

Precios para estadías de 1 noche en AmountBeforeTax 100 y hay una pila de dos promociones:

  1. Promoción con el tipo de apilamiento base, a fixed_amount de 25 y un piso amount_per_night de 90
  2. Promoción con el tipo de apilamiento second, fixed_amount de 25 y un piso amount_per_night de 60

Este es el orden de cálculo:

  1. Primero se aplica la promoción base y los descuentos AmountBeforeTax a 75, pero luego el precio mínimo lo eleva de hasta 90.
  2. La promoción second ofrece un descuento para las AmountBeforeTax de 90 a 65. Esta sección está por encima del piso de 60, por lo que no se aplica el segundo piso. La tarifa final es de 65.

El hecho de que 90 sea un precio mínimo más estricto es irrelevante porque es válido solo para su propia promoción, y no puede haber que abarca toda la pila de promociones.

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

Importe mínimo que se puede establecer una tarifa por noche después de se aplica el descuento.

Si también se especifica un elemento <Ceiling>, este se debe establecer en un valor menor o igual que el Atributo amount_per_night en <Ceiling>

Se aplica el amount_per_night a los impuestos y las tarifas cuando se incluyen en la tarifa por noche mediante AmountAfterTax, pero no las especificadas con TaxFeeInfo.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates Un contenedor para uno o más períodos que definen cuándo se debe registrar la entrada para que se aplique la promoción.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

Un período que especifique cuándo se debe registrar la entrada para que la promoción si se aplican. Este elemento no es obligatorio si borras uno o más. promociones.

También se admite el formato YearlessDate.

  • Si uno de start o end es sin año date, ambas se deben completar como fechas sin año.
  • Los períodos sin año no deben concluir el año nuevo. En cambio, representar el rango como dos períodos adyacentes. Por ejemplo: {"12-29", "01-05"} se puede representar como {"12-29", "12-31"}, y {"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate La fecha de inicio (según la zona horaria de la propiedad), inclusive, de el período. Esta fecha debe ser anterior o igual a la del end fecha. Si no se especifica start, la fecha el rango es eficazmente ilimitado en términos de una fecha de inicio.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate La fecha de finalización (según la zona horaria de la propiedad), inclusive, de los durante un período específico. La fecha debe ser igual o posterior a la start. fecha. Si no se especifica end, la fecha el rango es eficazmente ilimitado en términos de una fecha de finalización.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

Indica los días de la semana que se permiten en el período. Si no es así especificado, todos los días están permitidos en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "MTWHF" especifica que están permitidos los días de la semana en el período.

Los caracteres válidos son los siguientes:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates Un contenedor para uno o más períodos que definen la fecha de salida debe ocurrir para que se aplique la promoción.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

Un período que especifique cuándo debe ocurrir la salida para que la promoción si se aplican. Este elemento no es obligatorio si tienes borrar una o más promociones.

También se admite el formato YearlessDate.

  • Si uno de start o end no tiene año date, ambas deben completarse como fechas sin año.
  • Los períodos sin año no deben concluir el año nuevo. En cambio, representar el rango como dos períodos adyacentes. Por ejemplo: {"12-29", "01-05"} se puede representar de la siguiente manera: {"12-29", "12-31"} y {"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate La fecha de inicio (según la zona horaria de la propiedad), inclusive, de el período. Esta fecha debe ser anterior o igual a la del end fecha. Si no se especifica start, la fecha el rango es eficazmente ilimitado en términos de una fecha de inicio.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate La fecha de finalización (según la zona horaria de la propiedad), inclusive, de los durante un período específico. La fecha debe ser igual o posterior a la start. fecha. Si no se especifica end, la fecha el rango es eficazmente ilimitado en términos de una fecha de finalización.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

Indica los días de la semana que se permiten en el período. Si no es así especificado, todos los días están permitidos en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "MTWHF" especifica que están permitidos los días de la semana en el período.

Los caracteres válidos son los siguientes:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices Contenedor para mostrar una lista de los dispositivos de los usuarios que son aptos para el promoción. Si se especifica, solo los usuarios aptos de los dispositivos indicados en la lista se ofrece la tarifa con descuento. Si no se especifica, los usuarios aptos en cualquier se ofrece la tarifa con descuento.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Define un tipo de dispositivo de usuario que es apto para la promoción.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum Es un tipo de dispositivo. El valor debe ser desktop, tablet o mobile.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Exactamente uno de Discount o Se debe especificar BestDailyDiscount.

Especifica el descuento que se aplicará para esta promoción.

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

Exactamente uno de percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night es como en los productos necesarios.

Un valor decimal de 0 a 100 que especifica el porcentaje de descuento. Se aplica a AmountAfterTax (o AmountBeforeTax si la AmountAfterTax no es especificada).

Ejemplos:

  • Si la AmountAfterTax es 100 y percentage es 20, entonces

    tasa de promoción = AmountAfterTax * (1 - porcentaje descuento)

    80.00 = 100 * (1 - 0.2)

  • Si AmountBeforeTax es 100, percentage es 20 y TaxFeeInfo especifica un impuesto de 10, luego,

    tasa de promoción = AmountBeforeTax * (1 - porcentaje descuento) más impuestos

    90.00 = 100 * (1 - 0.2) + 10

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

Exactamente uno de percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night es como en los productos necesarios.

Una cantidad fija que se restará de la suma del Tarifas por noche de AmountAfterTax (o la suma de AmountBeforeTax tarifas por noche si AmountAfterTax). Se supone que en la misma moneda que las tarifas por noche. Si es mayor que el de las tarifas nocturnas, el valor resultante es cero.

Ejemplos:

  • El precio de una estadía de 1 noche AmountBeforeTax es 90, AmountAfterTax es 100 y fixed_amount es 20, entonces

    tarifa de promoción = AmountAfterTax - fija descuento

    80.00 = 100 - 20

  • El precio de una estadía de 1 noche AmountBeforeTax es 100, fixed_amount es 20, y TaxFeeInfo especifica un impuesto de 8%.

    tarifa de promoción = (AmountBeforeTax - fijo descuento) * (1 + porcentaje de impuesto)

    86.40 = (100 - 20) * 1.08

  • El precio de una estadía de 1 noche AmountBeforeTax es 50, fixed_amount es 60, y TaxFeeInfo especifica un impuesto de 10, luego

    tarifa de promoción = (AmountBeforeTax - fijo descuento) * impuestos

    10.00 = 0 + 10

  • Si precioamos una estadía de 3 noches donde el Los valores de AmountAfterTax son 100, 110 y 120. y fixed_amount es 150, luego

    tasa de promoción = suma(AmountAfterTax) - (fija) descuento)

    180.00 = (100 + 110 + 120) - 150

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

Exactamente uno de percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night es como en los productos necesarios.

Es un descuento fijo que se aplica a cada uno de los AmountAfterTax. tarifas por noche (o las el valor más económico N si se especifica applied_nights). Si No se especifica AmountAfterTax, se aplica a AmountBeforeTax Se supone que en la misma moneda que las tarifas por noche. Si fixed_amount_per_night es mayor que un por noche, esa tarifa se reduce a cero, el el descuento no puede hacer que la tarifa nocturna sea negativa.

Ejemplos:

  • Si precioamos una estadía de 3 noches donde el Los valores de AmountAfterTax son 100, 110 y 120. y las fixed_amount_per_night es 10, luego

    tasa de promoción = sum(AmountBeforeTax - importe fijo descuento)

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

  • Si precioamos una estadía de 3 noches donde el Los valores de AmountAfterTax son 10, 50 y 100. y las fixed_amount_per_night es 20, luego

    tasa de promoción = sum(AmountAfterTax - importe fijo descuento)

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

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

Exactamente uno de percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night es como en los productos necesarios.

Si se especifican tarifas por noche de AmountAfterTax, este valor establece el precio de la estadía, incluidos los impuestos y las tarifas, en un valor específico. Si se especifica AmountBeforeTax, entonces ya sea que se especifique o no AmountAfterTax, esto establece la precio antes de impuestos de la estadía en el valor especificado. Se supone que en la misma moneda que las tarifas por noche.

Si AmountAfterTax pretende reflejar una porcentaje de impuesto y, luego, se establecerá un precio fijo para Es posible que AmountBeforeTax genere impuestos y tarifas imprecisos. En general, se recomienda usar TaxFeeInfo para especificar los impuestos y las tarifas de una propiedad.

Ejemplos:

  • El precio de una estadía de 1 noche AmountBeforeTax es 90, AmountAfterTax es 100 y fixed_price es de 80, por lo que la tarifa de promoción es de 80.
  • El precio de una estadía de 1 noche AmountBeforeTax es 100, fixed_amount es 80, y TaxFeeInfo especifica un impuesto de 8%; entonces,

    tarifa promocional = precio fijo * (1 + porcentaje de impuesto)

    86.40 = 80 * 1.08

  • Si precioamos una estadía de 3 noches donde el Los valores de AmountAfterTax son 100, 110 y 120. y fixed_amount es 300, luego

    tasa de promoción = 300

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

Exactamente uno de percentage, fixed_amount, fixed_amount_per_night fixed_price o fixed_price_per_night es como en los productos necesarios.

Si se especifican tarifas por noche de AmountAfterTax, este valor establece el precio por cada noche de estadía, incluidos los impuestos y las tarifas, al un valor específico. Si se especifica AmountBeforeTax, entonces ya sea que se especifique o no AmountAfterTax, esto establece la antes de impuestos por cada noche de estadía en el valor especificado. Sí están en la misma moneda que las tarifas por noche.

Si AmountAfterTax pretende reflejar una porcentaje de impuesto y, luego, se establecerá un precio fijo para Es posible que AmountBeforeTax genere impuestos y tarifas imprecisos. En general, se recomienda usar TaxFeeInfo para especificar los impuestos y las tarifas de una propiedad.

Si se especifica applied_nights, el precio nuevo es se aplica a las N noches más baratas.

Ejemplos:

  • Si precioamos una estadía de 2 noches, Los valores de AmountBeforeTax son 90, 90. Los valores de AmountAfterTax son 100, 100. y fixed_price es de 80, entonces la tarifa de promoción es de 80 + 80 = 160
  • Si precioamos una estadía de 2 noches, AmountBeforeTax es 100, 100; fixed_amount es 80, y TaxFeeInfo especifica un impuesto de 8%; luego, la tarifa es (80 + 80) * 1.08 = 172.8.
  • Si precioamos una estadía de 3 noches donde el Los valores de AmountAfterTax son 100, 110 y 120. y fixed_amount es 110, entonces la tarifa de la promoción es 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Esto solo debe usarse con percentage o fixed_amount_per_night.

La cantidad de noches a las que se aplica el descuento, comenzando por es el menos costoso. Debe ser un número entero entre 1 y 99. Si no se especifica, el descuento se aplica a todas las noches.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Especifica un descuento para ciertas noches de estadía cuando una estadía mínima se alcanza la longitud máxima. Atributos del elemento Discount superior no están permitidos si se usa este elemento.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

Es la cantidad de noches requeridas para que se aplique el descuento. Cada el descuento se aplica a un segmento independiente de noches de estadía.

Por ejemplo, para una estadía de 10 noches donde stay_nights es 4 (y repeats es verdadero), por lo que hay dos noches de estadía segmentos: de la 1a a la 4a noches y de la 5a a la 8a noche el Las noches 9 y 10 no forman parte de un segmento de noche.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Indica la cantidad de noches con descuento en cada segmento de noches de estadía.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float Es el descuento que se aplica a las noches con descuento. Si este valor es 50, entonces cada noche seleccionada tendrá un 50% de descuento.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Debe ser cheapest o last. Si last y, luego, las noches al final del tramo de estadía. noches con descuento. Si cheapest, el valor más económico por las noches dentro del segmento de la estadía.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Si el descuento se puede aplicar a varias noches de estadía segmentos. Si es false, solo el segmento de noches de estadía en se descontará al comienzo del itinerario. Si es true, entonces cualquier segmento de noches de estadía tiene descuento.

Por ejemplo, si stay_nights es 4 y el itinerario es 10. noches, entonces, si repeats es true, entonces 2 los segmentos tienen descuento (noches 1 a 4 y noches 5 a 8); pero, si repeats es false, entonces solo 1 segmento con descuento (noches 1 a 4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Asigna una clasificación a esta promoción y la habilita en la selección de clasificación, donde solo se seleccionará la promoción con la clasificación más baja. Valores debe estar comprendido entre 1 y 99, ambos incluidos. Si varias promociones comparten la misma entonces uno se selecciona y aplica arbitrariamente.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Exactamente uno de Discount o Se debe especificar BestDailyDiscount.

Especifica un descuento diario que puede aplicarse a una noche del quedarse. Esto contrasta con Discount, que aplica descuentos a estadías completas.

Cada propiedad puede tener un solo grupo de promociones que se "mejor diario". Esto significa que, por cada noche de estadía, sencillo "mejor del día" sea apta y genere la mayor se seleccionó el descuento para esa noche y es posible que se aplique.

Stacking no se puede especificar con BestDailyDiscount El "mejor diario" descuentos, lo que genera el el descuento más alto por cada noche se combinan y se tratan como un solo descuento por estadía (es decir, Discount) con el tipo de apilado establecido en base Este descuento combinado se compara con con otros <Discount> aptos promociones para encontrar una o una combinación que ofrezca el mayor descuento. combinación de BestDailyDiscount o un solo Se selecciona Discount, el que genere el precio más bajo. para el tipo de apilamiento base.

StayDates se puede especificar con este tipo de descuento pero application debe configurarse como overlap

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

Exactamente uno de percentage, Se requiere fixed_amount o fixed_price.

Un valor decimal de 0 a 100 que especifica el porcentaje de descuento. Se aplica a AmountAfterTax (o AmountBeforeTax si la AmountAfterTax no es especificada).

Ejemplos:

  • Si la AmountAfterTax por una noche de estadía es de 100 y percentage es 20, luego

    tasa de promoción = AmountAfterTax * (1 - porcentaje descuento)

    80.00 = 100 * (1 - 0.2)

  • Si la AmountBeforeTax para un ight de estadía es de 100, percentage es 20 y TaxFeeInfo especifica un impuesto de 10, luego,

    tasa de promoción = AmountBeforeTax * (1 - porcentaje descuento) más impuestos

    90.00 = 100 * (1 - 0.2) + 10

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

Exactamente uno de percentage, Se requiere fixed_amount o fixed_price.

Una cantidad fija que se restará de un único Tarifa por noche de AmountAfterTax (o Tarifa por noche de AmountBeforeTax si AmountAfterTax). Se supone que en la misma moneda que las tarifas por noche. Si es mayor que el de las tarifas nocturnas, el valor resultante es cero.

Ejemplos:

  • Si AmountBeforeTax para una sola noche es 90, AmountAfterTax es 100 y fixed_amount es 20, entonces

    tarifa de promoción = AmountAfterTax - fija descuento

    80.00 = 100 - 20

  • Si AmountBeforeTax para una sola noche es 100, fixed_amount es 20, e TaxFeeInfo especifica un impuesto de 8% y, luego,

    tarifa de promoción = (AmountBeforeTax - fijo descuento) * (1 + porcentaje de impuesto)

    86.40 = (100 - 20) * 1.08

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

Exactamente uno de percentage, Se requiere fixed_amount o fixed_price.

Si se especifican tarifas por noche de AmountAfterTax, este valor establece el precio por la noche de la estadía, incluidos los impuestos y las tarifas, al un valor específico. Si se especifica AmountBeforeTax, entonces ya sea que se especifique o no AmountAfterTax, esto establece la precio antes de impuestos de la estadía en el valor especificado. Se supone que en la misma moneda que las tarifas por noche.

Ejemplos:

  • Si AmountBeforeTax para una sola noche es 90, AmountAfterTax es 100 y fixed_price es de 80, por lo que la tarifa de promoción es de 80.
  • Si AmountBeforeTax para una sola noche es 100, fixed_amount es 80 e TaxFeeInfo especifica un impuesto de 8% y, luego,

    tarifa promocional = precio fijo * (1 + porcentaje de impuesto)

    86.40 = 80 * 1.08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Define las restricciones sobre la cantidad de salas de reuniones que deben estar disponibles en para que se aplique esta promoción. El descuento se aplica solo a las noches que cumplen con la restricción. No se permite con el fixed_amount de descuento. Ten en cuenta que la cantidad de recursos salas se especifica con OTA_HotelInvCountNotifRQ (InvCount) o bien OTA_HotelAvailNotifRQ (BookingLimit).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer La cantidad mínima de salas de reuniones que deben estar disponibles para la promoción que se aplicará a la tarifa por noche. Si no se especifica, no hay mínimo.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer La cantidad máxima de habitaciones que deben estar disponibles para la promoción que se aplicará a la tarifa por noche. Si no se especifica, no hay máximo.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Define los límites de duración de la estadía dentro de los que se puede usar esta promoción. se aplicó. La promoción no se aplica si la duración de la estadía es superior a los límites mínimo y máximo.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer La cantidad mínima de noches permitidas en la estadía para que se cumpla la promoción se aplicó. Si no se especifica, no hay un mínimo.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer La cantidad máxima de noches permitidas en la estadía para que se cumpla la promoción se aplicó. Si no se especifica, no hay un máximo.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Contenedor de una regla de tarifas de membresía que activa una IU específica tratamiento adicional para el descuento asociado.

Este elemento no debe especificarse, a menos que También se especifica <Discount>.

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

ID de regla de tarifas asociada con un programa de membresía.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Especifica la suma mínima de las tarifas diarias de las habitaciones (usando la tarifa más grande de AmountBeforeTax o AmountAfterTax) que deben superar el límite para que se aplique la promoción.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer Es el valor que se debe superar para que se aplique la promoción.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy Define las restricciones de las ocupaciones para las que se aplica esta promoción. se aplicó. La promoción no se aplica cuando la ocupación está fuera del límites mínimos y máximos.
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer La ocupación especificada por el usuario debe ser de al menos este valor para que el descuento que se aplicará.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer La ocupación especificada por el usuario debe ser como máximo este valor para que el descuento que se aplicará.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Contenedor de una lista de los planes de tarifas a los que se aplica la promoción. Si no se especifica <RatePlans>, la promoción se aplica a todos los planes de tarifas.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Especifica un plan de tarifas. Un plan de tarifas se define mediante una combinación de el paquete, las tarifas y la disponibilidad, tal como se define en Transacción (Property Data), OTA_HotelRateAmountNotifRQ y OTA_HotelAvailNotifRQ y los mensajes identificados por PackageID.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string El identificador único del plan de tarifas. Este valor se asigna Valor de PackageID en <PackageData> en un mensaje Transaction (Property Data) y en la Atributo RatePlanCode en <StatusApplicationControl> en ambos <OTA_HotelRateAmountNotifRQ> y <OTA_HotelAvailNotifRQ> mensajes. La cantidad máxima de caracteres permitida es 50.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes Contenedor de una lista de los tipos de habitaciones a los que se aplica la promoción. La promoción se aplica a cada <RoomType> especificada. Si no se especifica <RoomTypes>, el valor se aplica a todas las salas.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType Especifica un tipo de habitación. El tipo de habitación se define en elemento <RoomData> en un Transaction (Property Data) y se a la que se hace referencia con su valor <RoomID>. (Su El valor de <RoomID> también hace referencia a Atributo InvTypeCode en OTA_HotelRateAmountNotifRQ messages.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string Es el identificador único del inventario (tipo de habitación). Este valor se asigna a <RoomID> en un mensaje de transacción (datos de propiedad). La cantidad máxima de caracteres permitida es 50.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking Especifica cómo se pueden combinar las promociones. Si no se especifica, el “tipo” y se supone que es base.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

Se pueden aplicar varias promociones a una sola tarifa en función del este parámetro de configuración:

  • any: Se puede combinar con cualquier otra promoción (excepto none), pero el orden en el que deben estar las promociones no está garantizada.
  • base: La mejor promoción de base apta es seleccionar y aplicar primero, antes que otras promociones. Este era antes llamado base_only.
  • second: La mejor promoción apta de second se selecciona y se aplica después de una promoción de base (si corresponde) y antes de any promociones.
  • none: No se puede combinar con otros. promociones.

De las combinaciones permitidas, el conjunto de promociones que genera el el descuento más alto se aplicará a la tarifa.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates Un contenedor para uno o más períodos que determinan la forma se aplica una promoción, por ejemplo, para adaptarse a descuentos de temporada.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

Describe cómo se debe aplicar la promoción.

Estos son los valores válidos:

  • all: Aplica la promoción a todas las noches del itinerario si todas las fechas del itinerario se superponen con las fechas de la estadía.
  • any: Aplica la promoción a todas las noches del itinerario si alguna fecha del itinerario se superpone con una fecha del durante el período de estadía.
  • overlap: Aplica la promoción solo a aquellas de noches en el itinerario que se superponen con una fecha en las fechas de la estadía del rango de destino de la ruta.

Siempre se debe especificar este atributo.

  • Si <Discount> especifica percentage y application está establecido en all, o any, el descuento se aplica como un porcentaje del estadía completa.
  • Si <Discount> especifica percentage y application se establece en overlap, el el descuento se aplica como un porcentaje de las tarifas nocturnas por superposición noches.
  • <Discount> especifica fixed_amount y application establecido en overlap es una combinación no válida.
  • <FreeNights> admite todo application valores. Ten en cuenta que, para overlap, solo se consideran para el descuento las noches de estadía que se superponen y los requisitos de cumplimiento.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

Es un período que especifica las fechas en las que se aplicará la promoción.

También se admite el formato YearlessDate.

  • Si uno de start o end no tiene año date, ambas deben completarse como fechas sin año.
  • Los períodos sin año no deben concluir el año nuevo. En cambio, representar el rango como dos períodos adyacentes. Por ejemplo: {"12-29", "01-05"} se puede representar de la siguiente manera: {"12-29", "12-31"} y {"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate La fecha de inicio (según la zona horaria de la propiedad), inclusive, de el período. Esta fecha debe ser anterior o igual a la del end fecha. Si no se especifica start, la fecha el rango es eficazmente ilimitado en términos de una fecha de inicio.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate La fecha de finalización (según la zona horaria de la propiedad), inclusive, de los durante un período específico. La fecha debe ser igual o posterior a la start. fecha. Si no se especifica end, la fecha el rango es eficazmente ilimitado en términos de una fecha de finalización.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

Indica los días de la semana que se permiten en el período. Si no es así especificado, todos los días están permitidos en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "MTWHF" especifica que están permitidos los días de la semana en el período.

Los caracteres válidos son los siguientes:

  • M para el lunes
  • T para el martes
  • W para el miércoles
  • H para el jueves
  • F para el viernes
  • S para el sábado
  • U para el domingo

Cualquier combinación de caracteres es válida.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries Contenedor para mostrar una lista de las ubicaciones de los usuarios (países) que son aptas para la promoción. Si se especifica, solo los usuarios aptos de la lista se ofrece la tarifa con descuento. Si no se especifica, reúne los requisitos a los usuarios de cualquier país se les ofrece la tarifa con descuento.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum Es el tipo de especificación de UserCountry.

Los valores válidos son include y exclude

Si UserCountry type está configurado como include, la promoción se aplica a los usuarios del países incluidos en la lista.

Si el valor de UserCountry type es exclude, La promoción se aplica a usuarios que no figuran en la lista países.

Si no se establece el objeto type UserCountry, se considera como include y la promoción se aplica a los usuarios de los países enumerados.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country Define un país en el que los usuarios son aptos para la promoción.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string Un país de CLDR código, como DE o FR. Ten en cuenta que, para algunos el código de país de CLDR no es el mismo que el ISO el código de país. Además, los códigos regionales CLDR no son compatibles.

Ejemplos

Hay un límite de 500 promociones por propiedad. Consulta "Borra uno promoción” para quitar promociones de una propiedad.

Mensaje básico

En el siguiente ejemplo, se muestra un mensaje Promotions básico:

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


Condición de inventario

En el siguiente ejemplo, se muestra cómo crear un descuento si hay exceso inventario cerca de la fecha de llegada:

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


Borrar una promoción

En el siguiente ejemplo, se muestra cómo borrar una promoción de una propiedad:

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

Borrar todas las promociones

En el siguiente ejemplo, se muestra cómo borrar todas las promociones de una propiedad:

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



Superposición de todas las promociones

En el siguiente ejemplo, se muestra cómo superponer <HotelPromotions> para una propiedad con una o más promociones nuevas. Cuando el valor sea action="overlay", todos los almacenados promociones se borran antes de almacenar las promociones especificadas en el mensaje actual:

<?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 tipos diferentes de apilamiento

En el siguiente ejemplo, se muestra un caso en el que tres promociones diferentes aplicado (base, second, any). Ten en cuenta que la promoción none no se ya que las demás promociones ofrecen un mejor descuento. Si el código original el precio con descuento era de USD 100, y el precio con descuento sería de USD 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>


Tipo de apilamiento inexistente

En el siguiente ejemplo, se muestra un caso en el que se usa la promoción none porque La combinación de otras promociones ofrece un descuento más pequeño. Si el botón el precio original era de USD 100 y el precio con descuento sería de USD 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>



Límites de duración del período de reserva

En el siguiente ejemplo, se muestra un caso en el que BookingWindow se usa con sus límites de inicio y finalización definidos como una duración según la norma ISO 8601. el tipo de letra. Esta restricción del período de reserva requiere que se reserve a las 6:00 p.m. o antes de esa fecha el día anterior a la llegada y a las 12:00 p.m. del segundo día anterior su llegada.

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


Límites de fecha y hora de las fechas de reserva

En el siguiente ejemplo, se muestra un caso en el que BookingDates se usa con los atributos start y end como DateTime. Esta restricción de fechas de reserva requiere que se realice la reserva entre las 6:30 a.m. del 01-07-2020 y las 18:45 a.m. del 2-7-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>


Períodos sin años

En el siguiente ejemplo, se muestra un caso en el que CheckInDates elemento contiene DateRanges con start y end campos sin años. En este ejemplo, la promoción se aplica para las fechas de entrada entre el 29 de diciembre y el 2 de enero, independientemente del año. Sin año los períodos que cruzan el límite de Año Nuevo no son válidos. Por lo tanto, el período se expresa como dos períodos adyacentes.

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



Descuento de FreeNights

En el siguiente ejemplo, se descuenta un 50% de dos noches por cada cuatro noches de estadía el período especificado de fechas de reserva. Para un itinerario de diez noches, se necesita un total de cuatro noches obtendría un descuento 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>

En el siguiente ejemplo, se aplica un descuento del 50% para una noche por cada tres noches que se alojen durante el o períodos específicos de fechas de estadía. Solo se consideran las noches de estadía que se superponen a fin de calificar para el descuento. Para el siguiente itinerario con registro de entrada el 1-1-2022 y la salida el 7-1-2022, las noches calificadas de estadía y los descuentos se aplican de la siguiente manera.

  • 1-1-2022 (estadía)
  • 2-1-2022 (estadía)
  • 2022-01-03
  • 4-1-2022 (con descuento)
  • 05-01-2022 (estadía)
  • 6-1-2022 (estadía)
<?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>


Selección clasificada

En el siguiente ejemplo, se ofrecen dos descuentos, uno de 20% de descuento y otro por un 15% de descuento. Durante la evaluación, solo se aplica el descuento del 15%. porque tiene una clasificación más baja.

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

En el siguiente ejemplo, se aplica un descuento en una estadía de dos noches BestDailyDiscount apilados con 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 una estadía de dos noches del 30 de abril de 2023 al 2 de mayo de 2023 Para el cálculo, la combinación de los mejores descuentos diarios el descuento más alto se encuentra primero.

Para la primera noche, el "específico" es el único importe apto con con un descuento fijo de 20.

Para la segunda noche, el "mayo" ofrece un descuento mayor que el el "general" descuento. Entonces, ¿cuándo podría se seleccionó el descuento fijo cantidad es de 50.

Luego, para la estadía, la “fiesta” descuentos promocionales a 5 por noche o 10 en total. Puede combinarse con los mejores descuentos diarios. porque "fiesta" tiene el tipo de apilado establecido en any. Si se hubiera establecido a base; luego, solo la combinación de los mejores descuentos diarios o la "fiesta" se aplica el descuento. Ver descripción de Stacking para obtener más información.

`En general, el precio de la estadía incluye un importe fijo de 20 + 50 + 10 = 80. descuento.

Respuestas

Sintaxis

El mensaje PromotionsResponse usa la siguiente sintaxis:

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

Elementos y atributos

El mensaje PromotionsResponse tiene los siguientes elementos y atributos:

Elemento / @Attribute Casos Tipo Descripción
PromotionsResponse 1 Complex element El elemento raíz que indica el éxito o los problemas de una solicitud Mensaje de solicitud de promociones.
PromotionsResponse / @timestamp 1 DateTime La fecha y hora de creación de este mensaje.
PromotionsResponse / @id 1 string Es el identificador único del mensaje de promociones asociado.
PromotionsResponse / @partner 1 string La cuenta de socio de este mensaje.
PromotionsResponse / Success 0..1 Success Indica que el mensaje de promociones se procesó correctamente. sin advertencias, errores ni fallas.

<Success> o <Issues> es presente en cada mensaje.

PromotionsResponse / Issues 0..1 Issues Un contenedor para uno o más problemas encontrados durante el procesamiento del Mensaje de promociones.

<Success> o <Issues> es presente en cada mensaje.

PromotionsResponse / Issues / Issue 1..n Issue La descripción de una advertencia, un error o una falla que se encontró mientras procesar el mensaje de promociones. Puedes encontrar detalles sobre estos problemas en Mensajes de error del estado del feed
PromotionsResponse / Issues / Issue / @code 1 integer Es el identificador del problema.
PromotionsResponse / Issues / Issue / @status 1 enum

El tipo de problema encontrado.

Los valores válidos son warning, error, y failure.

Ejemplos

Listo

La siguiente es una respuesta a un mensaje de Promociones procesado correctamente.

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

Problemas

La siguiente es una respuesta a un mensaje de Promociones que no se procesó debido a errores.

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