POS — Logística y Repartidores
¿Qué es?
El módulo de Logística permite gestionar las entregas a domicilio: asignar repartidores a las órdenes, rastrear el estado de cada entrega, y controlar el efectivo que los repartidores reciben de los clientes.
Se accede desde "Logística" en el sidebar (ícono de bicicleta), URL: .../logistics. Solo visible si enableLogistics = true. Requiere permiso logistics:read.
---
Pantalla de Logística (.../logistics)
Encabezado
- Título "Logística"
- Filtros de fecha y estado
- Botón de actualizar
Lista de órdenes de domicilio
Muestra las órdenes de tipo delivery ordenadas por más reciente. Para cada orden:
- Número de orden
- Nombre del cliente y dirección de entrega
- Estado actual (Pendiente, Preparando, Lista, En camino, Entregada)
- Repartidor asignado (o "Sin asignar" si no hay uno)
- Método de pago (efectivo, tarjeta, contra entrega)
- Total de la orden
- Tiempo transcurrido
Filtros disponibles
- Por estado de la orden
- Por repartidor asignado
- Por fecha
---
Asignar repartidor
Al pulsar una orden, se abre el detalle con un selector de repartidor:
- Se muestra la lista de empleados con rol
deliveryde la sucursal - El gerente selecciona el repartidor
- Al confirmar, la orden queda asignada (
deliveryEmployeeId) - Si
deliveryRequiresAssignment = true, el repartidor ahora verá esta orden en su vista de entregas
También se puede desasignar poniendo el repartidor en "Sin asignar".
---
Vista del repartidor
Los empleados con rol delivery acceden a una vista simplificada de sus entregas asignadas. Desde allí pueden:
- Ver las órdenes asignadas con la dirección del cliente
- Marcar como "En camino" al salir a entregar
- Marcar como "Entregada" al completar la entrega
Si deliveryRequiresAssignment = false, los repartidores ven todas las órdenes de domicilio sin asignar además de las suyas.
---
Sesiones de efectivo de repartidores
Cuando el método de pago es pay_on_delivery (contra entrega), el repartidor recibe efectivo del cliente. Este efectivo se controla mediante sesiones de efectivo de repartidor:
Flujo
- El gerente abre una sesión de efectivo para el repartidor antes de que salga a repartir (desde Cajas → Repartidores)
- Cada vez que el repartidor marca una orden como "Entregada" con pago contra entrega:
- El total de esa orden se suma al
expectedAmountde la sesión activa del repartidor - La orden queda vinculada a esa sesión mediante
driverCashSessionId
- Al regresar, el repartidor entrega el efectivo al cajero
- El gerente cierra la sesión ingresando el monto recibido (
actualAmount) - Se calcula la diferencia (
actualAmount - expectedAmount)
Tabla de sesiones
En Cajas → Repartidores se ve:
- Repartidor
- Estado de sesión (abierta/cerrada)
- Monto esperado (suma de órdenes contra entrega entregadas)
- Monto recibido (al cerrar)
- Diferencia
---
Configuración relacionada
Desde Configuración POS → Delivery (/settings):
| Ajuste | Descripción |
|---|---|
deliveryRequiresAssignment | Si true, los repartidores solo ven sus órdenes asignadas. Si false, todos los repartidores ven todas las órdenes de domicilio sin asignar |
deliveryAreaAddress | Dirección central de la zona de reparto (para autocompletado de dirección en el checkout) |
deliveryAreaLat/Lng | Coordenadas del centro de la zona de reparto |
deliveryAreaRadiusKm | Radio en kilómetros de la zona de reparto |
---
Integración con mapa
Si el artículo tiene dirección GPS guardada, se puede mostrar en un mapa. El autocompletado de dirección en el checkout usa Google Maps Places API para sugerir direcciones dentro del radio de la zona de reparto configurada.