Antylogic
Probar demoAcceso app

399 guías operativas

Secciones de Docs
DocsTPV y KDS
Dispositivo

Cómo cerrar un servicio desde KDS

Cierra la service_session activa desde el tablero KDS cuando el servicio ya está resuelto: tickets pagados, cerrados o anulados, y ninguna caja abierta asociada.

En este artículo

El cierre de servicio se lanza desde la cabecera Servicio activo del KDS, pero sigue las reglas de TPV. La pantalla permite cerrar el turno operativo sin perder la relación con tickets, caja y producción de cocina.

En Grupo Marea Demo, el ejemplo se documenta sobre Marea Gran Via. Si el local no tiene una service_session activa, la misma cabecera ofrece abrir servicio y no aparece la acción de cierre.

Antes de empezar

  • Trabajar dentro de una organización y ubicación seleccionadas, por ejemplo Grupo Marea Demo y Marea Gran Via.
  • `tpv_settings.enable_kds` debe estar activo y el usuario debe poder acceder a KDS con `kds:view`, `kds:use` o `kds:manage`.
  • Para cerrar desde esta UI, el usuario necesita capacidad TPV; en la implementación actual, `tpv:use` es el mínimo efectivo que acepta backend.
  • Debe existir una `service_session` activa resuelta por `GET /api/app/{orgId}/{locationId}/service-sessions/active`.
  • Todos los tickets del servicio deben estar en `paid`, `closed` o `void`.
  • No puede quedar ninguna `cash_register_session` en `open` para la misma ubicación y `service_session_id`.

Instrucciones

  1. 1.

    Abre el KDS del local

    Entra en el tablero KDS de Marea Gran Via o de la ubicación activa. La pantalla comprueba la ubicación, los permisos KDS y que KDS esté habilitado en los ajustes del TPV.

  2. 2.

    Comprueba que hay servicio activo

    Revisa que la cabecera muestre Servicio activo. Si no hay sesión activa, Antylogic muestra el estado de apertura de servicio y no el botón de cierre.

  3. 3.

    Deja tickets y caja listos

    Antes de cerrar, resuelve todas las cuentas del servicio y cierra cualquier caja abierta asociada. El cierre desde KDS queda bloqueado si hay tickets pendientes o caja abierta.

  4. 4.

    Abre el control del servicio

    Pulsa la cabecera Servicio activo. El modal muestra el resumen del servicio, con cuentas abiertas y productos visibles en cocina. Si faltan permisos TPV, el modal queda en modo consulta.

  5. 5.

    Pulsa Cerrar servicio

    Con permisos suficientes, pulsa Cerrar servicio. La UI no muestra una confirmación adicional: envía el cierre de la sesión activa por `POST /api/app/{orgId}/{locationId}/service-sessions/{sessionId}/close`.

  6. 6.

    Comprueba la confirmación

    Si el cierre es válido, el modal se cierra y aparece el mensaje Servicio cerrado correctamente. Si aparece un error, revisa primero tickets no terminales o cajas abiertas y vuelve a intentarlo.

Validaciones y límites

  • Sin ubicación seleccionada, sin permisos KDS o con KDS deshabilitado, la pantalla bloquea el acceso al tablero.
  • Si no hay `service_session` activa, la UI muestra apertura de servicio y no ofrece Cerrar servicio.
  • El backend valida permisos, ubicación y pertenencia de la sesión; una sesión vacía, inexistente o de otra ubicación se trata como no encontrada.
  • Cualquier ticket con estado distinto de `paid`, `closed` o `void` bloquea el cierre con validación de `tickets`.
  • Cualquier `cash_register_session` en `open` para la misma ubicación y `service_session_id` bloquea el cierre con validación de `cash_register_session`.
  • La API acepta `POST` o `PUT` para `/{sessionId}/close`, pero el cliente KDS usa `POST`; un JSON inválido devuelve `payload invalido`.
  • Desde KDS se envía `closed_by_staff_id` como `undefined`, por lo que no debe documentarse un operador de cierre registrado salvo evidencia adicional.

Resultado esperado

La `service_session` queda marcada como `closed`, con `closed_at` en hora UTC. La UI invalida la sesión activa y el listado de sesiones, cierra el modal y muestra Servicio cerrado correctamente.