Las tarifas enviadas a través de <OTA_HotelRateAmountNotifRQ>
pueden
modificada para incluir a adultos y niños, además de la tarifa original
la cantidad de huéspedes. El mensaje ExtraGuestCharges
permite
especificación de cómo se deben calcular las tarifas para estos huéspedes adicionales y
en qué habitaciones, planes de tarifas y fechas de estadía se aplican sus cargos.
Requisitos de capacidad
Los precios calculados a partir del mensaje ExtraGuestCharges
solo son válidos si todos
de capacidad de almacenamiento
se cumplan los requisitos de capacidad. Consulta Transacción (datos de la propiedad).
para obtener más información.
Solicitudes
Sintaxis
El mensaje ExtraGuestCharges
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges partner="partner_account_name"
id="message_ID"
timestamp="timestamp">
<HotelExtraGuestCharges hotel_id="HotelID" action="[overlay]">
<ExtraGuestCharge>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<StayDates>
<DateRange start="YYYY-MM-DD" end="YYYY-MM-DD"
days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="float"/>
<ChildAgeBrackets>
<!-- The following are different ways child charges can be specified.
Use the option that matches your system. -->
<ChildAgeBracket max_age="integer" amount="float"
exclude_from_capacity="[true|false]"/>
<ChildAgeBracket max_age="integer" percentage="float"
exclude_from_capacity="[true|false]"
counts_as_base_occupant="[never|preferred|always]"/>
<ChildAgeBracket max_age="integer" discount_amount="float"
exclude_from_capacity="[true|false]"
counts_as_base_occupant="[never|preferred|always]"/>
</ChildAgeBrackets>
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Elementos y Atributos
El mensaje ExtraGuestCharges
tiene los siguientes elementos y
atributos:
Elemento / @Attribute | Casos | Tipo | Descripción |
---|---|---|---|
ExtraGuestCharges | 1 | Complex element | Es el elemento raíz de este mensaje. |
ExtraGuestCharges / @partner | 1 | string | La cuenta de socio de este mensaje. Este valor de cadena es el
Valor de Partner key que aparece en
el
En la página Configuración de la cuenta de Hotel Center
Nota: Si tienes un backend que proporciona feeds para
varias cuentas, este valor debe coincidir con el |
ExtraGuestCharges / @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). |
ExtraGuestCharges / @timestamp | 1 | DateTime | La fecha y hora de creación de este mensaje. |
ExtraGuestCharges / HotelExtraGuestCharges | 0..n | HotelExtraGuestCharges | Contenedor de cargos para una sola propiedad. |
ExtraGuestCharges / HotelExtraGuestCharges / @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. |
ExtraGuestCharges / HotelExtraGuestCharges / @action | 0..1 | enum | Especifica cómo se aplica la actualización. Solo overlay es
y la predeterminada es la superposición. Cualquier cargo anterior por esto
se borre la propiedad antes de que se aplique la actualización. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge | 0..99 | ExtraGuestCharge | Un solo conjunto de cargos para una propiedad. Puede contener restricciones en cuanto a cómo se puede aplicar un cargo y cómo se calculadas por edad o categoría de invitados. Cada |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets | 1 | AgeBrackets | Es un contenedor de tramos de edad que se usa para calcular los cargos por edad o categoría de invitado. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge | 0..1 | AdultCharge | Contenedor del cargo por un adulto adicional. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge / @amount | 0..1 | float | Un valor decimal positivo que especifica el importe fijo que se debe se cobra por un adulto adicional. Este cargo utiliza la misma moneda que y la especificada para las tarifas por noche. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets | 0..1 | ChildAgeBrackets | Contenedor de cargos secundarios adicionales. Estos grupos etarios solo pueden abarcan el rango de edad de 0 a 17 inclusive. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket | 1..99 | ChildAgeBracket | Es un cargo que se aplica a niños de un rango de edad específico. Estos
debe ordenarse del max_age más bajo al más alto
max_age El importe que se cobrará se puede especificar
amount , percentage o
discount_amount Exactamente uno de esos atributos debe ser
especificadas para cada <ChildAgeBracket> .
|
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age | 1 | integer | Edad máxima para la que se especificaron los cargos en
Es posible que se apliquen <ChildAgeBracket> . La antigüedad mínima es cero
si no se especifica otro <ChildAgeBracket>
antes de este. De lo contrario, será uno más grande que el corchete anterior
la edad máxima. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @exclude_from_capacity | 1 | boolean | Un valor booleano que indica si un niño de este rango etario debería se consideran en la capacidad total y secundaria de una sala. Estos las capacidades se pueden configurar con Transaction(Property Data). Por ejemplo, los bebés menores de cierta edad es posible que no se consideren en la capacidad secundaria. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount | 0..1 | float | Valor decimal no negativo que especifica el importe fijo que se va a cobra por un elemento secundario adicional de este grupo. Este cargo usa el la misma moneda que la especificada para las tarifas por noche. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @percentage | 0..1 | float | Un valor decimal de 1 a 99 que especifica el porcentaje de un precio para adultos que debería cobrarse por un niño adicional en esta . Este cargo utiliza la misma moneda que la especificada para tarifas por noche. Consulta el debate en |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @discount_amount | 0..1 | float | Un valor decimal positivo que especifica un descuento fijo de descuento sobre el precio para adultos para un niño adicional en este rango. Este cargo usa la misma moneda que la especificada para el cobro por noche y tasas de cambio. En general, el cargo por un elemento secundario en este rango se calcula de la siguiente manera:
deduciendo el importe fijo del "precio por unidad". El precio unitario es
que se analizan con más detalle en el |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @counts_as_base_occupant | 0..1 | string | Si los valores El objetivo en este caso es obtener un "precio por unidad" en la que el valor real los costos.
El valor de este atributo debe ser
|
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes | 0..1 | RoomTypes | Contenedor de una lista de los tipos de habitaciones a los que se aplican los cargos.
Los cargos se aplican a cada <RoomType>
especificada. Si no se especifica <RoomTypes> , el valor
se aplican cargos a todas las habitaciones en la propiedad especificada. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType | 1..n | RoomType | Especifica un tipo de habitación. El tipo de habitación se define en
elemento <RoomData> en un
Transacción
(datos de propiedad) y se hace referencia a ellos mediante su
<RoomID> . (Es <RoomID>
valor también se hace referencia a través del atributo InvTypeCode en
OTA_HotelRateAmountNotifRQ). |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / 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. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans | 0..1 | RatePlans | Contenedor de una lista de los planes de tarifas a los que se aplican los cargos.
Si no se especifica <RatePlans> , los cargos
se aplica a todos los planes de tarifas. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / 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. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan / @id | 1 | string | El identificador único del plan de tarifas. Este valor se asigna
Valor de PackageID en <PackageData>
en un mensaje de transacción (datos de propiedad) y en la
Atributo RatePlanCode en
<StatusApplicationControl> en ambos
<OTA_HotelRateAmountNotifRQ> y
<OTA_HotelAvailNotifRQ> mensajes.
La cantidad máxima de caracteres permitida es 50. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates | 0..1 | StayDates | Un contenedor para uno o más períodos que determinan la forma se aplican los cargos correspondientes. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange | 1..99 | DateRange | Es un período que especifica las fechas en las que se aplicará la promoción. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @start | 0..1 | Date | 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. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @end | 0..1 | Date | 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. |
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / 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:
Cualquier combinación de caracteres es válida. |
Ejemplos
Cargos para adultos
Los cargos por adultos adicionales solo pueden expresarse como importes fijos. El
El siguiente ejemplo muestra un mensaje ExtraGuestCharges
que especifica que es adulto.
cargos:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<StayDates />
<AgeBrackets>
<AdultCharge amount="50" />
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Estas son las tarifas correspondientes:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
EchoToken="12345678"
TimeStamp="2020-05-19T20:50:37-05:00"
Version="3.0">
<RateAmountMessages HotelCode="ABC">
<RateAmountMessage>
<StatusApplicationControl Start="2020-05-18"
End="2020-05-23"
InvTypeCode="RoomID_1"
RatePlanCode="PackageID_1"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="100.00"
CurrencyCode="USD"
NumberOfGuests="1"/>
<BaseByGuestAmt AmountAfterTax="110.00"
CurrencyCode="USD"
NumberOfGuests="2"/>
<BaseByGuestAmt AmountAfterTax="120.00"
CurrencyCode="USD"
NumberOfGuests="3"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
Cuando un usuario busca cuatro adultos en Google, la tarifa total sería 170 = 120 + 50
120 proviene de la tasa de <BaseByGuestAmt>
, con NumberOfGuests="3"
y 50
proviene de AdultCharge amount="50"
.
Cargos por niños
Los cargos por niños se expresan entre grupos etarios de hasta 17 años y pueden expresada en cantidades fijas, porcentajes o descuentos.
En el siguiente ejemplo, se muestra un mensaje ExtraGuestCharges
que especifica
cargos secundarios:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<AgeBrackets>
<ChildAgeBrackets>
<ChildAgeBracket max_age="3" percentage="10"
counts_as_base_occupant="never" />
<ChildAgeBracket max_age="10" percentage="30"
counts_as_base_occupant="preferred"/>
<ChildAgeBracket max_age="17" discount_amount="10"
counts_as_base_occupant="always" />
</ChildAgeBrackets>
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
Estas son las tarifas correspondientes:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
EchoToken="12345678"
TimeStamp="2020-05-19T20:50:37-05:00"
Version="3.0">
<RateAmountMessages HotelCode="ABC">
<RateAmountMessage>
<StatusApplicationControl Start="2020-05-18"
End="2020-05-23"
InvTypeCode="RoomID_1"
RatePlanCode="PackageID_1"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="100.00"
CurrencyCode="USD"
NumberOfGuests="1"/>
<BaseByGuestAmt AmountAfterTax="110.00"
CurrencyCode="USD"
NumberOfGuests="2"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
```
1. Suppose you want the total price for 2 adults and 1 child of 2 years
of age.
Children aged 0-3 are never included in the rate's occupancy,
so here you should take the double occupancy rate and divide by 2 to
get the unit price. Then, multiply by the percentage rate and sum
with the rate to get the total price.
`unit price ` = 110 / 2 = 55
`total price` = 110 + 55 * 0.1 = 115.5
1. Suppose you want the total price for 1 adult and 2 children, both of 5
years of age.
Children aged 4-10 are preferably included in the rate's
occupancy. you should start by looking for a 3 adult rate since both
children are preferably included in the rate's occupancy. Since
that doesn't exist you should fall back to the 2 adult rate and then,
take this rate and divide by two to get the unit price. Finally,
multiply by the percentage rate and sum with the scaled rate to
get the total price.
`unit price` = 110 / 2 = 55
`total price` = 55 + 55 * 0.3 + 55 * 0.3 = 88
1. Suppose you want the total price for 1 adult and 1 child of 17
years of age.
Children aged 11-17 are always included in the rate's occupancy, so,
in this case, take the double occupancy rate and divide by 2 to get
the unit price. Then, deduct it by the discount amount and sum with
the scaled rate to get the total price.
`unit price` = 110 / 2 = 55
`total price` = 55 + (55 - 10) = 100
Restricciones de cargos
Todos los tipos de restricciones son opcionales y puede combinarse cualquier que se usan.
En el siguiente ejemplo, se muestra un mensaje ExtraGuestCharges
que especifica
restricciones:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<RoomTypes>
<RoomType id="queen" />
<RoomType id="king" />
</RoomTypes>
<RatePlans>
<RatePlan id="free-wifi" />
<RatePlan id="hot-breakfast" />
</RatePlans>
<StayDates>
<DateRange start="2020-09-01" end="2020-09-14"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="50" />
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
En el mensaje anterior se especifica que cualquier producto debe cobrarse a un adulto. que tiene el tipo de habitación “reina” o "rey" con plan de tarifas “Wi-Fi gratis” o “desayuno caliente” para las fechas del 1 al 14 de septiembre de 2020.
Cargos superpuestos
En esta sección, se muestra un ejemplo de un mensaje no válido que especifica diferentes cobra por las mismas combinaciones de fechas y productos.
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
<HotelExtraGuestCharges hotel_id="ABC" action="overlay">
<ExtraGuestCharge>
<RoomTypes>
<RoomType id="queen" />
</RoomTypes>
<RatePlans>
<RatePlan id="free-wifi" />
</RatePlans>
<StayDates>
<DateRange start="2020-09-01" end="2020-09-14"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="50" />
</AgeBrackets>
</ExtraGuestCharge>
<ExtraGuestCharge>
<RoomTypes>
<RoomType id="queen" />
<RoomType id="king" />
</RoomTypes>
<RatePlans>
<RatePlan id="free-wifi" />
<RatePlan id="hot-breakfast" />
</RatePlans>
<StayDates>
<DateRange start="2020-09-01" end="2020-09-05"/>
</StayDates>
<AgeBrackets>
<AdultCharge amount="20" />
</AgeBrackets>
</ExtraGuestCharge>
</HotelExtraGuestCharges>
</ExtraGuestCharges>
El mensaje anterior no es válido porque el primer <ExtraGuestCharge>
especifica que "reina" y "Wi-Fi gratis" del 1 al 14 de septiembre deberían cobrarse
adultos adicionales 50. El segundo <ExtraGuestCharge>
especifica que cualquiera de los atributos "reina" o "rey" con cualquiera de "Wi-Fi gratis" o
“desayuno caliente” del 1 al 5 de septiembre se deben cobrar 20 adultos adicionales.
Hay cargos superpuestos para la "reina" y "Wi-Fi gratis" del 1 de septiembre para
5 y un conflicto entre si se deben cobrar 20 o 50 por un adulto adicional.
Respuestas
Sintaxis
El mensaje ExtraGuestChargesResponse
usa lo siguiente:
sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues will be populated. -->
<Success/>
<Issues>
<Issue code="issue_code" status="issue_type">issue_description</Issue>
</Issues>
</ExtraGuestChargesResponse>
Elementos y Atributos
El mensaje ExtraGuestChargesResponse
tiene los siguientes elementos
y atributos:
Elemento / @Attribute | Casos | Tipo | Descripción |
---|---|---|---|
ExtraGuestChargesResponse | 1 | Complex element | El elemento raíz que indica el éxito o los problemas de una solicitud
Mensaje de solicitud de ExtraGuestCharges . |
ExtraGuestChargesResponse / @timestamp | 1 | DateTime | La fecha y hora de creación de este mensaje. |
ExtraGuestChargesResponse / @id | 1 | string | El identificador único del mensaje ExtraGuestCharges asociado. |
ExtraGuestChargesResponse / @partner | 1 | string | La cuenta de socio de este mensaje. |
ExtraGuestChargesResponse / Success | 0..1 | Success | Indica que el mensaje ExtraGuestCharges se procesó correctamente.
sin advertencias, errores ni fallas.
|
ExtraGuestChargesResponse / Issues | 0..1 | Issues | Un contenedor para uno o más problemas encontrados durante el procesamiento del
ExtraGuestCharges mensaje.
|
ExtraGuestChargesResponse / Issues / Issue | 1..n | Issue | La descripción de una advertencia, un error o una falla que se encontró mientras
el procesamiento del mensaje ExtraGuestCharges Puedes encontrar detalles sobre estos problemas
en Mensajes de error del estado del feed. |
ExtraGuestChargesResponse / Issues / Issue / @code | 1 | integer | Es el identificador del problema. |
ExtraGuestChargesResponse / Issues / Issue / @status | 1 | enum | El tipo de problema encontrado. Los valores válidos son |
Ejemplos
Listo
La siguiente es una respuesta a un problema
ExtraGuestCharges
mensaje.
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</ExtraGuestChargesResponse>
Problemas
La siguiente es una respuesta a un mensaje ExtraGuestCharges
no procesado
debido a errores.
<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</ExtraGuestChargesResponse>