Reglas de precio

Un plan tarifario tiene un precio base. Todo lo demás
que mueva el precio de una noche es una capa aplicada encima, y las capas
corren en un solo orden fijo. El calendario, una reserva y el channel manager
leen todos el resultado de ese mismo recorrido — no hay una segunda manera de
calcular un precio.

flowchart TD
    START(["Una noche,<br/>un plan tarifario"]) --> CUSTOM{"¿Vendida a un<br/>precio acordado?"}
    CUSTOM -- Sí --> FIN(["Precio final"])
    CUSTOM -- No --> BASE["Tomar el precio base"]
    BASE --> MAN{"¿Hay un precio escrito a mano<br/>para esta noche?"}
    MAN -- Sí --> USEMAN["Usarlo y no<br/>evaluar nada más"]
    MAN -- No --> SEA{"¿Alguna temporada<br/>cubre la noche?"}
    SEA -- Sí --> SEAWIN["Aplicar la temporada de mayor prioridad"]
    SEA -- No --> DEM
    SEAWIN --> DEM
    DEM{"¿Alguna regla de demanda<br/>cumple su condición?"}
    DEM -- Sí --> DEMWIN["Aplicar la regla más cerca<br/>de su umbral"]
    DEM -- No --> DIS
    DEMWIN --> DIS
    DIS{"¿Califica algún<br/>descuento?"}
    DIS -- Sí --> DISWIN["Aplicar SOLO el mayor"]
    DIS -- No --> CLAMP
    DISWIN --> CLAMP
    CLAMP{"¿Fuera del piso o<br/>techo del plan?"}
    CLAMP -- Sí --> FIX["Ajustar al límite"]
    CLAMP -- No --> SUB
    FIX --> SUB
    USEMAN --> SUB
    SUB{"¿Es una variación?"}
    SUB -- Sí --> SUBADJ["Aplicar su propio ajuste"]
    SUB -- No --> NEG
    SUBADJ --> NEG
    NEG{"¿Hay tarifa negociada<br/>de grupo en esta línea?"}
    NEG -- Sí --> NEGWIN["Aplicarla — reemplaza<br/>todo lo de arriba"]
    NEG -- No --> FEES
    NEGWIN --> FEES
    FEES["Sumar los fees de huésped del plan"] --> FIN

Dos reglas separan casi toda la confusión que hay acá:

  • Las capas se acumulan. "Es temporada alta", "estoy casi vacío" y "reservó
    con seis meses de anticipación" son hechos simultáneos sobre la misma noche.
    Las tres aplican.
  • Dentro de una capa, gana exactamente una regla. Una temporada, una regla de
    demanda, un descuento. Nunca dos del mismo tipo.

Las capas

Temporadas — ajustes acotados por fechas que se superponen a la tarifa base
para ciertos días de la semana, unidades y planes. Cuando varias cubren una
noche, gana la de mayor prioridad.

Reglas de demanda — ajustes guiados por la ocupación que se apilan encima de
lo que haya producido la temporada. Cuando varias califican, gana la regla cuyo
umbral esté más cerca de cruzarse.

Descuentos — cuando varios califican, aplica solo el mayor. No se
acumulan.

Piso y techo — topes en porcentaje sobre el resultado compuesto. Existen para
atrapar lo que el motor apiló por su cuenta — una temporada encima de una regla
de demanda que deja una noche al 57.6% de la base sin que nadie haya escrito ese
número.

Un precio escrito a mano termina el recorrido

Si alguien escribió un precio para esa noche en el calendario, ese es el precio
de venta. No lo mueve ninguna temporada, ninguna regla de demanda, ningún
descuento, y ni siquiera el piso y el techo del propio plan.

El razonamiento: cada capa responde la misma pregunta — cuánto cuesta esta noche
— y una persona mirando esa fecha concreta la respondió. Ninguna regla automática
tiene más autoridad que eso. El tope existe para corregir al motor, no para
corregir a alguien que escribió una cifra a propósito.

Solo dos pasos corren después, y ninguno es una capa de precio: el ajuste propio
de una variación (que es la definición de esa variación) y los fees de huésped
del plan (que se suman al lado del precio por noche, no adentro).

El costo, dicho claro. Un mes de precios escritos a mano apaga el programa
de reserva anticipada para ese mes, y lo hace en silencio salvo que alguien
abra la explicación de precio. Ese es el precio de una regla lo bastante simple
como para explicarse.

Las tarifas personalizadas lo terminan todavía más fuerte

Una tarifa personalizada es un precio que una persona acordó para una estadía
concreta — un huésped que llamó, que negoció en el mostrador, o que llegó por un
canal que no pasa por ningún plan tarifario.

La reserva no tiene plan tarifario, y rate_plan_id: null es el marcador —
no hay una bandera aparte. Una reserva lleva entonces o un plan tarifario o una
tarifa personalizada, nunca las dos y nunca ninguna.

No se evalúa nada. No es "se evaluó y perdió", como una temporada pierde contra
un precio escrito a mano — una tarifa personalizada se calcula por un camino
aparte que jamás carga una ventana de temporada, demanda o descuento. La cifra
que escribió la persona es literalmente todo el cálculo.

Dos consecuencias:

  • Todo está incluido. Ni fee de niño, ni fee de limpieza, ni fees del plan —
    no hay plan del cual heredarlos, e inventar uno rompería la regla de que el
    total es exactamente lo acordado. Los huéspedes extra siguen contando contra la
    capacidad de la unidad; simplemente no mueven el precio.
  • Mover las fechas exige un precio nuevo. El mapa de noches cubre exactamente
    la estadía, así que cambiar las fechas lo invalida. Axis Pro no va a repetir el
    precio de la última noche ni a repartir el total sobre un rango nuevo — las dos
    cosas serían adivinar un número que nadie dijo.

Un precio acordado es siempre el bruto

El perfil de impuestos de una propiedad dice si sus precios ya traen impuesto
adentro. Para una tarifa publicada eso es una convención de precios corriente: un
precio de lista de 500 bajo un perfil exclusivo se vende a 560, y nadie se
sorprende.

Para un precio acordado no lo es. 500 es lo que una persona prometió por
teléfono, así que 500 es lo que paga el huésped y el impuesto sale de adentro —
bajo ambos perfiles. Cobrar 560 contra un acuerdo de 500 no llega como una
pregunta de configuración; llega como un reclamo del huésped.

Esto cubre las tarifas personalizadas y la tarifa negociada fija por noche de
un grupo. No cubre la tarifa negociada por porcentaje de un grupo — esa
es un descuento medido contra lo que la noche se habría vendido, así que lo que
llega al folio sigue siendo un precio de lista con un modificador encima, y el
perfil sigue gobernando.

Los fees de un plan tarifario son montos configurados, no acordados, así que
siguen obedeciendo al perfil incluso dentro de una reserva cuyas noches no.

En la API

  • Merchant: /api/merchant/pricing-seasons, /pricing-demand-rules,
    /pricing-discount-rules; una tarifa personalizada se fija en la propia
    reserva.
  • External: GET /rates devuelve precios con cada
    regla aplicable ya aplicada. Deliberadamente no dice qué regla fijó un
    precio — quien integra debería mostrar el precio, no explicarlo. Para cotizar
    una estadía concreta va POST /quote.

Relacionado


Did this page help you?