Cómo evitar dobles reservas en un coworking
Una doble reserva rara vez es un problema visual del calendario. Normalmente aparece porque dos partes del sistema no comparten la misma definición de «ocupado». La solución empieza por definirla con precisión.
El problema no es el calendario
Dos personas llegan a las 10:00 con confirmación para la misma sala. El calendario solo está dibujando fielmente dos registros que nunca debieron coexistir. La segunda solicitud tenía que ser rechazada al crearla, dentro de la misma operación que guarda la reserva.
Las reservas consecutivas no se solapan
Los intervalos deben tratarse como semiabiertos: incluyen el inicio y excluyen el final. Dos reservas se solapan únicamente cuando cada una comienza antes de que termine la otra:
start_datetime < :requested_end
AND end_datetime > :requested_start
Así, 10:00–11:00 y 11:00–12:00 son compatibles. En cambio, 10:30–11:30 sí colisiona con la primera. Usar comparaciones inclusivas en ambos extremos desperdicia horas vendibles y genera falsos conflictos.
«Ocupado» significa dos cosas diferentes
En una sala reservada completa, una sola reserva bloquea todo el recurso. En una zona de doce puestos, una reserva de tres personas solo consume tres plazas. El primer caso busca la existencia de un solapamiento; el segundo suma las plazas de todas las reservas solapadas y las compara con la capacidad.
Cuatro motivos para rechazar una solicitud
- El recurso está bloqueado: mantenimiento, limpieza o evento interno.
- Ya existe una reserva completa: nadie más puede ocupar el recurso.
- Ya hay plazas individuales vendidas: no se puede vender ahora el área completa.
- No queda capacidad suficiente: todavía hay plazas, pero menos de las solicitadas.
Mostrar el motivo exacto permite ofrecer una alternativa: reducir asistentes, elegir otra hora o seleccionar otro recurso.

Las reservas canceladas deben liberar la franja
La consulta de disponibilidad debe considerar solo estados que retienen capacidad, como pending y confirmed. Una cancelación debe liberar la franja. Pero ignorar las reservas pendientes también es peligroso: dos pagos simultáneos podrían confirmar la misma capacidad. Lo correcto es que el estado pendiente retenga temporalmente el recurso y caduque.
Registra también los rechazos
Las reservas aceptadas aparecen en los informes; la demanda rechazada no. Registrar conflictos por recurso y franja revela dónde faltan salas, puestos u horarios. Conviene deduplicar avisos equivalentes para no convertir diez intentos sobre la misma franja en diez alertas.
Checklist breve
- Usa intervalos semiabiertos para permitir reservas consecutivas.
- Distingue reserva completa y reserva por plazas.
- Comprueba los bloqueos operativos por separado.
- Haz que las reservas pendientes retengan capacidad con caducidad.
- Devuelve la capacidad restante en lugar de un error genérico.
- Conserva los rechazos como datos de demanda.
