OrquestadorADM

El correlativo tenía que ser atómico con veinte procesos a la vez.

Trabajo
PMS y RMS hotelero con facturación electrónica
Rol
Diseño de la arquitectura y construcción
Periodo
2024 — 2025
  • PMS/RMS
  • Facturación electrónica
  • PostgreSQL
  • Concurrencia
El encargo

Un hotel necesitaba gestión de reservas y tarifas con facturación electrónica válida ante SUNAT. El requisito duro no era el volumen: era que el correlativo no se duplicara nunca, con varios procesos emitiendo a la vez, y que el IGV cuadrara al céntimo.

PMS y RMS hotelero con facturación electrónica. Los correlativos van con INSERT ... ON CONFLICT y reintento sobre P2002, probado con 20 procesos concurrentes.

El IGV se calcula hacia atrás desde el total: base = round2(total/1.18) y luego igv = total - base. Al revés, el redondeo deja diferencias de un céntimo que SUNAT rechaza.

Códigos de SUNAT: 0 y mayor o igual a 4000 se aceptan, de 2000 a 3999 se rechazan, de 100 a 1999 es inconcluso. Ahí la regla es no reemitir.

543tests Más 53 end to endfalta cobertura
33rutas de API Sobre 29 servicios de dominio
20procesos Concurrencia probada en correlativos
Dónde se rompe

SUNAT entre 100 y 1999 es inconcluso

No se puede saber si el comprobante quedó registrado. La regla es no reemitir y esperar la consulta de estado, porque reemitir duplica el correlativo.