Para qué sirve y para quién
Mesas es el plano del restaurante o del bar: las zonas del local (salón, terraza, barra), las mesas de cada zona con su aforo, su forma y su sitio en el plano, y las cuentas que hay sentadas en cada mesa. Dice, en vivo, qué mesa está libre, ocupada, reservada o fuera de servicio, cuántos comensales hay, desde cuándo y quién la atiende, y sabe qué cuenta de Ventas está en qué mesa.
Quién la usa:
- El responsable de sala dibuja el plano: crea zonas y mesas, las coloca arrastrándolas y cambia su aforo, su forma o su estado.
- El administrador y el propietario, además, borran mesas, zonas y cuentas del historial y cambian los ajustes de sala.
- El empleado (camarero, cajero) sienta a la gente, pasa una cuenta a otra mesa, junta o divide cuentas, corrige los comensales, quita la mesa a una cuenta y cierra una mesa a mano.
Mesas no cobra (eso es Ventas: la mesa lleva al TPV con su cuenta), no apunta reservas (eso será Reservas: Mesas solo aparta la mesa en el plano) y no es la pantalla de cocina.
Referencia adoptada
ERPlora no inventa flujos: adopta los que el mercado ya probó.
- Zonas, mesas colocadas en un plano, comensales por mesa y ocupación a la vista, con el tiempo que lleva una cuenta abierta en ámbar y en rojo: Square — planos de sala.
- Varias cuentas en una mesa (dividir); las líneas las reparte Ventas: Lightspeed — dividir una cuenta, Square — dividir por artículo.
- Pedir los comensales al sentar, transferir y juntar cuentas, sacar una mesa del servicio y la lista de cuentas cerradas con su importe (Toast y Lightspeed).
- Una mesa con su cuenta abierta no se libera a mano: se cobra, se pasa a otra mesa o se elimina la cuenta (Toast, Square, Lightspeed y Odoo; tables#124 del producto actual).
- Sentar en una mesa reservada está permitido y gasta la reserva; superar el aforo avisa pero no impide.
- La mesa reservada se pinta Reservada solo cerca de la hora de su reserva (decisión de mercado de la duda 1 del producto actual). Antes de eso la mesa sigue Disponible y enseña la próxima reserva con su hora. Así lo hacen:
| Producto | Cómo lo resuelve | Fuente |
|---|---|---|
| Toast Tables | El plano del servicio enseña en cada mesa la hora de su próxima reserva | support.toasttab.com |
| TouchBistro Reservations | El estado de la mesa (reservada u ocupada) es el del tramo horario que se mira, de 15 en 15 min | TouchBistro — lista y plano |
| Tablein | La mesa con la próxima reserva más allá de la duración de una reserva lleva una etiqueta «Next» y sigue libre | help.tablein.com |
| TablesReady | La mesa cambia de color cuando la reserva asignada está próxima y el grupo no ha llegado | support.tablesready.com |
| Lightspeed K-Series | La reserva tiene estados (Programada, Sentada…) y se asigna a una mesa del plano | k-series-support |
| Odoo (módulo de reservas de mesa) | El plano marca las mesas con reserva en la ventana del servicio actual y avisa antes de sentar a otro | ecosire.com |
| Square for Restaurants | El estado de la mesa sigue al de la reserva de OpenTable integrada | squareup.com |
| Tabit | Desde la mesa se ven sus próximas reservas | support-us.tabit.cloud |
Gana: Reservada desde 60 minutos antes de la hora de la reserva hasta que acaba su ventana; antes, la mesa sigue Disponible con «Ana · 21:00». Por qué no lo de antes (Reservada desde que se confirma, aunque sea dentro de una semana): bloqueaba la mesa todo el servicio y un grupo sentado a mediodía «gastaba» la reserva de la noche. - Una mesa o una zona desactivada sale del servicio (decisión de la duda 7): no se pinta en el plano de servicio ni se puede sentar; sigue en «Editar plano», en Mesas y en Zonas, como Lightspeed — desactivar una mesa, Toast — quitar una mesa del área de servicio y el estado Activa / Inactiva de los planos de Poster y MultiPOS.
Antes de empezar
- Mesas necesita Ventas (la cuenta de cada mesa es una cuenta abierta de Ventas) y Clientes (el cliente de una mesa y el olvido de su nombre). Se encienden con ella y no se apagan mientras Mesas esté encendida.
- Las horas (apertura, cierre, reservas) son las del negocio: en esta fase, Europe/Madrid.
Configuración inicial, paso a paso:
- En Mesas → Zonas (o con el «+» del Plano de sala) crea las zonas del local (TABLE-F01).
- En Mesas → Plano de sala, en «Editar plano», con el «+» añade las mesas de cada zona (TABLE-F02).
- Arrástralas hasta que el plano se parezca a la sala y ajusta en cada una su aforo y su forma (TABLE-F03, TABLE-F04).
- En Mesas → Ajustes (solo el administrador) decide si al sentar se preguntan los comensales y a partir de cuántos minutos una cuenta abierta se pone ámbar y roja (TABLE-F08).
- En Plano de sala, «Servicio», toca una mesa libre y siéntala: se abre su cuenta en Ventas.
Pantallas
El menú Mesas tiene cinco pestañas: Plano de sala, Zonas, Mesas, Sesiones y Ajustes (esta solo a quien puede cambiarlos). Ninguna otra se esconde por permiso; los botones que el perfil no puede usar no salen.
Plano de sala
Menú Mesas → Plano de sala. Arriba, una sola fila: la tira de zonas (se desliza de lado en el móvil y se difumina por el borde cuando hay más zonas), el conmutador Servicio / Editar plano (solo a quien puede dibujar el plano) y, en «Editar plano», un «+» («Añadir zona o mesa») y un lápiz («Editar zona»). Debajo, el plano de la zona elegida, con las mesas a su tamaño real: si no cabe de ancho (móvil, tableta) se desliza de lado y el borde con mesas detrás se difumina; si no cabe de alto, crece y se baja la página.
Cada mesa es una baldosa con su número, su estado escrito con su icono y color (Disponible, Ocupada, Reservada, Bloqueada), el aforo («4 pax») o, si está ocupada, los comensales y los minutos que llevan («3 pax · 35 min», que avanzan solos) y quién la atiende; si tiene una reserva hoy, el nombre y la hora de la reserva («Cliente borrado» si se borraron los datos de esa clienta) en una línea: un nombre que no cabe se recorta con «…» y la hora se ve siempre entera («Maximiliana F… · 20:00»); el nombre completo va en el título de la mesa. Las mesas redondas se pintan redondas y la rectangular, más ancha que alta. El plano es vivo: cambia solo cuando alguien sienta, cobra, mueve o edita una mesa.
- Servicio (de entrada): no se arrastra. Tocar una mesa abre su ventana Mesa N:
- libre o reservada: la pregunta de comensales («Comensales en la mesa N · 4 pax», «−» y «+», atajos del 1 al 8 que sientan de un toque, el aviso «Supera el aforo de la mesa (4)» y «Sentar N»), y el cliente opcional («Asignar cliente»). Con el ajuste de comensales apagado, «Sentar» sienta con el aforo (o los comensales de la reserva).
- ocupada: comensales, desde cuándo, quién atiende, el cliente de la cuenta (asignar o quitar) y las acciones Cobrar (lleva al TPV con la cuenta), Transferir, Fusionar, Dividir cuenta, Comensales, Quitar mesa y Cerrar mesa. Con dos cuentas en la mesa, se elige primero cuál («Cuenta 1», «Cuenta 2»).
- bloqueada: «Mesa fuera de servicio: no se puede sentar hasta que se desbloquee.».
- Transferir y Fusionar ponen el plano en modo destino: «Transferir N a…» / «Elige una mesa libre» (o «Fusionar N con…» / «Elige una mesa ocupada») y «Cancelar»; solo se pueden tocar las mesas que valen.
- Editar plano: se arrastra cada mesa a su sitio (también con el teclado: flechas, 8 px; con Mayúsculas, 32 px) y se guarda al soltar. Tocar una mesa abre Editar mesa (Número, Aforo, Nombre (opcional), Forma, Estado (Disponible o Bloqueada), Zona, Activa; pie con «Borrar» y «Guardar»); el «+» abre Añadir (campo Zona y «Añadir zona»; campo «Número de mesa», que si se deja vacío «Se numera sola», y «Añadir mesa»); el lápiz abre Editar zona (Nombre, Descripción (opcional); «Borrar zona» y «Guardar»). Debajo, la ayuda «Arrastra para colocar · clic en una mesa para editarla o borrarla. Los cambios se guardan al momento.». En «Editar plano» se ven también las mesas y zonas desactivadas, en gris.
Las ventanas tapan toda la pantalla en el móvil y van centradas en tableta y ordenador.
Zonas
Menú Mesas → Zonas. Tabla: Nombre (con su color), Mesas, Libres («libres / total»), Orden, Estado (Activa, Inactiva); buscador «Buscar zona…», filtros por columna, vista tabla o tarjetas. El «+» (solo a quien puede crear zonas) abre el panel con Nombre, Descripción, Color (Azul, Cian, Morado, Verde, Ámbar, Rojo, Gris), Orden y «Añadir zona»; por fila «Editar» (el mismo panel con el interruptor «Activa» y «Guardar cambios») y «Borrar» (solo el administrador), que pide confirmación en «¿Borrar la zona?» y deja «Borrar zona» apagado si la zona tiene mesas.
Mesas
Menú Mesas → Mesas. Tabla en orden natural (la 2 antes que la 10): Número, Nombre, Zona, Aforo, Estado; buscador «Buscar mesa…» (número y nombre), filtros por columna (zona, estado, forma, aforo), vista tabla o tarjetas. El «+» abre el panel con Número, Aforo, Zona y «Añadir mesa». Por fila, «Editar» (Número, Nombre, Aforo, Forma, Zona, Estado y Activa) y «Borrar» (solo el administrador, con confirmación).
Sesiones
Menú Mesas → Sesiones: las cuentas de la sala. Pestañas «Abiertas», «Cerradas» y «Todas». Tabla: Mesa («Sin mesa (aparcada)» si no tiene), Cobrado y Cierre (no salen en Abiertas), Zona, Camarero, Comensales, Apertura, Tiempo, Estado (Abierta, Cerrada, Trasladada, Fusionada, Aparcada); el tiempo de una cuenta abierta se pone ámbar y rojo según los Ajustes. Buscador «Buscar mesa…», filtros por zona, camarero y estado. Por fila «Detalle» (ventana con zona, camarero, estado, comensales, apertura, cierre, tiempo, cobrado y notas), en las abiertas «Cerrar sesión» (con confirmación), en las aparcadas «Volver a sentar» (elige la mesa libre) y, en las terminadas, «Borrar» (solo el administrador). Las horas van en la hora del negocio.
Ajustes
Menú Mesas → Ajustes: «Preguntar los comensales al sentar una mesa», «Aviso ámbar (minutos)» y «Aviso rojo (minutos)», y «Guardar». Solo la ve quien puede cambiarlos (de fábrica, el propietario y el administrador).
Estados de cada pantalla
| Pantalla | Cargando | Vacío | Error |
|---|---|---|---|
| Plano de sala | «Cargando…» | Sin zonas: «Crea una zona para empezar a colocar mesas.»; zona sin mesas: «Sin mesas en esta zona. Pulsa «Añadir mesa».» | Al cargar: aviso con «Reintentar»; al guardar, dentro de la ventana abierta (o encima del plano si no hay ninguna) |
| Zonas | La tabla en carga | «No hay zonas. Pulsa «+» para crear la primera (Salón, Terraza, Barra…).» | El de la tabla con «Reintentar»; el de guardar, dentro del panel |
| Mesas | La tabla en carga | «Sin mesas.» | El de la tabla con «Reintentar»; el de guardar, dentro del panel |
| Sesiones | La tabla en carga | «No hay sesiones. Sienta a un grupo desde el plano y aparecerá aquí.» | El de la tabla con «Reintentar»; el de cerrar, en su confirmación |
| Ajustes | «Cargando…» | — | Por campo (422) y encima del formulario |
En todas: «Reconectando…» mientras se recupera la conexión en vivo (lo pintado se queda), «Esta app no está activa en este negocio» y «No tienes permiso».
Flujos
| ID | Flujo | Estado |
|---|---|---|
| TABLE-F01 | Crear y ordenar las zonas del local | hecho |
| TABLE-F02 | Añadir mesas | hecho |
| TABLE-F03 | Colocar las mesas en el plano | hecho |
| TABLE-F04 | Editar o borrar una mesa | hecho |
| TABLE-F05 | Sacar una mesa del servicio (bloquearla) y devolverla | hecho |
| TABLE-F06 | Renombrar o borrar una zona | hecho |
| TABLE-F07 | Crear muchas mesas de golpe | hecho (asistente y API) |
| TABLE-F08 | Ajustar la sala: comensales al sentar y avisos de tiempo | hecho |
| TABLE-F09 | Ver cómo está la sala | hecho |
| TABLE-F10 | Sentar a un grupo en una mesa libre o reservada | hecho |
| TABLE-F11 | Volver a una mesa ocupada y cobrarla | hecho |
| TABLE-F12 | Llevar a una mesa una cuenta que ya está abierta | hecho |
| TABLE-F13 | Quitar la mesa de una cuenta (aparcarla) | hecho |
| TABLE-F14 | Corregir los comensales de una mesa ocupada | hecho |
| TABLE-F15 | Pasar la cuenta a otra mesa (transferir) | hecho |
| TABLE-F16 | Juntar las cuentas de dos mesas ocupadas (fusionar) | hecho |
| TABLE-F17 | Dividir la cuenta de una mesa | hecho |
| TABLE-F18 | Liberar la mesa al cobrar la cuenta entera | hecho |
| TABLE-F19 | Anular un cobro de una mesa | hecho |
| TABLE-F20 | Eliminar en Ventas la cuenta abierta de una mesa | hecho |
| TABLE-F21 | Cerrar una mesa a mano | hecho |
| TABLE-F22 | Consultar las cuentas de la sala (abiertas y cerradas) | hecho |
| TABLE-F23 | Borrar una cuenta cerrada del historial | hecho |
| TABLE-F24 | Volver a sentar una cuenta aparcada | hecho |
| TABLE-F25 | Retener la mesa de una reserva confirmada | servidor hecho (espera a Reservas) |
| TABLE-F26 | Mover o soltar la retención cuando cambia la reserva | servidor hecho (espera a Reservas) |
| TABLE-F27 | Soltar la mesa cuando la reserva se cancela o no se presenta | servidor hecho (espera a Reservas) |
| TABLE-F28 | Gastar la retención al sentar a la reserva | hecho |
| TABLE-F29 | Caducar las retenciones vencidas | hecho |
| TABLE-F30 | Retener o soltar una mesa a mano | hecho (asistente y API) |
| TABLE-F31 | Olvidar el nombre de un cliente cuyos datos se borran (RGPD) | servidor hecho (entrega en la fase 2) |
| TABLE-F32 | Poner o quitar el cliente de una mesa | hecho |
TABLE-F01 Crear y ordenar las zonas del local
Estado: hecho
Actor: responsable, administrador
Pantalla: Zonas
Pasos:
1. En Mesas → Zonas pulsa «+».
2. Escribe el Nombre (Salón, Terraza, Barra…), elige el Color y el Orden (viene puesto el siguiente).
3. Pulsa «Añadir zona».
4. La zona sale en la lista con 0 mesas y, en ese orden, como pestaña del Plano de sala. También se
crea desde el «+» del plano en «Editar plano» (campo Zona y «Añadir zona»): se pone la última y
queda elegida.
Entra: el nombre, la descripción, el color y el orden.
Sale: la zona (avisa: table.zone.created).
Si falla: sin nombre, el botón no se activa. Un nombre que ya tiene otra zona: «Ya hay una zona con
ese nombre.». Un empleado no ve el «+»; si lo pide por la API, se rechaza por permiso.
TABLE-F02 Añadir mesas
Estado: hecho
Actor: responsable, administrador
Pantalla: Plano de sala (Editar plano), Mesas
Pasos:
1. En Plano de sala → Editar plano, elige la zona y pulsa «+».
2. En «Número de mesa» escribe el número o nombre (S1, Terraza A) o déjalo vacío: «Se numera sola»
con el primer número libre de esa zona.
3. Pulsa «Añadir mesa» (apagado mientras no haya ninguna zona).
4. La mesa aparece en la zona, en el primer hueco libre, cuadrada, para 4 y Disponible.
5. Otra puerta: en Mesas → Mesas, «+» con Número, Aforo y Zona y «Añadir mesa»; también nace en el
primer hueco libre de su zona.
Entra: número (o ninguno), y en la lista también aforo y zona.
Sale: la mesa (avisa: table.table.created). Con una mesa en uso, el paso «Tus mesas» de la puesta
en marcha queda hecho (table.floor.status).
Si falla: número repetido en la zona (sin distinguir mayúsculas ni espacios), por cualquier puerta:
«Ya hay una mesa con ese número en esta zona.». Zona borrada mientras tanto: «Esa zona no existe en
este negocio.».
TABLE-F03 Colocar las mesas en el plano
Estado: hecho
Actor: responsable, administrador
Pantalla: Plano de sala (Editar plano)
Pasos:
1. En Plano de sala → Editar plano, elige la zona.
2. Arrastra cada mesa a su sitio (el gesto lo coge solo la mesa; deslizar sobre el plano vacío lo
desplaza). Con teclado: tabula hasta la mesa y muévela con las flechas (8 px; con Mayúsculas, 32 px).
3. Al soltar se guarda al momento. La mesa no sale del borde del plano.
4. Al recargar, cada mesa sigue donde se dejó.
Entra: la posición nueva.
Sale: la posición de la mesa (avisa: table.table.updated).
Si falla: «No se pudo guardar la posición» encima del plano; la mesa vuelve a su sitio guardado.
TABLE-F04 Editar o borrar una mesa
Estado: hecho
Actor: responsable, administrador
Pantalla: Plano de sala (Editar plano), Mesas
Pasos:
1. En Editar plano, toca la mesa (o en Mesas, «Editar» en su fila): se abre «Editar mesa».
2. Cambia Número, Aforo, Nombre (opcional), Forma (Cuadrada, Redonda, Rectangular), Estado
(Disponible o Bloqueada), Zona o Activa.
3. Pulsa «Guardar»: la ventana se cierra y el plano cambia solo (si cambió de zona, aparece en la otra
pestaña en el mismo sitio).
4. Para quitarla, pulsa «Borrar» (solo el administrador) y confírmalo: desaparece del plano y de la
lista; su historia de cuentas se conserva.
Entra: la mesa elegida.
Sale: la mesa cambiada (avisa: table.table.updated) o borrada (avisa: table.table.deleted).
Si falla: dentro de la ventana: «El número de mesa es obligatorio», «Ya hay una mesa con ese número
en esta zona.», «Esa mesa no existe en este negocio.»; borrar una mesa con cuenta abierta: «Esa mesa
tiene una cuenta abierta. Ciérrala o trasládala antes de borrar la mesa.».
TABLE-F05 Sacar una mesa del servicio (bloquearla) y devolverla
Estado: hecho
Actor: responsable, administrador
Pantalla: Plano de sala (Editar plano), Mesas
Pasos:
1. Abre «Editar mesa» y en «Estado» elige «Bloqueada»; pulsa «Guardar».
2. La mesa sale Bloqueada (gris) en el plano y no se puede sentar: «Mesa fuera de servicio: no se
puede sentar hasta que se desbloquee.».
3. Para devolverla, pon «Disponible» y guarda.
4. Bloquear una mesa ocupada no toca su cuenta: sigue Ocupada hasta cobrarla y entonces queda
Bloqueada. Una reserva no pinta Reservada una mesa Bloqueada.
Entra: la mesa elegida.
Sale: el estado de la mesa (avisa: table.table.updated).
Si falla: como en TABLE-F04. Sentar en una mesa bloqueada (asistente, API) se rechaza con el mismo
motivo.
TABLE-F06 Renombrar o borrar una zona
Estado: hecho
Actor: responsable, administrador
Pantalla: Zonas, Plano de sala (Editar plano)
Pasos:
1. En Mesas → Zonas, «Editar»: cambia Nombre, Descripción, Color, Orden o «Activa» y pulsa
«Guardar cambios». En el plano, el lápiz («Editar zona») cambia Nombre y Descripción.
2. Para borrarla (solo el administrador): «Borrar» abre «¿Borrar la zona?» con «N mesas en esta zona.
Una zona con mesas no se puede borrar: mueve o borra antes sus mesas.»; con mesas, «Borrar zona»
sale apagado.
3. Sin mesas, «Borrar zona» la quita de la lista y del plano.
Entra: la zona elegida.
Sale: la zona cambiada (avisa: table.zone.updated) o borrada (avisa: table.zone.deleted).
Si falla: «Esta zona todavía tiene mesas. Muévelas a otra zona o bórralas antes.» o «Esa zona no
existe en este negocio.».
TABLE-F07 Crear muchas mesas de golpe
Estado: hecho (asistente y API; sin pantalla, como el producto actual)
Actor: responsable, asistente
Pantalla: asistente
Pasos:
1. Pide al asistente «crea 12 mesas en la Terraza, de la T1 a la T12, para 4».
2. Se crean de una vez (de 1 a 100), numeradas con el prefijo y el número inicial que se digan (1 si
no), con el aforo (4) y la forma (cuadrada) que se digan, en los primeros huecos libres de la zona.
Entra: zona (por id o por nombre), cuántas, prefijo, número inicial, aforo y forma.
Sale: las mesas (avisa: table.table.created).
Si falla: si la zona no existe, no se crea ninguna. Si algún número ya existe en la zona, no se crea
ninguna y se dice cuáles.
TABLE-F08 Ajustar la sala: comensales al sentar y avisos de tiempo
Estado: hecho
Actor: administrador
Pantalla: Ajustes
Pasos:
1. En Mesas → Ajustes, marca o desmarca «Preguntar los comensales al sentar una mesa».
2. Pon «Aviso ámbar (minutos)» y «Aviso rojo (minutos)» (de 1 a 600; el rojo no puede ser menor que el
ámbar).
3. Pulsa «Guardar».
4. Desmarcado, tocar una mesa libre la sienta con su aforo (con los comensales de la reserva si está
Reservada). En Sesiones, el tiempo de una cuenta abierta se pone ámbar y rojo a partir de esos
minutos. Sin guardar nunca: se pregunta, 60 y 90 minutos.
Entra: los tres valores.
Sale: los ajustes de sala (avisa: table.settings.updated).
Si falla: un valor fuera de rango sale en su campo.
TABLE-F09 Ver cómo está la sala
Estado: hecho Actor: responsable, empleado Pantalla: Plano de sala Pasos: 1. Abre Mesas → Plano de sala y elige la zona. Se ven todas sus mesas en uso, a su tamaño real. 2. Cada mesa dice su estado escrito, con icono y color: Disponible, Ocupada, Reservada o Bloqueada. 3. Una mesa ocupada dice los comensales y los minutos que llevan («3 pax · 35 min») y quién la atiende; los minutos avanzan solos. Una mesa con reserva hoy dice el nombre y la hora. 4. El plano cambia solo cuando alguien sienta, traslada, junta, divide, cobra o anula: no hay que salir y volver. Y con el reloj: una mesa pasa a Reservada una hora antes de su reserva y vuelve a Disponible cuando la reserva acaba, sin que nadie toque nada. Entra: las mesas, sus cuentas abiertas, sus retenciones y el estado de sus cuentas en Ventas. Sale: nada. Si falla: un fallo al cargar sale con «Reintentar».
TABLE-F10 Sentar a un grupo en una mesa libre o reservada
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio)
Pasos:
1. En Plano de sala → Servicio, toca una mesa Disponible o Reservada. Se pregunta «Comensales en
la mesa N», con el aforo (o los comensales de la reserva) ya puesto.
2. Toca un atajo del 1 al 8 (sienta de un toque) o ajusta con «−» y «+» y pulsa «Sentar N». Más que el
aforo avisa «Supera el aforo de la mesa (4)» y deja sentar. Con el ajuste de comensales apagado,
«Sentar» sienta con el aforo.
3. Si quieres, antes de sentar «Asignar cliente» le pone la ficha a la cuenta (TABLE-F32).
4. La mesa pasa a Ocupada y en Ventas nace su cuenta abierta con el título «Mesa N» (la ve Cuentas
abiertas del TPV). Quien sienta es el camarero de la cuenta.
Entra: la mesa y los comensales; en una Reservada, los comensales de la reserva.
Sale: la cuenta de mesa abierta con sus comensales, la hora y el camarero (avisa:
table.session.opened); su cuenta en Ventas (avisa: sale.order.opened); las reservas retenidas en
esa mesa que ya estaban Reservadas, gastadas (TABLE-F28).
Si falla: si otro dispositivo la acaba de ocupar, «Otro dispositivo acaba de ocupar esa mesa. Se ha
actualizado el plano.» y la mesa no se sienta. Dos camareros que sientan la misma mesa a la vez
dejan una sola cuenta: el segundo recibe ese mismo aviso. Una mesa bloqueada, desactivada o borrada
no se sienta.
TABLE-F11 Volver a una mesa ocupada y cobrarla
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio)
Pasos:
1. En Plano de sala → Servicio, toca una mesa Ocupada: se abre su ventana con comensales, desde
cuándo, camarero y cliente.
2. Cobrar lleva a Ventas → Vender con esa cuenta en pantalla (/sale/pos?order=<id>); allí se
añaden rondas y se cobra.
3. Con dos cuentas en la mesa (dividida), se elige primero la cuenta («Cuenta 1», «Cuenta 2»).
Entra: la mesa tocada y su cuenta abierta.
Sale: nada en Mesas.
Si falla: si la cuenta ya se cobró o anuló desde otro sitio, Ventas avisa al llegar «Esa cuenta ya no
está abierta (se cobró, se anuló o no existe): el TPV sigue como estaba.».
TABLE-F12 Llevar a una mesa una cuenta que ya está abierta
Estado: hecho
Actor: empleado, responsable, asistente
Pantalla: Ventas → Vender («Elegir mesa», SALE-F19); asistente
Pasos:
1. En Ventas → Vender, con una cuenta en pantalla (de barra, con sus rondas), toca el botón de mesa
de la cabecera de la cuenta («Asignar mesa»; solo con Mesas activa y permiso de sentar): se abre
«Elegir mesa», con un buscador y las mesas en servicio del color de su estado, sus plazas y, si la
tienen, la reserva de hoy («Marta · 21:00»).
2. Toca una mesa Disponible o Reservada: la cuenta pasa a ser la de esa mesa, con todo lo que tenía, y
toma el título «Mesa 4». No se preguntan los comensales: los de la reserva y, si no hay, las plazas
de la mesa. Sin cuenta aún, Mesas abre una con el título de la mesa y el TPV la pone en pantalla
(TABLE-F10).
3. La cabecera de la cuenta enseña su mesa («Mesa 4»), seguida en vivo. En la misma ventana, «Quitar de
la mesa» la aparca (TABLE-F13), y una cuenta aparcada se vuelve a sentar tocando otra mesa
(TABLE-F24).
4. Con el asistente: «pon la cuenta de Ana en la mesa 4».
Entra: la cuenta (abierta) y la mesa.
Sale: la cuenta de mesa abierta y enlazada a esa cuenta (avisa: table.session.opened).
Si falla: los de TABLE-F10, dentro de la ventana y con estas palabras; una cuenta ya cobrada o anulada:
«Esa cuenta ya no está abierta en Ventas.»; una cuenta que ya está en otra mesa: «Esa cuenta ya está
en la mesa N.». Las mesas Ocupadas y Bloqueadas no se pueden tocar.
TABLE-F13 Quitar la mesa de una cuenta (aparcarla)
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio); también en Ventas → Vender, «Elegir mesa» → «Quitar de la mesa» (SALE-F19)
Pasos:
1. En la ventana de la mesa ocupada pulsa «Quitar mesa».
2. La mesa queda Disponible para otros; la cuenta de mesa pasa a «Aparcada», sin mesa, conservando
comensales, camarero y hora; la cuenta sigue abierta en Ventas (Cuentas abiertas).
3. Para seguir con ella en una mesa, Sesiones → Volver a sentar (TABLE-F24).
Entra: la cuenta de mesa.
Sale: la cuenta aparcada (avisa: table.session.parked) y la mesa libre si no le queda otra cuenta. Si
luego Ventas la cobra entera o la anula, la cuenta de mesa queda «Cerrada» (sin mesa).
Si falla: «Esa cuenta no está abierta: no existe en este negocio, o ya se ha cerrado, trasladado,
fusionado o aparcado.».
TABLE-F14 Corregir los comensales de una mesa ocupada
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio)
Pasos:
1. En la ventana de la mesa ocupada pulsa «Comensales».
2. Sale la pregunta con los comensales actuales; cámbialos con un atajo o con «−» / «+» y «Guardar».
3. La mesa enseña los comensales nuevos. En una mesa dividida se corrige la cuenta elegida.
Entra: la cuenta abierta de la mesa.
Sale: los comensales de la cuenta (avisa: table.session.updated).
Si falla: una cuenta ya cerrada, trasladada, fusionada o aparcada no se corrige (mensaje de
TABLE-F13). Siempre al menos 1.
TABLE-F15 Pasar la cuenta a otra mesa (transferir)
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio)
Pasos:
1. En la ventana de la mesa ocupada pulsa «Transferir».
2. El plano dice «Transferir N a…» y «Elige una mesa libre»: solo se pueden tocar las Disponibles y
Reservadas. «Cancelar» lo deshace.
3. Toca la mesa de destino.
4. La cuenta es la misma, ahora en la mesa de destino, con sus comensales, su camarero, sus notas, su
hora de llegada y su título nuevo en Ventas («Mesa M»); la de origen queda libre si no le queda otra
cuenta, y la de destino, Ocupada (si estaba Reservada, gasta la reserva).
Entra: la cuenta de origen y la mesa de destino.
Sale: la cuenta de origen «Trasladada» y una cuenta de mesa nueva en el destino con la misma cuenta
de Ventas (avisa: table.session.transferred).
Si falla: «Otro dispositivo acaba de ocupar esa mesa. Se ha actualizado el plano.» si el destino ya no
está libre; «Esa cuenta no está abierta…» si otro ya la movió.
TABLE-F16 Juntar las cuentas de dos mesas ocupadas (fusionar)
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio)
Pasos:
1. En la ventana de la mesa que se va a juntar pulsa «Fusionar».
2. El plano dice «Fusionar N con…» y «Elige una mesa ocupada»: solo se pueden tocar las Ocupadas (la
propia mesa solo si tiene otra cuenta: así se deshace una división).
3. Toca la mesa que se queda.
4. La mesa de origen queda libre si no le queda otra cuenta y su cuenta de mesa, «Fusionada». En
Ventas, las líneas sin cobrar de la cuenta de origen pasan a la de la mesa que se queda y la vacía
queda anulada, en la misma operación: o se junta todo, o no se junta nada. Lo que la cuenta de
origen ya había cobrado sigue en su «Cobrado».
Entra: las dos cuentas.
Sale: una sola cuenta abierta en la mesa que se queda (avisa: table.session.merged y
sale.order.merged).
Si falla: «Esa mesa no tiene ninguna cuenta abierta con la que fusionar.» si el destino está libre o
es la misma mesa.
TABLE-F17 Dividir la cuenta de una mesa
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio)
Pasos:
1. En la ventana de la mesa ocupada pulsa «Dividir cuenta».
2. Marca las líneas que se van a la cuenta nueva (las de su cuenta en Ventas) y pulsa «Dividir». Sin
nada marcado, la nueva nace vacía.
3. Mesas abre una segunda cuenta en la misma mesa (1 comensal) y Ventas le pasa las líneas marcadas,
en la misma operación. Cobrar una cierra solo esa: la mesa sigue Ocupada con la otra. Se puede
dividir aunque la mesa esté bloqueada o desactivada: no se sienta a nadie nuevo.
Entra: la cuenta abierta de la mesa y las líneas que se mueven.
Sale: dos cuentas de mesa abiertas en la misma mesa, la nueva colgando de la original (avisa:
table.session.split y sale.order.opened).
Si falla: si otro dispositivo está cobrando esa cuenta, Ventas lo rechaza («La cuenta ha cambiado…»)
y no se divide nada.
TABLE-F18 Liberar la mesa al cobrar la cuenta entera
Estado: hecho Actor: sistema Pantalla: Ventas: Cobro Pasos: 1. En Ventas se cobra la cuenta de una mesa, entera o en partes. 2. Lo cobrado sale en «Cobrado» de Sesiones, también en cada cobro parcial. 3. Cobrada entera, la cuenta de mesa queda «Cerrada» y la mesa libre si no le queda otra cuenta abierta; en una mesa dividida la otra cuenta sigue sentada. 4. Con un cobro parcial la cuenta sigue abierta y la mesa, Ocupada. Entra: de Ventas, el estado de la cuenta y sus ventas. Sale: la cuenta de mesa «Cerrada» con la hora del cobro; la mesa libre. Una venta sin mesa (barra, para llevar) no deja nada. Si falla: nada que ver: el plano y Sesiones lo leen de Ventas en cada lectura.
TABLE-F19 Anular un cobro de una mesa
Estado: hecho Actor: sistema Pantalla: Ventas: Ventas Pasos: 1. En Ventas, un responsable anula una venta cobrada que era de una mesa. 2. Mesas deja de contarla en «Cobrado» (sale «—» si no queda ningún cobro vivo). 3. La cuenta de mesa y la mesa no cambian: anular una venta no reabre ni cierra la cuenta en Ventas. Entra: de Ventas, la venta anulada. Sale: nada nuevo; «Cobrado» baja. Si falla: como TABLE-F18.
TABLE-F20 Eliminar en Ventas la cuenta abierta de una mesa
Estado: hecho Actor: responsable Pantalla: Ventas: Cuentas abiertas Pasos: 1. En Ventas → Cuentas abiertas se elimina la cuenta de una mesa. 2. La cuenta de mesa queda «Cerrada» y la mesa libre si no le queda otra cuenta. Entra: de Ventas, la cuenta anulada. Sale: la cuenta de mesa cerrada; la mesa libre. Si falla: como TABLE-F18.
TABLE-F21 Cerrar una mesa a mano
Estado: hecho
Actor: empleado, responsable
Pantalla: Sesiones, Plano de sala (Servicio)
Pasos:
1. En Mesas → Sesiones → Abiertas, «Cerrar sesión» (o «Cerrar mesa» en la ventana de la mesa).
2. Confirma en «¿Cerrar la sesión?»: «Mesa N · N comensales. La mesa queda libre y la sesión pasa al
histórico. Si su cuenta sigue abierta en Ventas, primero cóbrala, pásala a otra mesa o elimínala
desde el TPV.».
3. Si su cuenta de Ventas está vacía (nadie pidió nada), Mesas la anula y cierra la mesa: un grupo que
se levanta sin pedir no necesita a un responsable.
4. Si su cuenta tiene algo pedido, no se cierra nada: se cobra (TABLE-F18), se pasa a otra mesa
(TABLE-F15) o se elimina en Ventas (TABLE-F20).
Entra: la cuenta de mesa abierta y el estado de su cuenta en Ventas.
Sale: la cuenta de mesa «Cerrada» con su hora (avisa: table.session.closed).
Si falla: «La cuenta de esta mesa sigue abierta en Ventas: cóbrala, pásala a otra mesa o elimínala
desde el TPV.»; «La cuenta de esta mesa ha cambiado. Recarga la lista e inténtalo de nuevo.» (otro
dispositivo le cambió la cuenta); «Esa cuenta no está abierta…» (ya la cerró otro).
TABLE-F22 Consultar las cuentas de la sala (abiertas y cerradas)
Estado: hecho Actor: responsable, empleado Pantalla: Sesiones Pasos: 1. Abre Mesas → Sesiones: arranca en «Abiertas», las más recientes primero. 2. «Cerradas» enseña las cerradas con «Cobrado» y «Cierre»; «Todas», también las trasladadas, fusionadas y aparcadas. 3. Filtra por zona, camarero o estado, o busca por número de mesa. 4. «Detalle» enseña zona, camarero, estado, comensales, apertura, cierre, tiempo, cobrado y notas. Entra: las cuentas de mesa y lo cobrado en Ventas. Sale: nada. Si falla: el error de la tabla con reintento. Las devoluciones no restan del «Cobrado».
TABLE-F23 Borrar una cuenta cerrada del historial
Estado: hecho
Actor: administrador, asistente
Pantalla: Sesiones
Pasos:
1. En Sesiones → Cerradas (o Todas), «Borrar» en una cuenta terminada y confírmalo.
2. Desaparece de Sesiones; queda guardada como borrada y su recorrido por las mesas se conserva.
Entra: la cuenta de mesa.
Sale: la cuenta borrada (avisa: table.session.deleted).
Si falla: una cuenta abierta o aparcada no se borra: «Esa cuenta sigue abierta: ciérrala antes de
borrarla.».
TABLE-F24 Volver a sentar una cuenta aparcada
Estado: hecho
Actor: empleado, responsable, asistente
Pantalla: Sesiones; también en Ventas → Vender, tocando una mesa en «Elegir mesa» con la cuenta en pantalla (SALE-F19)
Pasos:
1. En Sesiones → Todas, «Volver a sentar» en una cuenta aparcada y elige una mesa libre.
2. La cuenta de mesa vuelve a «Abierta» en esa mesa, con sus comensales, su camarero y su hora de
apertura, y su cuenta de Ventas toma el título de la mesa; la mesa pasa a Ocupada y, si estaba
Reservada, gasta la reserva.
Entra: la cuenta aparcada y la mesa.
Sale: la cuenta de mesa sentada (avisa: table.session.restored).
Si falla: «Esa cuenta no está aparcada: no existe en este negocio, o ya está sentada en una mesa.»; la
mesa tiene que estar libre como al sentar (TABLE-F10).
TABLE-F25 Retener la mesa de una reserva confirmada
Estado: servidor hecho — la reacción existe; la dispara Reservas cuando exista (fase 2)
Actor: sistema
Pantalla: ninguna
Pasos:
1. En Reservas, una reserva con mesa pasa a Confirmada.
2. Mesas aparta esa mesa para la reserva desde su fecha y hora (del negocio) hasta que acaba su
duración (120 minutos si no trae), con sus comensales, su nombre y su ficha de cliente.
3. Desde 60 minutos antes de su hora la mesa sale Reservada; antes, Disponible con «Ana · 21:00».
4. Una mesa puede tener varias reservas retenidas; el plano enseña la más temprana de hoy.
Entra: de Reservas, la reserva con su mesa, fecha, hora, duración, comensales, nombre y ficha.
Sale: la retención (avisa: table.table.held). Si la confirmación llega dos veces, sigue habiendo una
sola retención.
Si falla: una mesa borrada o desactivada no se retiene.
TABLE-F26 Mover o soltar la retención cuando cambia la reserva
Estado: servidor hecho — espera a Reservas (fase 2)
Actor: sistema
Pantalla: ninguna
Pasos:
1. En Reservas se cambia la mesa, la fecha, la hora, la duración, los comensales o el nombre de una
reserva retenida.
2. Mesas mueve la retención a la mesa nueva y a la hora nueva; si a la reserva se le quita la mesa,
suelta la retención.
Entra: de Reservas, la reserva cambiada.
Sale: la retención movida o soltada (avisa: table.table.held o table.table.hold_released).
Si falla: una mesa nueva borrada o desactivada no recibe la retención y la reserva sigue retenida en
la vieja.
TABLE-F27 Soltar la mesa cuando la reserva se cancela o no se presenta
Estado: servidor hecho — espera a Reservas (fase 2)
Actor: sistema
Pantalla: ninguna
Pasos:
1. En Reservas, una reserva se cancela, se marca como no presentada o se borra.
2. Mesas suelta su retención (sin el nombre): la mesa vuelve a Disponible si no tiene otra reserva ni
gente sentada.
3. Una retención que ya se gastó (la gente se sentó) no se toca.
Entra: de Reservas, la reserva cancelada, no presentada o borrada.
Sale: la retención soltada (avisa: table.table.hold_released).
Si falla: si el aviso se repite, no cambia nada.
TABLE-F28 Gastar la retención al sentar a la reserva
Estado: hecho Actor: empleado, responsable Pantalla: Plano de sala (Servicio) Pasos: 1. Llega el grupo de la reserva: la mesa está Reservada. Tócala; la pregunta de comensales viene con los de la reserva. Pulsa «Sentar N» (TABLE-F10). 2. La mesa pasa a Ocupada y su retención queda gastada. Trasladar o dividir una cuenta a esa mesa, o volver a sentar allí una aparcada, también la gasta. 3. Sentar a otro grupo en esa mesa horas antes de la reserva (la mesa aún Disponible) no gasta la reserva de la noche. Entra: la mesa Reservada. Sale: las retenciones que la pintaban Reservada, gastadas y sin nombre. Si falla: los de TABLE-F10.
TABLE-F29 Caducar las retenciones vencidas
Estado: hecho
Actor: sistema
Pantalla: ninguna
Pasos:
1. Una retención cuya ventana ya pasó deja de pintar la mesa en el mismo momento (se compara con la
hora real, con su zona).
2. Cada hora, Mesas las marca como caducadas y les borra el nombre.
Entra: la hora.
Sale: las retenciones caducadas, sin nombre (avisa: table.table.hold_released, solo si caducó
alguna).
Si falla: se repite en el siguiente repaso; si el hub estuvo parado, hace uno solo al volver.
TABLE-F30 Retener o soltar una mesa a mano
Estado: hecho (asistente y API, como el producto actual)
Actor: responsable, empleado, asistente
Pantalla: asistente
Pasos:
1. Pide al asistente apartar una mesa («guarda la 6 para Pedro de 21:00 a 23:00, 4 personas»).
2. Desde una hora antes la mesa sale Reservada, con el nombre y la hora; pedirlo otra vez con la misma
referencia cambia la misma retención.
3. Para soltarla, pide soltarla con la misma referencia.
Entra: mesa, referencia, desde, hasta, comensales y nombre.
Sale: la retención (avisa: table.table.held) o su liberación, que borra el nombre (avisa:
table.table.hold_released).
Si falla: «Esa mesa no existe en este negocio.»; soltar una retención que ya no está: «Esa retención
ya no está: se soltó, ha vencido, o esa reserva nunca llegó a retener una mesa.».
TABLE-F31 Olvidar el nombre de un cliente cuyos datos se borran (RGPD)
Estado: servidor hecho — la reacción existe; la entrega el relay del outbox (fase 2)
Actor: sistema
Pantalla: Plano de sala
Pasos:
1. En Clientes se borran los datos personales de una ficha.
2. Todas las retenciones de mesa de esa clienta, vivas o terminadas, se quedan sin su nombre.
3. La mesa sigue apartada a su hora: donde estaba el nombre se lee «Cliente borrado · 21:00».
Entra: el aviso customer.customer.erased con el id de la ficha.
Sale: retenciones sin el nombre de la clienta. No suelta ninguna mesa.
Si falla: repetirlo no cambia nada; un aviso sin id no toca las retenciones sin ficha.
TABLE-F32 Poner o quitar el cliente de una mesa
Estado: hecho
Actor: empleado, responsable
Pantalla: Plano de sala (Servicio)
Pasos:
1. Al sentar, o en la ventana de una mesa ocupada, pulsa «Asignar cliente» y busca la ficha por
nombre o teléfono (el buscador de Clientes, el mismo del TPV).
2. La cuenta de la mesa queda con esa ficha: Ventas la recupera al cobrar. «Quitar cliente» la suelta.
3. El asistente también puede sentar con cliente: «sienta a Ana García en la mesa 4, somos 3».
Entra: la ficha, de Clientes.
Sale: el enlace cuenta ↔ cliente, que guarda Clientes (avisa: customer.order.linked).
Si falla: el motivo de Clientes; la mesa se sienta igual.
Mesas: lo que entra y lo que sale
Todo se puede pedir por las pantallas, por el asistente (por voz o por texto, con la sesión de la
propia persona) y por la API, con las mismas reglas y los mismos permisos. Pensado para la voz: una
mesa se nombra por su id o por su número («mesa 4»), con la zona si el número se repite («la 4 de la
terraza»); una zona por su id o por su nombre; un cliente por su id, su nombre o su teléfono. Si un
nombre casa con varios, se rechaza diciendo cuáles (409 *_ambiguous).
Lo que ofrece: consultas (leen, no cambian nada)
| Qué da | Quién puede | Flujos | Servicio |
|---|---|---|---|
| Las zonas con sus mesas y las libres, búsqueda, filtros, orden y páginas (hasta 100) | ver zonas | F01, F06 | table.zone.list |
| Una zona | ver zonas | F06 | table.zone.get |
| Las mesas con su estado vivo (comensales, desde cuándo, camarero, cliente, reserva), en orden natural, con búsqueda, filtros y páginas | ver mesas | F02, F09 | table.table.list |
| Una mesa con sus cuentas abiertas | ver mesas | F09–F17 | table.table.get |
| Las cuentas de la sala (abiertas, cerradas, todas), con cobrado, filtros y páginas | ver cuentas | F22 | table.session.list |
| Una cuenta de mesa | ver cuentas | F21, F22 | table.session.get |
| Las cuentas de mesa de una cuenta de Ventas (para Cocina y Ventas) | ver cuentas | F18 | table.session.by_order |
| Los camareros que han abierto cuentas (para el filtro) | ver cuentas | F22 | table.waiter.list |
| Si el plano está montado (mesas en uso) | ver mesas | F02 | table.floor.status |
| Los ajustes de sala | ver ajustes | F08 | table.settings.get |
Las zonas, las mesas, las cuentas, los camareros, el estado del plano y los ajustes se pueden seguir en vivo.
Lo que ofrece: acciones (cambian datos)
| Qué hace | Quién puede | Flujos | Servicio |
|---|---|---|---|
| Crea, cambia y borra zonas | crear / cambiar / borrar zonas | F01, F06 | table.zone.create, .update, .delete |
| Crea una mesa, muchas de golpe, la cambia, la mueve o la borra | crear / cambiar / borrar mesas | F02–F07 | table.table.create, .bulk_create, .update, .move, .delete |
| Sienta un grupo en una mesa (con una cuenta nueva o una ya abierta, y su cliente) | abrir cuentas | F10, F12, F32 | table.session.open |
| Cierra a mano una cuenta de mesa | cambiar cuentas | F21 | table.session.close |
| Pasa una cuenta a otra mesa | trasladar cuentas | F15 | table.session.transfer |
| Junta la cuenta de una mesa con la de otra | trasladar cuentas | F16 | table.session.merge |
| Divide la cuenta de una mesa | cambiar cuentas | F17 | table.session.split |
| Corrige los comensales | cambiar cuentas | F14 | table.session.set_guests |
| Quita la mesa a una cuenta (aparcar) y la vuelve a sentar | cambiar cuentas | F13, F24 | table.session.park, .restore |
| Enlaza una cuenta de Ventas a la cuenta de una mesa | abrir cuentas | F12 | table.session.link_order |
| Borra una cuenta terminada del historial | borrar cuentas | F23 | table.session.delete |
| Retiene o suelta una mesa a mano | cambiar cuentas | F30 | table.hold.place, .release |
| Guarda los ajustes de sala | ajustes | F08 | table.settings.update |
Solo para la plataforma (sin ruta en la API, como sistema): table.session.close_by_order (reacción
a Ventas), table.hold.expire (tarea programada), table.hold.sync_reservation y
table.hold.move_reservation (reacciones a Reservas) y table.hold.forget_customer (reacción a
Clientes).
Lo que avisa
| Aviso | Cuándo | Qué lleva |
|---|---|---|
table.zone.created, .updated, .deleted |
Crear, cambiar o borrar una zona | id |
table.table.created, .updated, .deleted |
Crear (también de golpe), cambiar, mover o borrar una mesa | id (ids de golpe) |
table.table.held, table.table.hold_released |
Retener o soltar una mesa (también al caducar) | table_id, source, source_ref |
table.session.opened |
Sentar | id, table_id, order_id, guests_count |
table.session.closed |
Cerrar a mano o por Ventas | id, table_id, order_id |
table.session.transferred |
Transferir | id (la nueva), from_id, from_table_id, table_id, order_id |
table.session.merged |
Fusionar | id, into_id, table_id, order_id |
table.session.split |
Dividir | id (la nueva), from_id, table_id, order_id |
table.session.updated |
Comensales o cuenta enlazada | id |
table.session.parked, table.session.restored |
Aparcar, volver a sentar | id, table_id |
table.session.deleted |
Borrar del historial | id |
table.settings.updated |
Guardar los ajustes | los campos cambiados |
Ningún aviso lleva nombres ni notas libres: solo ids y números.
A qué reacciona
| Aviso | De | Qué hace | Servicio |
|---|---|---|---|
sale.order.completed |
Ventas | Cierra las cuentas de mesa de esa cuenta (F18) | table.session.close_by_order |
sale.order.voided |
Ventas | Cierra las cuentas de mesa de esa cuenta (F20) | table.session.close_by_order |
customer.customer.erased |
Clientes | Borra el nombre de sus retenciones (F31) | table.hold.forget_customer |
reservation.reservation.status_changed |
Reservas (cuando exista) | Retiene, suelta o gasta (F25, F27) | table.hold.sync_reservation |
reservation.reservation.updated |
Reservas (cuando exista) | Mueve o suelta la retención (F26) | table.hold.move_reservation |
Mientras no hay relay (fase 1), lo que dice Ventas se lee además en cada lectura y en cada escritura: una cuenta de mesa cuya cuenta de Ventas está cobrada o anulada se pinta y se trata como cerrada.
Carga que esperan las reacciones (de cada aviso se lee solo esto; lo demás se ignora):
sale.order.completed,sale.order.voided:order_id.customer.customer.erased:id(la ficha).reservation.reservation.status_changed:id(la reserva),status(confirmedretiene;cancelled,no_showodeletedsueltan),table_id,dateytime(de pared, del negocio),duration_minutes(120 si no viene),party_size,guest_nameycustomer_id.reservation.reservation.updated:idy los campos que cambiaron, con los mismos nombres;table_idenviado vacío (null) = la reserva se quedó sin mesa.
Lo que necesita de otras apps
- Ventas (requisito): abre la cuenta de cada mesa (
sale.order.open), le pone el título (sale.order.set_label), la divide (sale.order.split), la junta (sale.order.merge) y anula la cuenta vacía de una mesa que se cierra (sale.order.void), siempre llamando a sus operaciones con la sesión de quien está en la sala y en la misma transacción. Lee de sus modelos el estado de cada cuenta, sus líneas y lo cobrado. - Clientes (requisito): el cliente de la cuenta (
customer.order.link, su modeloOrderLinkpara pintarlo) y la búsqueda por nombre o teléfono (find_customer).
Quién la usa
| App | Para qué | Servicio |
|---|---|---|
| Ventas | «Elegir mesa» del TPV (SALE-F19): las mesas y su estado, sentar o volver a sentar la cuenta de pantalla, quitarle la mesa y seguir la mesa de una cuenta | table.table.list, table.floor.status, table.session.open, table.session.restore, table.session.park, table.session.by_order |
| Cocina | La mesa de una comanda | table.session.by_order |
| Reservas | Retener la mesa de una reserva | sus avisos |
Quién puede qué
| Permiso | Propietario | Administrador | Responsable | Empleado | Servicio |
|---|---|---|---|---|---|
| Ver zonas | sí | sí | sí | sí | table.view_zone |
| Crear zonas | sí | sí | sí | no | table.add_zone |
| Cambiar zonas | sí | sí | sí | no | table.change_zone |
| Borrar zonas | sí | sí | no | no | table.delete_zone |
| Ver mesas | sí | sí | sí | sí | table.view_table |
| Crear mesas | sí | sí | sí | no | table.add_table |
| Cambiar y mover mesas | sí | sí | sí | no | table.change_table |
| Borrar mesas | sí | sí | no | no | table.delete_table |
| Ver cuentas de mesa | sí | sí | sí | sí | table.view_session |
| Sentar (abrir cuentas) | sí | sí | sí | sí | table.add_session |
| Cambiar cuentas (cerrar, dividir, comensales, aparcar, retener) | sí | sí | sí | sí | table.change_session |
| Trasladar y fusionar cuentas | sí | sí | sí | sí | table.transfer_session |
| Borrar cuentas del historial | sí | sí | no | no | table.delete_session |
| Ver ajustes | sí | sí | sí | sí | table.view_settings |
| Cambiar ajustes | sí | sí | no | no | table.manage_settings |
Los papeles llegan del SaaS con prefijo (hub_owner, hub_admin, hub_manager, hub_employee); el
cajero del producto actual es un empleado. Sentar, dividir y juntar piden además «Montar la cuenta» de
Ventas (sale.add_sale), que tienen los cuatro papeles.