Flujo de emisión
El siguiente diagrama resume el ciclo completo de emisión en Zentto Imprenta Digital, incluyendo el camino de contingencia ante indisponibilidad.
Pasos del flujo
Sección titulada «Pasos del flujo»- Venta. El usuario emite una factura desde el POS, el módulo de Ventas del ERP, el front web del vertical o un integrador.
- Construcción del documento canónico. El cliente transforma el documento de venta en
el documento canónico: mapea la tasa de cada ítem a su código de alícuota (
G,R,A,E), calcula los subtotales por alícuota y el IGTF (3 %) sobre los pagos en divisa. - Emisión. Se llama
POST /v1/imprenta/documentos(vertical) oPOST /api/emit(integrador). El servicio valida el esquema (Zod) y audita la operación. - Asignación atómica del número de control. La generación propia invoca
imprenta.fn_assign_control_serie(companyId, tipoDocumento, serie), que toma el siguiente número de la serie activa con bloqueo de fila (SELECT ... FOR UPDATE). Si la serie está agotada o no existe, devuelve422conserie_agotada_o_inexistente. - Encadenamiento de integridad. Se calcula el hash SHA-256 del registro combinando
NCFD | RIF | Fecha | TipoDoc | Total | HashAnterior | Timestamp, encadenado al último hash del mismo RIF emisor. - Registro del consumo (metering). Se inserta un evento facturable en
imprenta."ConsumoControl". - Persistencia. El documento se guarda con su
controlNumber,documentNumber, estado y datos de consulta.
Contingencia (no bloqueante)
Sección titulada «Contingencia (no bloqueante)»La transmisión de cumplimiento al SENIAT es asíncrona: cada documento se encola en
fiscal."SeniatDispatch" y un worker lo reintenta con backoff exponencial
(fn_backoff_next: 1, 2, 4, 8, … hasta 60 minutos), hasta MaxAttempts.