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
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.
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. ↗