Antylogic
Probar demoAcceso app

399 guías operativas

Secciones de Docs
DocsReservas y sala
Dispositivo

Cómo abrir el selector de mesas

Abre la pantalla independiente del selector de mesas para un plano de la ubicación actual, revisa zonas y mesas sobre el plano y marca una selección local sin guardar todavía una asignación de reserva.

En este artículo

El selector de mesas ayuda al equipo de sala a decidir, sobre el plano real del local, qué mesas encajan con una reserva o con una operación concreta. En el demo ES de Grupo Marea Demo se abre para Marea Gran Via con el plano `${BOOKING_TABLES_SELECTOR_LAYOUT_ID}` y permite seleccionar mesas como `C1`, `C2` y `C3`.

Esta pantalla lee el layout, calcula capacidad y combinaciones, y puede conservar un borrador local si la ruta incluye `sessionId`. La selección no se guarda en backend ni actualiza por sí sola una asignación de reserva.

Antes de empezar

  • Sesión iniciada en Grupo Marea Demo con la ubicación Marea Gran Via seleccionada o incluida en la ruta contextual.
  • Acceso a `/:orgId/:locationId/reservations/tables/select?layoutId=:layoutId`.
  • `layoutId` presente, no vacío, perteneciente a la ubicación actual y no borrado.
  • Permiso suficiente para entrar en la pantalla y permiso efectivo `layout:view` para cargar el plano.

Instrucciones

  1. 1.

    Abre el selector con un plano válido

    Entra por la ruta contextual del selector con `layoutId`. Si falta la organización, la ubicación o el `layoutId`, la pantalla muestra `No encontramos el plano solicitado.` y no carga el plano.

  2. 2.

    Espera la carga del layout

    La pantalla carga zonas, mesas, tipos de mesa y combinaciones desde `GET /api/app/{orgId}/{locationId}/layouts/{layoutId}`. Mientras carga aparece `Cargando selector de mesas...`; si la lectura falla, aparece `No pudimos cargar el plano de mesas.`

  3. 3.

    Oriéntate en el plano

    Usa el plano a pantalla completa para localizar zonas y mesas. Puedes desplazar, hacer zoom y restaurar el zoom; si el layout no contiene mesas, el selector muestra `No hay mesas para seleccionar.`

  4. 4.

    Selecciona o quita mesas

    Toca una mesa para seleccionarla y vuelve a tocarla para quitarla. En la captura planificada del demo ES se seleccionan `C1`, `C2` y `C3`; si la ruta incluye `sessionId`, cada cambio se conserva en un borrador local en memoria.

  5. 5.

    Revisa capacidad y combinación

    La tarjeta inferior muestra `Capacidad maxima`, el total de pax y el conteo de mesas. Si varias mesas no coinciden con una combinación exacta configurada, aparece `Combinacion no configurada`, pero la selección no se bloquea.

  6. 6.

    Restaura la selección inicial si hace falta

    El botón de restaurar vuelve al estado con el que se montó el selector. Permanece deshabilitado hasta que la selección actual cambia respecto a esa selección inicial.

  7. 7.

    Vuelve al flujo anterior

    Pulsa `Volver` para salir. Si la ruta incluía `occurrenceId`, se usa solo para volver al detalle de la ocurrencia; esta pantalla no lo envía como `occurrence_id` al cargar el layout.

  8. 8.

    Ten claro el alcance

    Esta acción sirve para elegir mesas sobre el plano. No llama a `PUT /api/app/{orgId}/{locationId}/reservations/{reservationId}/tables` y no crea ni actualiza `reservation_table_assignment`.

Validaciones y límites

  • `layoutId`, `occurrenceId` y `sessionId` se aceptan solo como strings y se normalizan con `trim()`.
  • La carga del layout solo se habilita cuando existen organización, ubicación, `layoutId` y permisos de entrada.
  • La UI puede permitir entrar con permisos de reservas o layout, pero la lectura real del plano exige `layout:view`.
  • El backend rechaza `layoutId` vacío, layouts borrados o layouts de otra ubicación.
  • El selector conserva solo IDs de mesas existentes en el layout cargado y deduplica la selección.
  • Una selección múltiple solo se considera combinación válida si coincide exactamente con `layout_table_combination.table_ids`.
  • Sin combinación exacta, la UI muestra la suma de capacidades y el aviso `Combinacion no configurada`.
  • El borrador asociado a `sessionId` vive en memoria del frontend y se pierde al recargar la app.

Resultado esperado

El equipo sale con una selección local de mesas revisada sobre el plano y con la capacidad visible, sin haber guardado todavía una asignación de reserva.

Artículos relacionados