POS — Cupones
¿Qué es?
Los cupones son códigos de descuento de un solo uso (o uso limitado) que el cliente o cajero ingresa al momento del pago. A diferencia de las promociones (que se aplican por reglas automáticas), los cupones requieren ingresar un código específico.
Se accede desde "Cupones" en el sidebar (ícono de ticket), URL: .../coupons. Solo visible si enableCoupons = true. Requiere permiso coupons:read.
---
Lista de cupones (.../coupons)
Para cada cupón:
- Código (ej. "VERANO20", "CUMPLE50")
- Tipo de descuento y valor
- Usos actuales / usos máximos permitidos
- Estado:
active/redeemed/expired/revoked - Fecha de expiración
- Botones de ver detalle, editar, revocar
---
Crear cupón
Información básica
- Código — texto que el usuario escribe al pagar. Puede ser generado automáticamente o personalizado. No distingue mayúsculas/minúsculas.
- Descripción — nota interna para el administrador
Tipo de descuento
| Tipo | Descripción |
|---|---|
percentage | Descuento de porcentaje (ej. 20%) |
fixed_amount | Descuento de monto fijo (ej. $50) |
free_item | Un artículo específico gratis |
Valor
- Para porcentaje: número entre 1 y 100
- Para monto fijo: monto en la moneda local
- Para artículo gratis: selector del artículo
Límites de uso
- Uso único (default): el cupón solo se puede canjear una vez
- Usos máximos: número de veces que se puede usar antes de expirar automáticamente (ej. 100 usos)
- Fecha de expiración: el cupón deja de ser válido después de esta fecha
Sucursal
- El cupón puede ser válido para todas las sucursales o solo para una específica
---
Canje de cupones en el checkout
Cuando enableCoupons = true, en la pantalla de pago aparece un campo "Código de cupón":
- El cajero (o el cliente en la app) escribe el código
- El sistema valida:
- Que el código exista y esté activo
- Que no haya expirado
- Que no haya excedido el límite de usos
- Que aplique para la sucursal actual
- Si es válido, muestra el descuento calculado y el nuevo total
- Al confirmar la orden, el cupón queda marcado como canjeado (
status = redeemedo se incrementa el contador de usos) - La orden guarda el ID del cupón en
appliedCouponId
Solo se puede aplicar un cupón por orden.
---
Historial de canjes
Desde el detalle de un cupón, el administrador puede ver:
- Lista de todas las órdenes en las que se usó el cupón
- Fecha, sucursal y monto de descuento de cada canje
---
Revocar un cupón
El administrador puede revocar un cupón activo en cualquier momento, cambiando su estado a revoked. Los canjes ya realizados no se deshacen.