Saltar al contenido

Reglas de disponibilidad que resisten una semana real

«No disponible» parece un único estado, pero puede significar que el espacio está cerrado, que el recurso está bloqueado o que su capacidad ya está ocupada. Separar esos motivos permite tomar mejores decisiones y dar respuestas útiles.

Actualizado · Por

Tres tipos de «no disponible»

Una agenda sencilla suele guardar franjas libres y ocupadas. Un espacio real necesita distinguir al menos tres capas. La disponibilidad recurrente define cuándo se puede vender normalmente un recurso: por ejemplo, de lunes a viernes de 08:00 a 20:00. Los bloqueos operativos retiran una franja concreta por mantenimiento, limpieza, un evento privado o una incidencia. Por último, las reservas activas consumen el recurso completo o parte de su capacidad.

Estas capas no son intercambiables. Abrir excepcionalmente un domingo no debería modificar para siempre el horario semanal, y cancelar una reserva no debe eliminar un bloqueo de mantenimiento. Cada una tiene propietario, motivo y ciclo de vida diferentes.

Evalúalas por separado cuando llega la solicitud

No conviene materializar meses de «huecos disponibles» en una tabla. Esos huecos quedan obsoletos en cuanto cambia un horario, aparece un bloqueo o se confirma una reserva. Boris evalúa las reglas cuando alguien solicita una franja: comprueba que el recurso esté activo, que el intervalo caiga dentro del horario, que no exista un bloqueo y que siga habiendo capacidad.

El resultado no es solo sí o no. También conserva el motivo del rechazo, porque «cerrado», «bloqueado» y «solo quedan dos puestos» requieren acciones distintas por parte del cliente.

Lista de recursos de Boris con salas, cabinas, zonas abiertas y oficinas privadas, cada una con su modalidad y capacidad
Cada recurso conserva su propia modalidad y capacidad; las reglas de disponibilidad se aplican sobre esa base.

Los bloqueos no son reservas

Crear un cliente ficticio llamado «Mantenimiento» y reservarle la sala parece cómodo, pero contamina ingresos, ocupación y comunicaciones. Además, una reserva cancelada suele liberar el espacio, mientras que una reparación debe seguir bloqueándolo hasta que alguien la cierre explícitamente.

Un bloqueo necesita motivo, inicio, fin y responsable. No necesita factura, invitación, pago ni perfil de cliente. Modelarlo por separado evita que las estadísticas mezclen demanda real con trabajo interno.

Reglas que se olvidan hasta que alguien reclama

  • Zona horaria: las reglas pertenecen a la zona del espacio, no a la del navegador del usuario.
  • Intervalos que cruzan medianoche: 22:00–02:00 no puede evaluarse como una franja del mismo día.
  • Antelación mínima: una sala puede estar libre y aun así no ser reservable cinco minutos antes.
  • Duración mínima y máxima: disponibilidad no significa que cualquier duración sea válida.
  • Capacidad: una zona compartida puede aceptar otra persona aunque ya contenga reservas.

Ordena los controles por la respuesta que producen

Comprueba primero los límites absolutos y baratos: recurso activo, horario válido y bloqueo operativo. Después calcula solapamientos y capacidad. El orden mejora el rendimiento, pero sobre todo mejora el mensaje: «el espacio está cerrado a esa hora» ayuda más que «capacidad agotada», aunque ambas condiciones fueran ciertas.

Preguntas frecuentes

¿Pueden convivir horarios, cierres y bloqueos recurrentes en una sola tabla?

No sin perder algo. Un cierre puntual tiene instantes reales de inicio y fin, un bloqueo recurrente es una regla sin fecha de fin y el horario es una propiedad de todo el espacio. Aplanados en una única tabla de periodos bloqueados, o generas miles de filas para el caso recurrente o pierdes la recurrencia más allá del horizonte pregenerado.

¿Se puede guardar un cierre como una reserva a nombre de la casa?

Es tentador y sale mal. Un bloqueo no es una reserva: no tiene cliente, precio, estado de pago ni lugar en las cifras de ocupación e ingresos. Guardarlo como reserva falsa obliga a cada informe a acordarse de excluirlo, y el que lo olvide exagerará en silencio lo lleno que está el espacio.

¿Por qué dar a cada rechazo su propio mensaje?

Porque llevan al miembro a soluciones distintas. «La sala está bloqueada esos días» invita a elegir otro día; «la sala no está disponible a esa hora» invita a elegir otra hora. Un rechazo genérico le obliga a adivinar, y adivinar suele acabar en un mensaje a recepción.