Cuando se estiman los reembolsos, debes hacer siempre comprobaciones con respecto a los datos incluidos en cancelPolicyInfoList.

Si el cliente realiza la cancelación en el periodo establecido en la política de cancelación del hotel, primero debes calcular la penalización por dicha cancelación y, después, restarla del atributo total de ChargeableRateInfo (Información sobre el importe a cargar).

Si el cliente realiza la cancelación fuera del período establecido en la política, devuelve el valor del atributo "total" de "ChargeableRateInfo" (Información sobre el importe a cargar) como el reembolso estimado.

Siempre que devuelvas estimaciones para que se muestren a los clientes, utiliza mensajes claros en los que se indique que se trata únicamente de una estimación sin ninguna garantía explícita ni implícita. Los ajustes de garantía de equiparación de precio, los descuentos aplicados después de la reserva inicial, etc., no se pueden representar en la API.

Los agentes de asistencia al cliente de EAN son los únicos que pueden ver los importes exactos que se van a reembolsar. Llama al número de teléfono de asistencia de tu región para conocer el importe preciso.

Cálculo y aplicación de las penalizaciones de cancelación en las estimaciones

Esta sección hace referencia a información incluida en cancelPolicyInfoList. Conviene que te familiarices con la estructura de esta matriz antes de tratar de implementar estimaciones de reembolsos.
Para determinar si una penalización de aplica a una cancelación, comprueba primero el valor del elemento startWindowHours en el segundo nodo de cancelPolicyInfo.

Si la hora en la que se solicita la cancelación se encuentra dentro del período establecido, deberás calcular la penalización y restarla de la estimación. En caso contrario, devuelve simplemente el valor total cobrado inicialmente como tu estimación.

Para calcular la penalización, consulta los valores de los elementos de detalles de la penalización devueltos en el primer nodo de cancelPolicyInfo.

Ejemplos:

<CancelPolicyInfoList>
 <CancelPolicyInfo>
   <versionId>206071749</versionId>
   <cancelTime>19:00:00</cancelTime>
   <startWindowHours>0</startWindowHours>
   <amount>50</amount>
   <currencyCode>USD</currencyCode>
   <timeZoneDescription>(GMT-06:00) Hora central (EE. UU. y Canadá)</timeZoneDescription>
 </CancelPolicyInfo>
 <CancelPolicyInfo>
  <versionId>208751445</versionId>
  <cancelTime>19:00:00</cancelTime>
  <startWindowHours>48</startWindowHours>
  <amount>0</amount>
  <currencyCode>USD</currencyCode>
  <timeZoneDescription>(GMT-06:00) Hora central (EE. UU. y Canadá)</timeZoneDescription>
</CancelPolicyInfo>
</CancelPolicyInfoList>

startWindowHours en el segundo nodo devuelve el valor 48. El cliente cancela la reserva 46 horas antes del inicio de su estancia. Debes restar 50 USD del total cobrado cuando se hizo la reserva para calcular la estimación de forma adecuada.

Cada nodo de cancelPolicyInfo puede contener amount (importe), percent (porcentaje) o nightCount (número de noches) por separado o combinados (amount y nightCount o amount y percent).

Ninguna otra combinación dentro de un solo nodo es válida, por lo que debería tratarse como un error. Ignora los elementos que no devuelven nada o 0, ya que no intervienen en el cálculo de la política.

Recuerda que es posible que las políticas tengan penalizaciones tanto dentro del período como fuera de él (valores positivos en el primer y el segundo nodo). Es una situación poco habitual, pero, en la medida en que la combinación de valores de penalización sea válida, tal y como se ha descrito anteriormente, la política completa seguirá siendo válida.

Cálculos de penalizaciones y ejemplos

En estos ejemplos de penalizaciones se ilustran todas las combinaciones válidas posibles que se puede esperar de la API. En la mayoría de los casos, solo necesitas calcular las penalizaciones de las cancelaciones realizadas dentro del período de la política. Sin embargo, hay casos en los que puede ser necesario calcular penalizaciones para cancelaciones realizadas también fuera del período (consulta el último ejemplo de esta página).

Cuando calcules el impuesto de las tarifas por noche individuales, recuerda calcular la proporción de impuesto con nightlyRateTotal, y no con total. Esta indicación tiene como fin exclusivo ayudarte a crear tu estimación; no se trata del modo en que EAN calcula el impuesto en los reembolsos.



Ten en cuenta que los valores de impuestos restados para los cálculos de penalizaciones por noches son valores
por noche
, y no valores totales.

Consulta las siguientes tarifas y totales de todos los ejemplos mostrados a continuación:

<ChargeableRateInfo {truncated} total="983.34" nightlyRateTotal="816.05">
    <NightlyRatesPerRoom size="2">
        <NightlyRate baseRate="400.58" rate="400.58" promo="false"></NightlyRate>
        <NightlyRate baseRate="415.47" rate="415.47" promo="false"></NightlyRate>
    </NightlyRatesPerRoom>
<Surcharges size="1">
    <Surcharge type="TaxAndServiceFee" amount="167.29"></Surcharge>
</Surcharges>

Cálculo de un reembolso con un valor de amount (importe) de penalización de cancelación igual a 50

  • total - importe
  • 983,34 - 50= 933,34 como reembolso estimado

Cálculo de un reembolso con un valor de percent (porcentaje) de penalización de cancelación igual a 25

  • total - (porcentaje del total)
  • 983,34 - (25 % de 983,34)= 737,50 como reembolso estimado

Cálculo de un reembolso con un valor de nightCount (número de noches) de penalización de cancelación igual a 1

  • total - (valor de tarifa de primera noche + impuesto de primera noche)
  • 983,34 - (400,58 + 82,12)= 500,64 como reembolso estimado

Cálculo de un reembolso con un valor de nightCount (número de noches) de penalización de cancelación igual a 2

  • total - ([valor de tarifa de primera noche + impuesto de primera noche] + [valor de tarifa de segunda noche + impuesto de segunda noche])
  • 983,34 - ([400,58 + 82,12] + [415,47 + 85,17]) = 0,00 (sin reembolso tras la penalización)

Cálculo de un reembolso con un valor de amount (importe) de penalización de cancelación igual a 20 y un valor de percent (porcentaje) igual a 10

  • total - importe - (porcentaje del total)
  • 983,34 - 20 - (10 % de 983,34)= 865,01 como reembolso estimado

Cálculo de un reembolso con un valor de amount (importe) de penalización de cancelación igual a 30 y un valor de nightCount (número de noches) igual a 1

  • total - (importe + [valor de tarifa de primera noche + impuesto de primera noche])
  • 983,34 - (30 + [400,58 + 82,12]) = 470,64 como reembolso estimado


Penalizaciones dentro y fuera del período establecido en la política

En la política de cancelación de ejemplo siguiente se establecen penalizaciones por las cancelaciones realizadas en el período establecido en la política y las realizadas fuera de él.
Los cálculos de ejemplo utilizan los mismos valores totales y tarifas que en los ejemplos anteriores.

<CancelPolicyInfoList> 
 <CancelPolicyInfo>
  <versionId>208198632</versionId>
<cancelTime>23:59:00</cancelTime>
<startWindowHours>0</startWindowHours>
<nightCount>0</nightCount>
<percent>100</percent>
<currencyCode>USD</currencyCode>
<timeZoneDescription>(GMT+08:00) Kuala Lumpur, Singapore </timeZoneDescription> </CancelPolicyInfo>

<CancelPolicyInfo>
<versionId>208198631</versionId>
<cancelTime>23:59:00</cancelTime>
<startWindowHours>168</startWindowHours>
<nightCount>1</nightCount>
<currencyCode>USD</currencyCode>
<timeZoneDescription>(GMT+08:00) Kuala Lumpur, Singapore</timeZoneDescription>
</CancelPolicyInfo>
</CancelPolicyInfoList>

Cálculo de un reembolso dentro del período (el cliente cancela cuando quedan 168 horas o menos para el registro de entrada):


  • total - (% of total)

  • 983.34 - (100% of 983.34)= 0 como reembolso
    estimado

Cálculo de un reembolso fuera del período (el cliente cancela en cualquier momento antes de que comience el período establecido en la política de 168 horas):


  • total - (first nightly rate value + first night's tax)

  • 983.34 - (400.58 + 82.12) = 500.64

Cancela una reserva existente para una habitación individual.

Para cancelar una reserva completa de varias habitaciones, se debe cancelar una por una del itinerario.

Si necesita ayuda para validar o enviar un mensaje sobre las sanciones por cancelación del hotel, consulte nuestra documentación en la matriz de cancelPolicyInfoList.
Siempre se devolverá un error al cancelar reservas estáticas de prueba. Se trata de algo normal. Las reservas de prueba nunca se introducen en nuestros sistemas de pago, alojamiento o inventario.
Para verificar la cancelación de su prueba, busque nuestro mensaje de correo electrónico de cancelación posterior creado de forma automática tras realizar la prueba, o bien utilice una solicitud de itinerario de seguimiento.

Si recibe un error al cancelar una reserva activa, consulte nuestra página de errores de cancelación.


Formatos de solicitud
URL de XML/REST: GET http://api.ean.com/ean-services/rs/hotel/v3/cancel?
Elemento principal de XML: <HotelRoomCancellationRequest>



Parámetros de solicitud

Parámetros base
Nombre Valor Obligatorio Descripción
itineraryId entero largo El ID de itinerario que se proporcionó durante la reserva.
email cadena La dirección de correo electrónico que se proporcionó durante la reserva.
confirmationNumber cadena El número de confirmación de la habitación que se va a cancelar.

Recuerde que las reservas de varias habitaciones deben cancelarse habitación por habitación en solicitudes independientes (no funcionará el envío de varios números de confirmación en una sola solicitud).
reason cadena no El código del motivo de la cancelación, si procede. Esto no es obligatorio y normalmente no afecta al proceso de cancelación.

Valores:
HOC: el hotel me ha solicitado una cancelación
COP: cambio de planes
FBP: he encontrado un precio mejor
FBH: he encontrado un hotel mejor
CNL: he decidido cancelar mis planes
NSY: prefiero no dar un motivo
OTH: otros


Contenido de la respuesta
Elemento principal: HotelRoomCancellationResponse

Nombre Valor Descripción
cancellationNumber cadena El número de referencia de la cancelación, si es correcto. Los clientes deben seguir conservando, además de este número de cancelación, sus itinerarios y números de confirmación para futuras comunicaciones.

Ejemplo de solicitud XML:

http://api.ean.com/ean-services/rs/hotel/v3/cancel?
minorRev=[current minorRev #]
&cid=55505
&apiKey=[xxx-yourOwnKey-xxx]
&customerUserAgent=[xxx]
&customerIpAddress=[xxx]
&customerSessionId=[xxx]
&locale=en_US
&currencyCode=USD
&xml=
<HotelRoomCancellationRequest>
	<itineraryId>xxxxxxx</itineraryId>
	<email>email@domain.com</email>
	<reason>COP</reason>
	<confirmationNumber>xxxxxxxx</confirmationNumber>
</HotelRoomCancellationRequest>

Ejemplo de respuesta XML:

<ns2:HotelRoomCancellationResponse> 
   <customerSessionId>XXXX</customerSessionId>
   <cancellationNumber>XXXXXX</cancellationNumber>
</ns2:HotelRoomCancellationResponse>

Ejemplo de solicitud REST:

http://api.ean.com/ean-services/rs/hotel/v3/cancel?
minorRev=[current minorRev #]
&cid=55505
&apiKey=[xxx-yourOwnKey-xxx]
&customerUserAgent=[xxx]
&customerIpAddress=[xxx]
&customerSessionId=[xxx]
&locale=en_US
&currencyCode=USD
&itineraryId=xxxxxxx
&email=email@domain.com
&reason=COP
&confirmationNumber=xxxxxxxx 

Ejemplo de respuesta JSON:

{"HotelRoomCancellationResponse":{"customerSessionId":"XXXX","cancellationNumber":"XXXXX"}}