erp-retail/orchestration/directivas/DIRECTIVA-PUNTO-VENTA.md

257 lines
4.4 KiB
Markdown

# DIRECTIVA-PUNTO-VENTA
**Version:** 1.0
**Fecha:** 2025-12-08
**Vertical:** Retail / POS
**Nivel:** 2B.2
---
## PROPOSITO
Define las directrices para la implementacion del sistema de punto de venta (POS).
---
## ALCANCE
- Terminal de venta
- Sesiones de caja
- Procesamiento de pagos
- Cortes y arqueos
- Operacion offline
---
## PRINCIPIOS
### 1. Rendimiento Critico
El POS debe responder en menos de 100ms por transaccion:
- Busqueda de productos: < 50ms
- Calculo de totales: < 10ms
- Registro de venta: < 100ms
### 2. Disponibilidad
- El sistema debe funcionar offline
- Sincronizacion automatica cuando hay conexion
- No perder transacciones nunca
### 3. Seguridad en Efectivo
- Control estricto de sesiones de caja
- Movimientos de efectivo auditados
- Cortes obligatorios al cerrar
---
## FLUJO DE OPERACION
### Apertura de Caja
```
1. Cajero inicia sesion
|
2. Verifica caja asignada
|
3. Registra fondo inicial
|
4. Sesion activa
```
### Venta
```
1. Escaneo/busqueda de producto
|
2. Agregar al carrito
|
3. Aplicar descuentos/promociones
|
4. Calcular total
|
5. Seleccionar metodo de pago
|
6. Procesar pago
|
7. Imprimir ticket
|
8. Actualizar inventario
```
### Cierre de Caja
```
1. Iniciar corte
|
2. Declarar efectivo fisico
|
3. Sistema calcula esperado
|
4. Registrar diferencias
|
5. Cerrar sesion
```
---
## MODELO DE DATOS
### pos_sessions
```yaml
campos:
- id: uuid
- user_id: FK -> auth.users (cajero)
- cash_register_id: FK -> cash_registers
- opening_balance: decimal
- closing_balance: decimal
- expected_balance: decimal
- difference: decimal
- status: enum(open, closing, closed)
- opened_at: timestamp
- closed_at: timestamp
```
### pos_orders
```yaml
campos:
- id: uuid
- session_id: FK -> pos_sessions
- customer_id: FK -> retail.customers (opcional)
- order_number: string
- subtotal: decimal
- discount: decimal
- tax: decimal
- total: decimal
- status: enum(draft, paid, refunded, cancelled)
- payment_method: enum(cash, card, mixed)
- created_at: timestamp
```
### cash_movements
```yaml
campos:
- id: uuid
- session_id: FK -> pos_sessions
- movement_type: enum(sale, refund, cash_in, cash_out)
- amount: decimal
- payment_method: enum(cash, card)
- reference: string
- notes: text
- created_at: timestamp
```
---
## OPERACION OFFLINE
### Datos en Cache Local
- Catalogo de productos
- Precios vigentes
- Promociones activas
- Clientes frecuentes
### Sincronizacion
```
[Terminal POS] <---> [Cola Local] <---> [Servidor Central]
| | |
Operacion Buffer Sincronizador
| | |
Cache IndexedDB PostgreSQL
```
### Conflictos
- El servidor tiene la version autoritativa
- Las ventas offline siempre se registran
- Los ajustes de inventario se reconcilian
---
## INTEGRACION CON HARDWARE
### Dispositivos Soportados
| Dispositivo | Protocolo | Notas |
|-------------|-----------|-------|
| Impresora tickets | ESC/POS | USB o Red |
| Lector codigo barras | HID | USB |
| Cajon de dinero | Pulso via impresora | - |
| Terminal bancaria | ISO 8583 | Integracion PAC |
### Arquitectura
```
[App POS]
|
[Driver Layer]
|
+---+---+---+
| | | |
Print Scan Drawer Card
```
---
## FACTURACION CFDI
### Flujo de Facturacion
1. Cliente solicita factura
2. Sistema recupera datos de venta
3. Genera XML CFDI 4.0
4. Envia a PAC para timbrado
5. Almacena UUID
6. Envia por email
### Consideraciones
- Facturacion global para tickets sin factura
- Complementos de pago para credito
- Cancelaciones dentro de plazo legal
---
## INTEGRACION CON ERP CORE
### Herencia de Specs
| Spec Core | Aplicacion |
|-----------|------------|
| SPEC-PRICING-RULES | Precios y promociones |
| SPEC-INVENTARIOS-CICLICOS | Conteos de tienda |
| SPEC-TRAZABILIDAD-LOTES-SERIES | Productos con caducidad |
### APIs a Extender
- `ProductService` -> `RetailProductService`
- `InventoryService` -> Multi-sucursal
- `InvoiceService` -> CFDI automatico
---
## METRICAS
| Metrica | Objetivo | Alerta |
|---------|----------|--------|
| Tiempo de venta | < 30 seg | > 60 seg |
| Disponibilidad | 99.9% | < 99% |
| Diferencias de caja | 0 | > $100 |
| Ventas sin factura | < 10% | > 20% |
---
## REFERENCIAS
- HERENCIA-SPECS-ERP-CORE.md
- DATABASE_INVENTORY.yml
- MASTER_INVENTORY.yml
- CFDI 4.0 SAT
---
**Documento de directiva oficial**