POS — Órdenes
¿Qué es?
La pantalla de Órdenes muestra todas las órdenes registradas y permite gestionarlas (aprobar, cancelar, ver detalles, redirigir). Se accede desde "Órdenes" en el sidebar (ícono de portapapeles), URL: .../orders.
Requiere el permiso orders:read. El número de órdenes pendientes/listas se muestra como badge sobre el ícono del sidebar.
---
Layout general
Encabezado con título "Órdenes" y botón "Actualizar". Debajo, una barra de pestañas que controla qué vista se muestra.
---
Pestañas
La pantalla tiene hasta 3 pestañas, dependiendo de la configuración:
| Pestaña | Cuándo aparece | Descripción |
|---|---|---|
| Historial | Siempre | Lista completa de órdenes con filtros |
| Por aprobar | Solo si enableOrderApproval = true | Órdenes en awaiting_confirmation esperando acción |
| Listas | Solo si enableOrdersReady = true | Órdenes en ready esperando ser entregadas |
Las pestañas "Por aprobar" y "Listas" muestran un badge con el conteo actual de órdenes. La de "Por aprobar" es color ámbar, la de "Listas" es verde.
La pestaña inicial puede ser controlada por el parámetro URL ?tab=approval o ?tab=ready (por ejemplo, cuando se pulsa el badge del sidebar).
---
Pestaña: Historial
Barra de búsqueda y filtros
Debajo de las pestañas, una barra con:
- Campo de búsqueda — filtra por número de orden, nombre del cliente o notas
- Botón "Filtros" — abre un popover con opciones de filtrado avanzadas. Si hay filtros activos, el botón se vuelve sólido y muestra el conteo de filtros activos
- Botón "Limpiar" — aparece cuando hay filtros activos, los limpia todos de golpe
Popover de filtros
Tres secciones:
- Fecha: Hoy (default) / Ayer / Semana / Mes / Todo
- Estado: Todos / Por aprobar / Pendiente / Preparando / Listo / Entregado / Cancelado
- Tipo: Todos / En mesa / Para llevar / A domicilio
- Botón "Limpiar todos los filtros" al pie
Lista de órdenes
Cada orden aparece como una fila con:
- Número de orden (ej. #42)
- Badge de estado con color:
- Ámbar = Por aprobar
- Amarillo = Pendiente
- Azul = Preparando
- Verde = Listo
- Gris = Entregado
- Rojo = Cancelado
- Tipo y número de mesa (si aplica)
- Total
- Tiempo transcurrido
Al pulsar una fila, se abre el Panel de detalle de la orden.
Al pie de la lista hay una barra de resumen con el total de ventas de las órdenes filtradas.
---
Pestaña: Por aprobar
Cuadrícula de tarjetas (1 columna en móvil, 2 en tablet, 3 en desktop). Cada tarjeta muestra:
- Número de orden y tipo
- Lista de artículos con cantidades
- Tiempo transcurrido desde la creación
- Botón "Aprobar" (verde) → cambia status a
pending - Botón "Rechazar" (rojo) → cambia status a
cancelled - Enlace "Ver detalle" → abre el panel de detalle
Las órdenes nuevas llegan en tiempo real vía Ably sin necesidad de recargar.
---
Pestaña: Listas
Cuadrícula similar. Cada tarjeta muestra:
- Número de orden y tipo
- Lista de artículos
- Botón "Marcar como entregada" → cambia status a
delivered - Enlace "Ver detalle"
---
Panel de detalle de orden
Se abre como un sheet (panel lateral) al pulsar cualquier orden. Contiene dos secciones:
Información general
- Número de orden, tipo, estado, fecha y hora de creación
- Método de pago
- Número de mesa (si dine_in)
- Dirección de entrega (si delivery)
- Notas de la orden
- Si fue redirigida: badge indicando sucursal de origen/destino y estado del redirect
Lista de artículos
- Nombre del artículo (con variante si aplica)
- Modificadores seleccionados en texto naranja
- Cantidad y precio unitario
- Notas por artículo
- Estado de cocina por artículo (
kitchenStatus)
Historial / Timeline
Lista cronológica de eventos de la orden:
- Fecha y hora exacta de cada evento
- Actor (empleado o sistema)
- Descripción (ej. "Orden creada", "Estado actualizado: pending → preparing")
- Fuente (
posokitchen)
Acciones disponibles (según permisos y estado)
- Cancelar orden — disponible si el empleado tiene
orders:cancel. Muestra confirmación previa - Redirigir a otra sucursal — disponible si la sucursal tiene
canSendOrders = true. Abre el diálogo de redirección
---
Diálogo de redirección de orden
Permite enviar una orden a otra sucursal para que la prepare. Solo aparece si la sucursal origen tiene canSendOrders = true.
- Se carga la lista de sucursales destino disponibles
- El empleado selecciona la sucursal destino
- Puede agregar un motivo de redirección (texto libre, opcional)
- Al confirmar:
- Si
requireRedirectConfirmation = false: redirección automática aceptada - Si
requireRedirectConfirmation = true: queda pendiente de aceptación por la sucursal destino - La orden muestra un badge de estado de redirección
---
Flujo de estados de una orden
awaiting_confirmation → pending → preparing → ready → delivered
↓ ↓
cancelled cancelled (desde cualquier estado)awaiting_confirmation: creada, esperando aprobación manual del gerentepending: aprobada, enviada a cocina, esperando que empiecen a prepararlapreparing: cocina está preparando la ordenready: cocina terminó, lista para entrega o para que el cajero la entreguedelivered: entregada al clientecancelled: cancelada desde cualquier estado
---
Tiempo real
La pantalla de órdenes usa Ably para actualizar automáticamente:
- Órdenes nuevas aparecen al inicio de la lista sin recargar
- Cambios de estado (ej.
preparing→ready) se reflejan en la tarjeta - El badge del sidebar se actualiza cuando cambia el conteo