Unidades

Una unidad es un espacio rentable dentro de una propiedad: una habitación de
hotel, un apartamento, una cabaña, una cama de hostal. Toda reserva apunta a
exactamente una unidad.

Una unidad nunca lleva precio. El precio pertenece a un
plan tarifario enganchado a ella.

Las tres configuraciones

Una unidad está en exactamente una de tres configuraciones. Son mutuamente
excluyentes — una unidad nunca puede ser a la vez un room type y una hija de casa
completa — y la elección decide cómo se cuenta la disponibilidad, que es por lo
que importa más de lo que parece.

ConfiguraciónQué esCómo funciona la disponibilidad
ÚnicaUn solo espacio vendible. Un loft, una cabaña, un apartamento suelto. Es lo predeterminado.Libre salvo que la cubra una reserva que se traslape o un bloqueo de venta.
Casa completaUna unidad de lugar entero cuyas hijas son las habitaciones de adentro. Un nivel de profundidad — las hijas no tienen hijas.Bloqueo bidireccional, abajo.
Room typeUn tipo que representa a N habitaciones idénticas — "Doble Deluxe ×4" — cada habitación física una fila de inventario (201, 202, 203, 204).count_of_rooms − reservas traslapadas − bloqueos de venta.
flowchart TD
    P["Propiedad"] --> U1["Unidad — Única<br/>un apartamento"]
    P --> U2["Unidad — Casa completa<br/>la villa entera"]
    U2 --> C1["Unidad hija: Habitación A"]
    U2 --> C2["Unidad hija: Habitación B"]
    P --> U3["Unidad — Room type<br/>Doble Deluxe x4"]
    U3 --> I1["habitación 201"]
    U3 --> I2["habitación 202"]
    U3 --> I3["habitación 203"]
    U3 --> I4["habitación 204"]

Casa completa: el bloqueo va en los dos sentidos

Vender la villa entera tiene que cerrar sus dormitorios, y vender un dormitorio
tiene que cerrar la villa. Entonces:

  • Una reserva sobre el padre bloquea a todas las hijas en esas fechas.
  • Una reserva sobre cualquier hija bloquea al padre.
  • Las hermanas siguen independientes. Que se venda la Habitación A no dice
    nada de la Habitación B.
flowchart LR
    B["Reserva sobre el padre"] -->|bloquea| CA["Habitación A"]
    B -->|bloquea| CB["Habitación B"]
    CA2["Reserva sobre la Habitación A"] -->|bloquea| PP["El padre"]
    CA2 -. "NO bloquea" .-> CB2["Habitación B"]

Room type: se vende el tipo, se asigna la habitación

Un huésped compra "una Doble Deluxe"; Axis Pro decide que es la 201. Las
habitaciones físicas son filas de unit_inventory con una etiqueta, un orden y
una miniatura, y una reserva sobre un room type registra las dos cosas: el tipo
en unit_id, la habitación asignada en unit_inventory_id.

Un room type también puede funcionar sin filas de inventario. Entonces no hay
espacios por habitación y la disponibilidad es un conteo puro contra
count_of_rooms — una configuración perfectamente válida, solo que en ella el
calendario no puede mostrar en qué habitación está cada quien.

Para dormitorios compartidos que se venden por cama, room_kind: dorm.

Esta estructura es interna de Axis Pro. Cuando el inventario se empuja a
las OTAs, cada unidad es su propio listing — una casa completa padre y sus
hijas son listings separados, y el bloqueo entre ellas viaja como
actualizaciones de disponibilidad, no como una relación que el canal entienda.
Ver
Distribución y Channel Manager.

Qué saca a una unidad de la venta

Tres cosas distintas, y no son intercambiables:

El estado. El estado de una unidad puede bloquear la venta de plano
(maintenance, blocked). Este es el eje que Housekeeping no toca — ver
abajo.

Los bloqueos de venta. Un bloqueo por rango de fechas sobre una unidad. Dos
alcances: de unidad completa, que cierra todas las habitaciones de un room
type; y de espacio, que cierra exactamente una habitación física. Una tarea
de mantenimiento que bloquea una habitación escribe un bloqueo de venta
corriente, que es por lo que aparece en la unidad, en el calendario y en los
canales.

La ventana de disponibilidad. Un horizonte por unidad que aplica a ambos,
el canal directo y las OTAs — que es todo el punto de que exista. Hasta tres
límites independientes, evaluados juntos, cada uno omitido cuando no está
puesto:

LímiteSignificado
availability_start_dateNinguna noche antes de esta fecha.
availability_end_dateNinguna noche después de esta fecha.
availability_window_daysNinguna noche a más de N días de hoy.

Los dos primeros son una temporada fija. El tercero es un horizonte que corre
medido desde el día actual de la propiedad, así que cada medianoche local se
vuelve reservable una noche más.

Housekeeping no saca una unidad de la venta. Una habitación sucia se sigue
vendiendo y al huésped se le sigue haciendo check-in; el detalle de la reserva
dice que la habitación no está lista y recepción decide qué hacer. Solo un
bloqueo de mantenimiento saca una habitación de la venta, y una habitación
bloqueada sigue estando "limpia" y sigue estando "lista" — los dos ejes son
independientes. Ver Housekeeping.

Retirar una unidad

Borrar una unidad es un borrado suave: el registro sobrevive y también las
reservas que apuntan a ella, que conservan sus fechas, sus folios y su dinero.

Borrar es entonces una acción de inventario, no una comercial. Para dejar de
vender una habitación en la que el hotel todavía tiene estadías, va un bloqueo
de venta
o un estado que bloquee — los dos dejan la habitación direccionable
mientras la cierran a ventas nuevas. Una unidad se borra cuando ya está vacía.

En la API

  • Merchant: GET /api/merchant/units, más /units/{unit}/inventory para las
    habitaciones físicas de un room type y /units/{unit}/sell-stops para los
    bloqueos por fecha.
  • External: GET /units y
    GET /units/{unit}. is_room_type distingue los dos;
    count_of_rooms siempre es 1 salvo que sea un room type.
  • Una unidad aparece en la External API solo si está publicada, no bloqueada
    para la venta, y tiene al menos un plan tarifario activo en el canal de venta
    api. Una lista vacía casi siempre es esa tercera condición — ver
    Planes tarifarios.

Relacionado


Did this page help you?