4.4 KiB
4.4 KiB
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
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
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
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
- Cliente solicita factura
- Sistema recupera datos de venta
- Genera XML CFDI 4.0
- Envia a PAC para timbrado
- Almacena UUID
- 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->RetailProductServiceInventoryService-> Multi-sucursalInvoiceService-> 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