POS · Punto de venta
Terminal venta rápida con catálogo + ticket builder + cobro one-shot. Decremento atómico de stock + emisión NCF en una operación.
Pre-requisitos
- Módulo Inventory instalado (tablas
products+stock_levels). - Sucursal activa (al menos
principalcreado en provisioning). - Secuencia NCF activa (típicamente B02 para venta cash).
- Productos con stock > 0 en la sucursal seleccionada.
Flujo cobro
- Tenant abre
<slug>.vertix.lat/pos. - Selecciona sucursal (default: principal).
- Click producto del grid → agrega 1 unidad al ticket. Re-click incrementa qty. Producto sin stock queda disabled.
- Override quantity y unitPrice por línea desde ticket (admin).
- Cliente: Consumidor Final default. Si ncf=B01 requiere RNC.
- Selecciona método de pago: efectivo / tarjeta / transferencia / mixto.
- Click Cobrar → sistema:
- Valida stock FOR UPDATE per producto en sucursal
- Decrementa
stock_levels.quantity - Inserta
stock_movementscon delta negativo, reason='pos_sale' - Aloca siguiente NCF
- Crea
invoicesrow con status=issued, source='pos' - Audit log
pos.sale
- Redirección a
/billing/<id>con PDF descargable.
Garantías
- Stock check FOR UPDATE previene oversell concurrente.
- Si NCF allocator falla post-stock-decrement: error explícito con instrucción de ajuste manual (DGII no perdona doble decrement).
- Sale aparece en Billing como invoice status=issued.
Permisos
Roles owner/admin/user pueden operar POS. viewer read-only no puede vender.
Ver también
- Facturación — invoices generadas por POS
- Modules — Inventory module