Hora fija
Salidas exactas del día, como un tour a las 10:00 y otro a las 15:00. El cliente elige un horario concreto, no un rango.
Disponibilidad
Nada de un botón "generar calendario" que alguien olvida pulsar, ni miles de filas creadas por si acaso. Cada fecha que ve un cliente se resuelve en el instante, a partir de reglas, así consultes mañana o dentro de diez años.
Un mismo motor decide cuándo entra alguien y cuándo se repite eso, sin necesitar una configuración distinta para cada caso.
Salidas exactas del día, como un tour a las 10:00 y otro a las 15:00. El cliente elige un horario concreto, no un rango.
Varias franjas de llegada por día, como "8:00 a 11:00" o "13:00 a 18:00". El cliente elige la ventana, no un minuto exacto.
Sin franjas horarias: el producto está abierto el día completo, como una entrada general a un museo. El cliente reserva la fecha, no una hora.
Un horario semanal que se repite sin fin, o una lista corta de fechas exactas para algo puntual, como un concierto o una función única.
Cinco pasos, en este orden exacto, cada vez que alguien consulta el calendario.
¿Hay una excepción configurada para este día exacto? Un cierre puntual o un horario especial siempre gana sobre cualquier regla recurrente.
Si no hay excepción, se busca qué regla aplica ese día de la semana. Si dos reglas se solapan (una general y una de temporada), gana la más específica: la que tiene fecha de inicio y fin propias.
La regla o excepción devuelve sus horarios, interpretados según el modo de disponibilidad de la opción: hora fija, ventana o día completo.
Cada franja se compara contra el corte de reserva configurado, calculado en la zona horaria del producto, nunca en la del servidor. Si ese instante ya pasó, la franja deja de ofrecerse aunque falten horas para esa hora local.
Si la opción tiene un horizonte de reserva (por ejemplo, 90 días), cualquier fecha más allá de ese límite ni siquiera se calcula.
La misma consulta que resuelve el calendario resuelve también el precio final, ya con impuestos, y el cupo restante de cada franja. No hay un "precio desde" sin confirmar aparte: esto es exactamente lo que usa el checkout para cobrar.
{
"date": "2026-08-14",
"is_open": true,
"min_price_display": "€42.00",
"slots": [
{
"start_time": "18:00",
"end_time": null,
"is_open": true,
"remaining_capacity": 12,
"min_price_display": "€42.00"
},
{
"start_time": "20:30",
"end_time": null,
"is_open": true,
"remaining_capacity": 4,
"min_price_display": "€48.00"
}
]
}Las fechas se comparan siempre como texto de calendario ("2026-08-14"), nunca como instantes absolutos. Comparadas como instantes, una opción de "fechas fijas" (un concierto, por ejemplo) podía dejar de resolver como reservable justo en su propio día, según de qué lado del huso horario UTC quedara el producto. Encontramos ese caso, lo documentamos y lo cerramos con una batería de tests dedicada. Un producto sin franja horaria (todo el día) tampoco se queda sin corte de reserva: su límite se ancla al final del día local, no a un instante arbitrario.
Gana la más específica. Si hay una regla general para todos los martes y otra de temporada que también cubre ese martes con fecha de inicio y fin, se aplica la de temporada. Las reglas se ordenan por especificidad antes de resolver, así que no importa cuál se creó primero.
Contra la hora exacta del horario, en la zona horaria propia del producto. Un horario de las 8:00 con dos horas de antelación deja de mostrarse a las 6:01, calculado donde ocurre la experiencia, no donde está el servidor. Para un producto sin franja horaria, el corte se ancla al final del día local.
No. Nada se pre-genera ni se materializa. Cada consulta calcula las fechas y franjas en el momento, a partir de las reglas y excepciones vigentes, así que un horario configurado hoy sigue funcionando exactamente igual dentro de diez años, sin ningún proceso de mantenimiento.
Sí. La misma consulta resuelve el calendario, el precio final con impuestos y el cupo restante de cada franja, con el peor caso entre los tipos de entrada que compartan aforo. Es justo lo que usa el checkout para cobrar, no una estimación aparte.
Sí, con una excepción de calendario. Se puede cerrar una fecha puntual, como un feriado, o darle un horario distinto, como uno reducido en Nochevieja, sin modificar la regla recurrente que rige el resto del año.
Tiqory mantiene disponibilidad, precios, pagos y acceso trabajando juntos mientras tu operación crece. Cuéntanos hacia dónde vas; te mostramos cómo llegar sin volver a empezar.