Crear reserva manual
Crea una reserva operativa desde el detalle de una ocurrencia pública de servicio en Marea Gran Via. El flujo permite crear o reutilizar el cliente por teléfono, indicar personas, hora y duración, y guardar la reserva sin mesa concreta o con mesas preferidas, obligatorias o asignadas.
En este artículo
Usa esta guía cuando recepción o sala recibe una reserva por teléfono y necesita registrarla dentro del servicio correcto, con cliente, comensales, horario y mesas si aplica.
La acción parte del detalle de la ocurrencia de reservas. En una ocurrencia manual se abre el editor; si el servicio está en modo automático, Antylogic puede pasar antes por optimización o caer al editor manual si el optimizador no está disponible.
Antes de empezar
- Sesión autenticada con Grupo Marea Demo y Marea Gran Via seleccionadas.
- Permisos de ubicación `reservation:manage`, `customer:manage` y `customer:view`; si se seleccionan mesas, también `layout:view`.
- Ocurrencia de servicio pública accesible en `reservations/:occurrenceId`; en el runtime es-ES se usa `BOOKING_MANUAL_OCCURRENCE_ID`.
- Para seleccionar mesas, la ocurrencia o su evento debe resolver un `layout_id` con mesas cargadas.
Instrucciones
- 1.
Abrir la ocurrencia de reservas
Abre `/{orgId}/{locationId}/reservations/{occurrenceId}` desde el calendario o un enlace operativo. La pantalla debe mostrar el servicio de Marea Gran Via, sus reservas actuales, el cronograma si está disponible y la acción `Nueva reserva`.
- 2.
Iniciar Nueva reserva
Pulsa `Nueva reserva`. Si entras desde la pestaña `Cronograma`, una selección temporal puede precargar hora, duración y mesas en el editor de creación.
- 3.
Rellenar cliente y comensales
Introduce `Nombre cliente`, `Teléfono cliente` y `Personas`. La aplicación parte de 2 personas, canal `phone` y estado de lectura `booked` cuando la ocurrencia no está completada.
- 4.
Definir hora y duración
Selecciona la hora de inicio y revisa la duración. Antylogic fusiona la hora con la fecha de la ocurrencia y ajusta la duración al intervalo de slots configurado.
- 5.
Elegir modo de mesas
Mantén `indifferent` para crear sin mesa concreta. Usa `preferred`, `required` o `assign` para abrir el selector del plano y marcar al menos una mesa válida.
- 6.
Crear la reserva
Pulsa `Crear`. La aplicación llama primero a `POST /api/app/{orgId}/{locationId}/customers` con nombre y teléfono; si ya existe un cliente de la ubicación con el mismo teléfono, se reutiliza y se actualiza el nombre si cambió. Después guarda la reserva con el `customer_id` resultante.
- 7.
Comprobar el resultado
Tras guardar, la pantalla refresca ocurrencia, reservas, asignaciones y clientes. La reserva aparece en la lista y en el cronograma con cliente, personas, hora, estado y mesas si se indicaron.
Validaciones y límites
- La acción no continúa si faltan organización, ubicación, ocurrencia o permiso `reservation:manage`.
- `Nombre cliente` es obligatorio en la UI y `full_name` es obligatorio al crear el cliente.
- `Teléfono cliente` es obligatorio en la pantalla; el backend lo normaliza al crear o reutilizar cliente.
- `Personas` debe ser mayor que cero; la UI limita el selector de 1 a 99.
- `start_at` es obligatorio para reservas que no son `waitlist`.
- La duración se ajusta al intervalo de slots, con máximo de 480 minutos en la UI; si llega inválida al backend, se usa 120 minutos.
- Cualquier modo de mesas distinto de `indifferent` exige al menos una mesa seleccionada.
- El backend comprueba que ocurrencia, evento y cliente pertenezcan a la ubicación de la ruta.
- No se crea una reserva normal en una ocurrencia completada ni una reserva `booked` en `booking_mode=waiting_list`.
- Los servicios `internal` no admiten este alta manual; se tratan como no encontrados.
Resultado esperado
La reserva queda guardada en la ocurrencia con canal `phone`. Si se seleccionaron mesas y el estado lo permite, se guardan asignaciones manuales fijas o preferencias/restricciones, y la ocurrencia queda marcada para recalcular optimización.