Ir al contenido
EN

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.

Flujo de emisión fiscal

  1. Venta. El usuario emite una factura desde el POS, el módulo de Ventas del ERP, el front web del vertical o un integrador.
  2. 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.
  3. Emisión. Se llama POST /v1/imprenta/documentos (vertical) o POST /api/emit (integrador). El servicio valida el esquema (Zod) y audita la operación.
  4. 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, devuelve 422 con serie_agotada_o_inexistente.
  5. 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.
  6. Registro del consumo (metering). Se inserta un evento facturable en imprenta."ConsumoControl".
  7. Persistencia. El documento se guarda con su controlNumber, documentNumber, estado y datos de consulta.

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.