Cómo ver el calendario de reservas
Revisa la agenda operativa de una ubicación desde la vista de reservas. En Marea Gran Via, la vista Semana reúne servicios, eventos privados y cierres por vacaciones; con permisos de reservas, las tarjetas muestran reservas, comensales, capacidad y estado del servicio.
En este artículo
El calendario de reservas es la pantalla para preparar la semana del local: muestra qué servicios están abiertos, dónde hay eventos privados y cuándo la ubicación está cerrada por vacaciones.
En la demo ES se documenta con Grupo Marea Demo / Marea Gran Via, en zona horaria Europe/Madrid, usando `/calendars/reservations?mode=week` para concentrar servicios y ocupación en un rango estable.
Antes de empezar
- Sesión iniciada con organización y ubicación seleccionadas; en la demo ES usar Grupo Marea Demo y Marea Gran Via.
- Abrir desde la navegación `Reservas` o con el enlace contextual `/:orgId/:locationId/calendars/reservations?mode=week`.
- El rol debe poder entrar con `reservation:manage`, `reservation:view` o `service:view`.
- Para que el backend devuelva servicios y eventos privados, el rol necesita permisos por tipo como `service:view`; los cierres de ubicación requieren `vacation:view`.
- Para ver recuentos reales y abrir el detalle de una ocurrencia se necesita `reservation:view` o `reservation:manage`; `Nueva reserva` requiere `reservation:manage`.
- Para capturas publicables usar el runtime ES `restaurant_full_v1-es`, con `SERVICE_OCCURRENCE_ID`, `RESERVATION_OCCURRENCE_ID` y la etiqueta `Javier Martin` disponibles.
Instrucciones
- 1.
Abre Reservas
Entra desde la navegación principal `Reservas` o abre el deep link de Marea Gran Via. La pantalla carga el preset de reservas y conserva el contexto de organización y ubicación.
- 2.
Elige vista y fecha
Usa Día, Semana, Mes o Año para revisar el rango operativo. Para documentación, la vista Semana es la más útil porque concentra servicios, privados, cierres y ocupación sin perder contexto.
- 3.
Lee los bloques del calendario
Cada bloque representa un evento operativo: `service` para servicios reservables, `private_event` para eventos privados y `location_vacation` para cierres de ubicación.
- 4.
Comprueba ocupación
Cuando el rol puede ver reservas, las tarjetas de servicio combinan ocurrencias y reservas asociadas para mostrar reservas, comensales, capacidad y estado operativo.
- 5.
Actualiza la información
Usa refrescar para volver a cargar eventos del calendario. Si la vista tiene permisos de reservas, también recarga ocurrencias de servicio y reservas por `occurrence_ids`.
- 6.
Abre un servicio
Toca una tarjeta de servicio para abrir el detalle de la ocurrencia con el mismo modo y fecha de retorno. Si falta `occurrenceId`, la app intenta resolver o materializar la ocurrencia antes de navegar.
- 7.
Revisa privados y cierres
Un `private_event` abre el editor del evento, en lectura si falta `service:manage`. Un `location_vacation` solo explica el cierre dentro del calendario y no navega a otra pantalla.
- 8.
Crea una reserva
Con `reservation:manage`, el botón `Nueva reserva` abre el flujo de optimización. Tras reservar, la vista refresca ocurrencias y reservas y puede llevar al detalle de la ocurrencia reservada.
Validaciones y límites
- `mode` solo acepta `day`, `week`, `month` o `year`; cualquier otro valor cae a `month`.
- `startDate` y `firstVisibleDate` inválidos se ignoran; la UI usa la fecha actual de la ubicación.
- Sin `selectedOrgId` o `selectedLocationId`, la pantalla muestra `No encontramos la ubicacion solicitada.`
- Sin permiso para la página, muestra `No tienes permisos para ver el calendario.`
- El preset `reservations` muestra exactamente `service`, `private_event` y `location_vacation`.
- Los recuentos operativos excluyen reservas con `status` `waitlist` o `cancelled`.
- `GET /calendar-events` y `GET /calendar-events/feed` necesitan rangos de fechas válidos; las consultas de ocurrencias y reservas también rechazan rangos invertidos.
- Abrir el detalle real de ocurrencia requiere `reservation:view` o `reservation:manage`; el botón `Nueva reserva` solo aparece con `reservation:manage`.
- Si el usuario tiene `reservation:view` pero no `service:view`, puede pasar la puerta frontend, pero el backend puede no devolver `service` ni `private_event`.
Resultado esperado
El equipo de sala queda con una lectura semanal de servicios, reservas, capacidad y cierres de ubicación, y puede saltar desde el calendario al detalle operativo de una ocurrencia sin perder el rango de retorno.