sunat-engine-nest 2.0.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/dist/gre/sunat-gre.client.d.ts +1 -0
- package/dist/gre/sunat-gre.client.js +2 -1
- package/dist/gre/sunat-gre.client.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/ose/ose.client.d.ts +20 -2
- package/dist/ose/ose.client.js +307 -27
- package/dist/ose/ose.client.js.map +1 -1
- package/dist/signer/xml-signer.service.js +4 -1
- package/dist/signer/xml-signer.service.js.map +1 -1
- package/dist/soap/sunat-soap.client.d.ts +2 -0
- package/dist/soap/sunat-soap.client.js.map +1 -1
- package/dist/sunat-engine.module.d.ts +4 -0
- package/dist/sunat-engine.module.js.map +1 -1
- package/dist/sunat-engine.service.d.ts +1 -0
- package/dist/sunat-engine.service.js +37 -13
- package/dist/sunat-engine.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/sunat.types.d.ts +9 -1
- package/dist/validation/document.validator.d.ts +5 -0
- package/dist/validation/document.validator.js +262 -0
- package/dist/validation/document.validator.js.map +1 -0
- package/dist/validation/invoice.validator.d.ts +3 -0
- package/dist/validation/invoice.validator.js +247 -28
- package/dist/validation/invoice.validator.js.map +1 -1
- package/dist/xml/common.builder.js +50 -19
- package/dist/xml/common.builder.js.map +1 -1
- package/dist/xml/despatch.builder.d.ts +1 -0
- package/dist/xml/despatch.builder.js +204 -12
- package/dist/xml/despatch.builder.js.map +1 -1
- package/dist/xml/invoice.builder.js +4 -1
- package/dist/xml/invoice.builder.js.map +1 -1
- package/dist/xml/namespaces.js +2 -2
- package/dist/xml/namespaces.js.map +1 -1
- package/dist/xml/summary.builder.js +16 -23
- package/dist/xml/summary.builder.js.map +1 -1
- package/dist/xml/voided.builder.js +5 -5
- package/dist/xml/voided.builder.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvoiceValidationError = void 0;
|
|
3
|
+
exports.CATALOGO_51_TIPO_OPERACION = exports.CATALOGO_06_DOC_IDENTIDAD = exports.CATALOGO_02_MONEDA = exports.InvoiceValidationError = void 0;
|
|
4
4
|
exports.validateInvoicePayload = validateInvoicePayload;
|
|
5
5
|
exports.validateNotePayload = validateNotePayload;
|
|
6
6
|
class InvoiceValidationError extends Error {
|
|
@@ -14,6 +14,43 @@ exports.InvoiceValidationError = InvoiceValidationError;
|
|
|
14
14
|
function addError(errors, field, msg) {
|
|
15
15
|
errors.push(`${field}: ${msg}`);
|
|
16
16
|
}
|
|
17
|
+
exports.CATALOGO_02_MONEDA = [
|
|
18
|
+
'PEN', 'USD', 'EUR', 'GBP', 'JPY', 'CAD', 'AUD', 'CHF', 'CNY',
|
|
19
|
+
'SEK', 'NOK', 'DKK', 'CZK', 'PLN', 'HUF', 'RON', 'BGN', 'RUB',
|
|
20
|
+
'TRY', 'UAH', 'INR', 'KRW', 'SGD', 'HKD', 'NZD', 'THB', 'MYR',
|
|
21
|
+
'PHP', 'IDR', 'VND', 'MXN', 'BRL', 'ARS', 'CLP', 'COP',
|
|
22
|
+
'ILS', 'SAR', 'AED', 'ZAR', 'EGP', 'NGN', 'KES', 'MAD', 'TND',
|
|
23
|
+
'BHD', 'QAR', 'KWD', 'OMR', 'JOD', 'LKR', 'PKR', 'BDT', 'NPR',
|
|
24
|
+
'KZT', 'UZS', 'GEL', 'AZN', 'AMD', 'BYN', 'HRK', 'RSD', 'ISK',
|
|
25
|
+
'ALL', 'MKD', 'BAM', 'MDA', 'TJS', 'TMT', 'KGS',
|
|
26
|
+
];
|
|
27
|
+
exports.CATALOGO_06_DOC_IDENTIDAD = ['0', '1', '4', '6', '7', 'A', 'B', 'C', 'D', 'E'];
|
|
28
|
+
exports.CATALOGO_51_TIPO_OPERACION = [
|
|
29
|
+
'0101', '0112', '0113',
|
|
30
|
+
'0200', '0201', '0202', '0203', '0204', '0205', '0206', '0207', '0208',
|
|
31
|
+
'0301', '0302', '0303',
|
|
32
|
+
'0401',
|
|
33
|
+
'0501', '0502', '0503',
|
|
34
|
+
'1001', '1002', '1003', '1004',
|
|
35
|
+
'2001', '2100', '2101', '2102', '2103', '2104',
|
|
36
|
+
];
|
|
37
|
+
const AFECTACION_GRAVADA = ['10', '11', '12', '13', '14', '15', '16', '17'];
|
|
38
|
+
const AFECTACION_SIN_IGV = [
|
|
39
|
+
'20', '21', '30', '31', '32', '33', '34', '35', '36', '37',
|
|
40
|
+
];
|
|
41
|
+
const TASA_IGV = 18;
|
|
42
|
+
const TOL_LINEA = 0.02;
|
|
43
|
+
const TOL_EXACTA = 0.01;
|
|
44
|
+
function near(a, b, tol = TOL_EXACTA) {
|
|
45
|
+
const cents = Math.abs(Math.round(Number(a) * 100) - Math.round(Number(b) * 100));
|
|
46
|
+
return cents <= Math.round(tol * 100);
|
|
47
|
+
}
|
|
48
|
+
function round2(n) {
|
|
49
|
+
return Math.round(n * 100) / 100;
|
|
50
|
+
}
|
|
51
|
+
function hasTwoDecimals(value) {
|
|
52
|
+
return Math.abs(value * 100 - Math.round(value * 100)) < 1e-6;
|
|
53
|
+
}
|
|
17
54
|
function isValidRuc(ruc) {
|
|
18
55
|
if (!/^\d{11}$/.test(ruc))
|
|
19
56
|
return false;
|
|
@@ -24,11 +61,18 @@ function isValidRuc(ruc) {
|
|
|
24
61
|
const checkDigit = remainder < 2 ? remainder : 11 - remainder;
|
|
25
62
|
return checkDigit === digits[10];
|
|
26
63
|
}
|
|
27
|
-
function isValidSerie(tipoDoc, serie) {
|
|
28
|
-
|
|
64
|
+
function isValidSerie(tipoDoc, serie, tipDocAfectado) {
|
|
65
|
+
let prefix = '';
|
|
66
|
+
if (tipoDoc === '01')
|
|
67
|
+
prefix = 'F';
|
|
68
|
+
else if (tipoDoc === '03')
|
|
69
|
+
prefix = 'B';
|
|
70
|
+
else if (tipoDoc === '07' || tipoDoc === '08') {
|
|
71
|
+
prefix = tipDocAfectado === '03' ? 'B' : 'F';
|
|
72
|
+
}
|
|
29
73
|
if (!prefix)
|
|
30
|
-
return
|
|
31
|
-
return new RegExp(`^${prefix}
|
|
74
|
+
return /^[A-Z0-9]{3,4}$/i.test(serie);
|
|
75
|
+
return new RegExp(`^${prefix}[A-Z0-9]{3}$`, 'i').test(serie);
|
|
32
76
|
}
|
|
33
77
|
function isValidCorrelativo(correlativo) {
|
|
34
78
|
return /^\d{1,8}$/.test(correlativo);
|
|
@@ -49,6 +93,9 @@ function validateDetail(detail, index, errors) {
|
|
|
49
93
|
if (!detail.unidad || detail.unidad.trim() === '') {
|
|
50
94
|
addError(errors, `${prefix}.unidad`, 'Unidad de medida es obligatoria');
|
|
51
95
|
}
|
|
96
|
+
else if (!/^[A-Za-z0-9]{1,3}$/.test(detail.unidad.trim())) {
|
|
97
|
+
addError(errors, `${prefix}.unidad`, `Unidad "${detail.unidad}" inválida: debe ser un código de 1 a 3 caracteres del Catálogo N.° 05 (ej: NIU, KGM, ZZ)`);
|
|
98
|
+
}
|
|
52
99
|
if (detail.cantidad === undefined || detail.cantidad === null || detail.cantidad <= 0) {
|
|
53
100
|
addError(errors, `${prefix}.cantidad`, 'Cantidad debe ser mayor a 0');
|
|
54
101
|
}
|
|
@@ -64,12 +111,67 @@ function validateDetail(detail, index, errors) {
|
|
|
64
111
|
if (!detail.tipAfeIgv || !['10', '11', '12', '13', '14', '15', '16', '17', '20', '21', '30', '31', '32', '33', '34', '35', '36', '37', '40', '41'].includes(detail.tipAfeIgv)) {
|
|
65
112
|
addError(errors, `${prefix}.tipAfeIgv`, `Tipo afectación IGV "${detail.tipAfeIgv}" no es válido (Cat. 07)`);
|
|
66
113
|
}
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
114
|
+
const importes = [
|
|
115
|
+
'mtoValorUnitario', 'mtoValorVenta', 'mtoBaseIgv', 'porcentajeIgv',
|
|
116
|
+
'igv', 'totalImpuestos', 'mtoPrecioUnitario', 'mtoValorGratuito',
|
|
117
|
+
'isc', 'icbper',
|
|
118
|
+
];
|
|
119
|
+
for (const campo of importes) {
|
|
120
|
+
const v = detail[campo];
|
|
121
|
+
if (v == null)
|
|
122
|
+
continue;
|
|
123
|
+
if (typeof v !== 'number' || Number.isNaN(v)) {
|
|
124
|
+
addError(errors, `${prefix}.${campo}`, `${campo} debe ser un número`);
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (v < 0) {
|
|
128
|
+
addError(errors, `${prefix}.${campo}`, `${campo} no puede ser negativo (recibido ${v})`);
|
|
129
|
+
continue;
|
|
72
130
|
}
|
|
131
|
+
if (campo !== 'porcentajeIgv' && !hasTwoDecimals(v)) {
|
|
132
|
+
addError(errors, `${prefix}.${campo}`, `${campo} debe tener máximo 2 decimales (recibido ${v})`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const gratuita = (detail.mtoValorGratuito ?? 0) > 0;
|
|
136
|
+
const gravada = AFECTACION_GRAVADA.includes(detail.tipAfeIgv);
|
|
137
|
+
if (gravada) {
|
|
138
|
+
if (Number(detail.porcentajeIgv) !== TASA_IGV) {
|
|
139
|
+
addError(errors, `${prefix}.porcentajeIgv`, `Operación gravada (tipAfeIgv ${detail.tipAfeIgv}) debe llevar porcentajeIgv ${TASA_IGV} (recibido ${detail.porcentajeIgv})`);
|
|
140
|
+
}
|
|
141
|
+
const igvEsperado = round2((detail.mtoBaseIgv ?? 0) * TASA_IGV / 100);
|
|
142
|
+
if (!near(detail.igv, igvEsperado, TOL_LINEA)) {
|
|
143
|
+
addError(errors, `${prefix}.igv`, `IGV ${detail.igv} no coincide con ${TASA_IGV}% de la base ${detail.mtoBaseIgv} (esperado: ${igvEsperado})`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else if (AFECTACION_SIN_IGV.includes(detail.tipAfeIgv)) {
|
|
147
|
+
if (Number(detail.porcentajeIgv) !== 0 || detail.igv !== 0) {
|
|
148
|
+
addError(errors, `${prefix}.igv`, `Operación exonerada/inafecta (tipAfeIgv ${detail.tipAfeIgv}) no genera IGV: ` +
|
|
149
|
+
`porcentajeIgv debe ser 0 e igv 0 (recibidos ${detail.porcentajeIgv}, ${detail.igv})`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (gratuita) {
|
|
153
|
+
if (detail.mtoValorVenta !== 0) {
|
|
154
|
+
addError(errors, `${prefix}.mtoValorVenta`, `Con mtoValorGratuito > 0 el mtoValorVenta debe ser 0 (recibido ${detail.mtoValorVenta})`);
|
|
155
|
+
}
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const vvEsperado = round2(Number(detail.cantidad) * Number(detail.mtoValorUnitario));
|
|
159
|
+
if (!near(detail.mtoValorVenta, vvEsperado, TOL_LINEA)) {
|
|
160
|
+
addError(errors, `${prefix}.mtoValorVenta`, `mtoValorVenta ${detail.mtoValorVenta} no coincide con cantidad (${detail.cantidad}) × ` +
|
|
161
|
+
`mtoValorUnitario (${detail.mtoValorUnitario}) = ${vvEsperado}`);
|
|
162
|
+
}
|
|
163
|
+
if (!near(detail.mtoBaseIgv, detail.mtoValorVenta)) {
|
|
164
|
+
addError(errors, `${prefix}.mtoBaseIgv`, `mtoBaseIgv ${detail.mtoBaseIgv} debe ser igual a mtoValorVenta ${detail.mtoValorVenta}`);
|
|
165
|
+
}
|
|
166
|
+
const precioEsperado = round2(Number(detail.mtoValorUnitario) * (1 + Number(detail.porcentajeIgv) / 100));
|
|
167
|
+
if (!near(detail.mtoPrecioUnitario, precioEsperado, TOL_LINEA)) {
|
|
168
|
+
addError(errors, `${prefix}.mtoPrecioUnitario`, `mtoPrecioUnitario ${detail.mtoPrecioUnitario} no coincide con ` +
|
|
169
|
+
`mtoValorUnitario × (1 + ${detail.porcentajeIgv}%) = ${precioEsperado}`);
|
|
170
|
+
}
|
|
171
|
+
const totalImpuestosEsperado = round2((detail.igv ?? 0) + (detail.isc ?? 0) + (detail.icbper ?? 0));
|
|
172
|
+
if (!near(detail.totalImpuestos, totalImpuestosEsperado)) {
|
|
173
|
+
addError(errors, `${prefix}.totalImpuestos`, `totalImpuestos ${detail.totalImpuestos} no coincide con IGV+ISC+ICBPER = ${totalImpuestosEsperado} ` +
|
|
174
|
+
`(SUNAT observa 3292/3294)`);
|
|
73
175
|
}
|
|
74
176
|
}
|
|
75
177
|
function validateInvoicePayload(data) {
|
|
@@ -78,7 +180,7 @@ function validateInvoicePayload(data) {
|
|
|
78
180
|
addError(errors, 'tipoDoc', `Tipo documento "${data.tipoDoc}" inválido. Debe ser "01" (Factura) o "03" (Boleta)`);
|
|
79
181
|
}
|
|
80
182
|
if (!data.serie || !isValidSerie(data.tipoDoc, data.serie)) {
|
|
81
|
-
addError(errors, 'serie', `Serie "${data.serie}" no tiene formato válido (ej: F001, B001)`);
|
|
183
|
+
addError(errors, 'serie', `Serie "${data.serie}" no tiene formato válido (4 caracteres alfanuméricos, ej: F001, FC01, FA01, B001)`);
|
|
82
184
|
}
|
|
83
185
|
if (!data.correlativo || !isValidCorrelativo(data.correlativo)) {
|
|
84
186
|
addError(errors, 'correlativo', `Correlativo "${data.correlativo}" inválido (1-8 dígitos numéricos)`);
|
|
@@ -92,9 +194,15 @@ function validateInvoicePayload(data) {
|
|
|
92
194
|
if (!data.tipoMoneda || data.tipoMoneda.trim() === '') {
|
|
93
195
|
addError(errors, 'tipoMoneda', 'Tipo de moneda es obligatoria (ej: PEN, USD)');
|
|
94
196
|
}
|
|
197
|
+
else if (!exports.CATALOGO_02_MONEDA.includes(data.tipoMoneda.trim().toUpperCase())) {
|
|
198
|
+
addError(errors, 'tipoMoneda', `tipoMoneda "${data.tipoMoneda}" no está en el Catálogo N.° 02 (ej: ${exports.CATALOGO_02_MONEDA.slice(0, 6).join(', ')})`);
|
|
199
|
+
}
|
|
95
200
|
if (!data.tipoOperacion || data.tipoOperacion.trim() === '') {
|
|
96
201
|
addError(errors, 'tipoOperacion', 'Tipo de operación es obligatorio (Cat. 51)');
|
|
97
202
|
}
|
|
203
|
+
else if (!exports.CATALOGO_51_TIPO_OPERACION.includes(data.tipoOperacion.trim())) {
|
|
204
|
+
addError(errors, 'tipoOperacion', `tipoOperacion "${data.tipoOperacion}" no está en el Catálogo N.° 51 (ej: 0101 venta interna, 0200 exportación de bienes, 1001 sujeta a detracción, 2001 sujeta a percepción)`);
|
|
205
|
+
}
|
|
98
206
|
if (!data.company) {
|
|
99
207
|
addError(errors, 'company', 'Datos del emisor son obligatorios');
|
|
100
208
|
}
|
|
@@ -113,6 +221,9 @@ function validateInvoicePayload(data) {
|
|
|
113
221
|
if (!data.client.tipoDoc || data.client.tipoDoc.trim() === '') {
|
|
114
222
|
addError(errors, 'client.tipoDoc', 'Tipo documento del cliente es obligatorio');
|
|
115
223
|
}
|
|
224
|
+
else if (!exports.CATALOGO_06_DOC_IDENTIDAD.includes(data.client.tipoDoc.trim())) {
|
|
225
|
+
addError(errors, 'client.tipoDoc', `client.tipoDoc "${data.client.tipoDoc}" no está en el Catálogo N.° 06 (6=RUC, 1=DNI, 4=Carné extranjería, 7=Pasaporte, 0=Doc. trib. sin RUC)`);
|
|
226
|
+
}
|
|
116
227
|
if (!data.client.numDoc || data.client.numDoc.trim() === '') {
|
|
117
228
|
addError(errors, 'client.numDoc', 'Número documento del cliente es obligatorio');
|
|
118
229
|
}
|
|
@@ -136,32 +247,86 @@ function validateInvoicePayload(data) {
|
|
|
136
247
|
}
|
|
137
248
|
if (data.details && data.details.length > 0) {
|
|
138
249
|
const afectacionesGravadas = ['10', '11', '12', '13', '14', '15', '16', '17'];
|
|
250
|
+
const isFree = (d) => (d.mtoValorGratuito ?? 0) > 0;
|
|
139
251
|
let sumaValorVenta = 0;
|
|
140
252
|
let sumaBaseIgv = 0;
|
|
141
253
|
let sumaIgv = 0;
|
|
254
|
+
let sumaBaseGravada = 0;
|
|
255
|
+
let sumaOperGratuitas = 0;
|
|
256
|
+
let sumaIGVGratuitas = 0;
|
|
142
257
|
for (const d of data.details) {
|
|
258
|
+
if (isFree(d)) {
|
|
259
|
+
sumaOperGratuitas += d.mtoValorGratuito || 0;
|
|
260
|
+
if (afectacionesGravadas.includes(d.tipAfeIgv)) {
|
|
261
|
+
sumaIGVGratuitas += d.igv || 0;
|
|
262
|
+
}
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
143
265
|
sumaValorVenta += d.mtoValorVenta || 0;
|
|
144
266
|
sumaBaseIgv += d.mtoBaseIgv || 0;
|
|
145
267
|
if (afectacionesGravadas.includes(d.tipAfeIgv)) {
|
|
146
268
|
sumaIgv += d.igv || 0;
|
|
269
|
+
sumaBaseGravada += d.mtoBaseIgv || 0;
|
|
147
270
|
}
|
|
148
271
|
}
|
|
272
|
+
const esAfectante = (cod) => cod === '00' || cod === '02';
|
|
273
|
+
let descuentoAfectante = 0;
|
|
274
|
+
let descuentoNoAfectante = 0;
|
|
275
|
+
for (const d of data.descuentos ?? []) {
|
|
276
|
+
const monto = Number(d.monto) || 0;
|
|
277
|
+
if (esAfectante(d.codTipo))
|
|
278
|
+
descuentoAfectante += monto;
|
|
279
|
+
else
|
|
280
|
+
descuentoNoAfectante += monto;
|
|
281
|
+
}
|
|
282
|
+
const tasaIgv = sumaBaseGravada > 0 ? sumaIgv / sumaBaseGravada : 0;
|
|
283
|
+
const descuentoIgv = descuentoAfectante * tasaIgv;
|
|
284
|
+
const valorVentaEsperada = sumaValorVenta - descuentoAfectante;
|
|
285
|
+
const mtoIgvEsperado = sumaIgv - descuentoIgv;
|
|
286
|
+
const totalImpuestosEsperado = mtoIgvEsperado + (data.mtoISC || 0) + (data.icbper || 0);
|
|
287
|
+
const mtoImpVentaEsperada = valorVentaEsperada + totalImpuestosEsperado - descuentoNoAfectante + (data.redondeo || 0);
|
|
288
|
+
const ctxValorVenta = descuentoAfectante > 0 ? ` - descuento global (${descuentoAfectante})` : '';
|
|
289
|
+
const ctxIgv = descuentoAfectante > 0 ? ` - IGV descuento global (${descuentoIgv})` : '';
|
|
290
|
+
if (data.mtoDescuentos != null && Math.abs(data.mtoDescuentos - descuentoNoAfectante) > 0.02) {
|
|
291
|
+
addError(errors, 'mtoDescuentos', `Descuentos declarados (${data.mtoDescuentos}) no coinciden con la suma de descuentos que NO afectan la base imponible (${descuentoNoAfectante}); los códigos 00/02 no van en AllowanceTotalAmount`);
|
|
292
|
+
}
|
|
293
|
+
if (descuentoNoAfectante > 0 && data.mtoDescuentos == null) {
|
|
294
|
+
addError(errors, 'mtoDescuentos', `Hay descuentos que no afectan la base (${descuentoNoAfectante}) pero falta mtoDescuentos / AllowanceTotalAmount`);
|
|
295
|
+
}
|
|
149
296
|
if (Math.abs(sumaBaseIgv - sumaValorVenta) > 0.02) {
|
|
150
297
|
addError(errors, 'totals', `Suma de bases IGV (${sumaBaseIgv}) no coincide con suma de valor venta (${sumaValorVenta})`);
|
|
151
298
|
}
|
|
152
|
-
if (Math.abs(data.mtoIGV -
|
|
153
|
-
addError(errors, 'mtoIGV', `Total IGV declarado (${data.mtoIGV}) no coincide con suma de IGV de items (${
|
|
299
|
+
if (Math.abs(data.mtoIGV - mtoIgvEsperado) > 0.02) {
|
|
300
|
+
addError(errors, 'mtoIGV', `Total IGV declarado (${data.mtoIGV}) no coincide con suma de IGV de items${ctxIgv} (${mtoIgvEsperado})`);
|
|
301
|
+
}
|
|
302
|
+
if (Math.abs(data.valorVenta - valorVentaEsperada) > 0.02) {
|
|
303
|
+
addError(errors, 'valorVenta', `Valor de venta declarado (${data.valorVenta}) no coincide con suma de items${ctxValorVenta} (${valorVentaEsperada})`);
|
|
304
|
+
}
|
|
305
|
+
if (data.mtoOperGravadas != null) {
|
|
306
|
+
const gravadasEsperadas = valorVentaEsperada - (data.mtoOperExoneradas ?? 0) - (data.mtoOperInafectas ?? 0);
|
|
307
|
+
if (Math.abs(data.mtoOperGravadas - gravadasEsperadas) > 0.02) {
|
|
308
|
+
addError(errors, 'mtoOperGravadas', `Operaciones gravadas (${data.mtoOperGravadas}) no coincide con valorVenta esperado menos exoneradas/inafectas (${gravadasEsperadas})`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (sumaOperGratuitas > 0) {
|
|
312
|
+
const mtoOpGrat = data.mtoOperGratuitas ?? 0;
|
|
313
|
+
if (Math.abs(mtoOpGrat - sumaOperGratuitas) > 0.02) {
|
|
314
|
+
addError(errors, 'mtoOperGratuitas', `Operaciones gratuitas (${mtoOpGrat}) no coincide con suma de items gratuitos (${sumaOperGratuitas})`);
|
|
315
|
+
}
|
|
316
|
+
const mtoIgvGrat = data.mtoIGVGratuitas ?? 0;
|
|
317
|
+
if (sumaIGVGratuitas > 0 && Math.abs(mtoIgvGrat - sumaIGVGratuitas) > 0.02) {
|
|
318
|
+
addError(errors, 'mtoIGVGratuitas', `IGV gratuito (${mtoIgvGrat}) no coincide con suma de IGV de items gratuitos (${sumaIGVGratuitas})`);
|
|
319
|
+
}
|
|
154
320
|
}
|
|
155
|
-
|
|
156
|
-
|
|
321
|
+
const totalImpuestosDeclaradoEsperado = data.mtoIGV + (data.mtoISC || 0) + (data.icbper || 0);
|
|
322
|
+
if (Math.abs(data.totalImpuestos - totalImpuestosDeclaradoEsperado) > 0.02) {
|
|
323
|
+
addError(errors, 'totalImpuestos', `Total impuestos (${data.totalImpuestos}) no coincide con IGV+ISC+ICBPER (${totalImpuestosDeclaradoEsperado})`);
|
|
157
324
|
}
|
|
158
|
-
const totalImpuestosEsperado = data.mtoIGV + (data.mtoISC || 0) + (data.icbper || 0);
|
|
159
325
|
if (Math.abs(data.totalImpuestos - totalImpuestosEsperado) > 0.02) {
|
|
160
|
-
addError(errors, 'totalImpuestos', `Total impuestos (${data.totalImpuestos}) no coincide con
|
|
326
|
+
addError(errors, 'totalImpuestos', `Total impuestos (${data.totalImpuestos}) no coincide con el total esperado de ítems${ctxIgv} (${totalImpuestosEsperado})`);
|
|
161
327
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
addError(errors, 'mtoImpVenta', `Monto total (${data.mtoImpVenta}) no coincide con valorVenta+totalImpuestos (${mtoImpVentaEsperado})`);
|
|
328
|
+
if (Math.abs(data.mtoImpVenta - mtoImpVentaEsperada) > 0.02) {
|
|
329
|
+
addError(errors, 'mtoImpVenta', `Monto total (${data.mtoImpVenta}) no coincide con valorVenta+totalImpuestos-descuentos no afectantes esperados (${mtoImpVentaEsperada})`);
|
|
165
330
|
}
|
|
166
331
|
}
|
|
167
332
|
if (!data.legends || data.legends.length === 0) {
|
|
@@ -173,6 +338,39 @@ function validateInvoicePayload(data) {
|
|
|
173
338
|
addError(errors, 'legends', 'Leyenda code 1000 (monto en letras) es obligatoria');
|
|
174
339
|
}
|
|
175
340
|
}
|
|
341
|
+
if ((data.details ?? []).some(d => (d.mtoValorGratuito ?? 0) > 0)) {
|
|
342
|
+
const has1002 = (data.legends ?? []).some(l => l.code === '1002');
|
|
343
|
+
if (!has1002) {
|
|
344
|
+
addError(errors, 'legends', 'Leyenda code 1002 ("TRANSFERENCIA GRATUITA DE UN BIEN Y/O SERVICIO PRESTADO GRATUITAMENTE") es obligatoria cuando existen ítems gratuitos (Cat. 15)');
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (data.formaPago?.tipo === 'Credito') {
|
|
348
|
+
const montoPago = data.formaPago.monto;
|
|
349
|
+
if (montoPago === undefined || montoPago === null || Number.isNaN(Number(montoPago))) {
|
|
350
|
+
addError(errors, 'formaPago.monto', 'Monto de crédito es obligatorio (debe igualar mtoImpVenta)');
|
|
351
|
+
}
|
|
352
|
+
else if (Math.abs(Number(montoPago) - data.mtoImpVenta) > 0.02) {
|
|
353
|
+
addError(errors, 'formaPago.monto', `Monto de crédito (${montoPago}) no coincide con mtoImpVenta (${data.mtoImpVenta})`);
|
|
354
|
+
}
|
|
355
|
+
const cuotas = data.cuotas ?? [];
|
|
356
|
+
if (cuotas.length === 0) {
|
|
357
|
+
addError(errors, 'cuotas', 'Crédito debe incluir al menos 1 cuota');
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
const sumaCuotas = cuotas.reduce((acc, c) => acc + (Number(c.monto) || 0), 0);
|
|
361
|
+
if (Math.abs(sumaCuotas - data.mtoImpVenta) > 0.02) {
|
|
362
|
+
addError(errors, 'cuotas', `Suma de cuotas (${sumaCuotas}) no coincide con mtoImpVenta (${data.mtoImpVenta})`);
|
|
363
|
+
}
|
|
364
|
+
cuotas.forEach((c, i) => {
|
|
365
|
+
if (!c.fechaPago || !isValidDate(c.fechaPago)) {
|
|
366
|
+
addError(errors, `cuotas[${i}].fechaPago`, 'Fecha de pago de cuota es obligatoria y debe ser ISO válida');
|
|
367
|
+
}
|
|
368
|
+
if (c.monto === undefined || c.monto === null || Number(c.monto) <= 0) {
|
|
369
|
+
addError(errors, `cuotas[${i}].monto`, 'Monto de cuota debe ser mayor a 0');
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
176
374
|
if (errors.length > 0) {
|
|
177
375
|
throw new InvoiceValidationError(`Validación de factura fallida:\n - ${errors.join('\n - ')}`, errors);
|
|
178
376
|
}
|
|
@@ -182,8 +380,8 @@ function validateNotePayload(data) {
|
|
|
182
380
|
if (!data.tipoDoc || !['07', '08'].includes(data.tipoDoc)) {
|
|
183
381
|
addError(errors, 'tipoDoc', `Tipo documento "${data.tipoDoc}" inválido. Debe ser "07" (NC) o "08" (ND)`);
|
|
184
382
|
}
|
|
185
|
-
if (!data.serie || !isValidSerie(data.tipoDoc, data.serie)) {
|
|
186
|
-
addError(errors, 'serie', `Serie "${data.serie}" no tiene formato válido`);
|
|
383
|
+
if (!data.serie || !isValidSerie(data.tipoDoc, data.serie, data.tipDocAfectado)) {
|
|
384
|
+
addError(errors, 'serie', `Serie "${data.serie}" no tiene formato válido (4 caracteres alfanuméricos, ej: F001, FC01, B001, BC01)`);
|
|
187
385
|
}
|
|
188
386
|
if (!data.correlativo || !isValidCorrelativo(data.correlativo)) {
|
|
189
387
|
addError(errors, 'correlativo', `Correlativo "${data.correlativo}" inválido`);
|
|
@@ -197,12 +395,18 @@ function validateNotePayload(data) {
|
|
|
197
395
|
if (!data.tipoMoneda || data.tipoMoneda.trim() === '') {
|
|
198
396
|
addError(errors, 'tipoMoneda', 'Tipo de moneda es obligatoria');
|
|
199
397
|
}
|
|
398
|
+
else if (!exports.CATALOGO_02_MONEDA.includes(data.tipoMoneda.trim().toUpperCase())) {
|
|
399
|
+
addError(errors, 'tipoMoneda', `tipoMoneda "${data.tipoMoneda}" no está en el Catálogo N.° 02 (ej: PEN, USD)`);
|
|
400
|
+
}
|
|
200
401
|
if (!data.tipDocAfectado || data.tipDocAfectado.trim() === '') {
|
|
201
402
|
addError(errors, 'tipDocAfectado', 'Tipo del documento afectado es obligatorio');
|
|
202
403
|
}
|
|
203
404
|
if (!data.numDocAfectado || data.numDocAfectado.trim() === '') {
|
|
204
405
|
addError(errors, 'numDocAfectado', 'Número del documento afectado es obligatorio');
|
|
205
406
|
}
|
|
407
|
+
else if (!/^[A-Za-z0-9]{1,4}-\d{1,8}$/.test(data.numDocAfectado.trim())) {
|
|
408
|
+
addError(errors, 'numDocAfectado', `numDocAfectado "${data.numDocAfectado}" inválido. Debe ser SERIE-CORRELATIVO (ej: F001-00000045, B001-47)`);
|
|
409
|
+
}
|
|
206
410
|
if (!data.codMotivo || data.codMotivo.trim() === '') {
|
|
207
411
|
addError(errors, 'codMotivo', 'Código de motivo es obligatorio');
|
|
208
412
|
}
|
|
@@ -224,9 +428,23 @@ function validateNotePayload(data) {
|
|
|
224
428
|
addError(errors, 'client', 'Datos del cliente son obligatorios');
|
|
225
429
|
}
|
|
226
430
|
else {
|
|
431
|
+
if (!data.client.tipoDoc || data.client.tipoDoc.trim() === '') {
|
|
432
|
+
addError(errors, 'client.tipoDoc', 'Tipo documento del cliente es obligatorio');
|
|
433
|
+
}
|
|
434
|
+
else if (!exports.CATALOGO_06_DOC_IDENTIDAD.includes(data.client.tipoDoc.trim())) {
|
|
435
|
+
addError(errors, 'client.tipoDoc', `client.tipoDoc "${data.client.tipoDoc}" no está en el Catálogo N.° 06 (6=RUC, 1=DNI, 4=Carné extranjería, 7=Pasaporte, 0=Doc. trib. sin RUC)`);
|
|
436
|
+
}
|
|
227
437
|
if (!data.client.numDoc || data.client.numDoc.trim() === '') {
|
|
228
438
|
addError(errors, 'client.numDoc', 'Número documento del cliente es obligatorio');
|
|
229
439
|
}
|
|
440
|
+
else {
|
|
441
|
+
if (data.client.tipoDoc === '6' && !/^\d{11}$/.test(data.client.numDoc)) {
|
|
442
|
+
addError(errors, 'client.numDoc', 'RUC del cliente debe tener 11 dígitos');
|
|
443
|
+
}
|
|
444
|
+
if (data.client.tipoDoc === '1' && !/^\d{8}$/.test(data.client.numDoc)) {
|
|
445
|
+
addError(errors, 'client.numDoc', 'DNI del cliente debe tener 8 dígitos');
|
|
446
|
+
}
|
|
447
|
+
}
|
|
230
448
|
if (!data.client.rznSocial || data.client.rznSocial.trim() === '') {
|
|
231
449
|
addError(errors, 'client.rznSocial', 'Razón social del cliente es obligatoria');
|
|
232
450
|
}
|
|
@@ -235,12 +453,13 @@ function validateNotePayload(data) {
|
|
|
235
453
|
addError(errors, 'details', 'Debe haber al menos 1 item');
|
|
236
454
|
}
|
|
237
455
|
else {
|
|
238
|
-
data.details.forEach((detail, i) =>
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
456
|
+
data.details.forEach((detail, i) => validateDetail(detail, i, errors));
|
|
457
|
+
}
|
|
458
|
+
if ((data.details ?? []).some(d => (d.mtoValorGratuito ?? 0) > 0)) {
|
|
459
|
+
const has1002 = (data.legends ?? []).some(l => l.code === '1002');
|
|
460
|
+
if (!has1002) {
|
|
461
|
+
addError(errors, 'legends', 'Leyenda code 1002 ("TRANSFERENCIA GRATUITA DE UN BIEN Y/O SERVICIO PRESTADO GRATUITAMENTE") es obligatoria cuando existen ítems gratuitos (Cat. 15)');
|
|
462
|
+
}
|
|
244
463
|
}
|
|
245
464
|
if (errors.length > 0) {
|
|
246
465
|
throw new InvoiceValidationError(`Validación de nota fallida:\n - ${errors.join('\n - ')}`, errors);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice.validator.js","sourceRoot":"","sources":["../../src/validation/invoice.validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"invoice.validator.js","sourceRoot":"","sources":["../../src/validation/invoice.validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -131,8 +131,9 @@ function addDocumentTaxTotal(root, data) {
|
|
|
131
131
|
if ((data.mtoOperGravadas ?? 0) > 0) {
|
|
132
132
|
addTaxSubtotal(taxTotal, data.mtoOperGravadas, data.mtoIGV, 'IGV', 18, undefined, cur);
|
|
133
133
|
}
|
|
134
|
-
if ((data.mtoIGVGratuitas ?? 0) > 0) {
|
|
135
|
-
|
|
134
|
+
if ((data.mtoOperGratuitas ?? 0) > 0 || (data.mtoIGVGratuitas ?? 0) > 0) {
|
|
135
|
+
const igvGrat = data.mtoIGVGratuitas ?? 0;
|
|
136
|
+
addTaxSubtotal(taxTotal, data.mtoOperGratuitas ?? 0, igvGrat, 'GRA', igvGrat > 0 ? 18 : 0, undefined, cur);
|
|
136
137
|
}
|
|
137
138
|
if ((data.mtoISC ?? 0) > 0) {
|
|
138
139
|
addTaxSubtotal(taxTotal, data.mtoOperGravadas ?? 0, data.mtoISC, 'ISC', undefined, undefined, cur);
|
|
@@ -171,9 +172,22 @@ function addInvoiceLine(root, detail, index, currency, elementName = 'cac:Invoic
|
|
|
171
172
|
const line = root.ele(elementName);
|
|
172
173
|
line.ele('cbc:ID').txt(String(index)).up();
|
|
173
174
|
line.ele(qtyTag, { unitCode: detail.unidad }).txt(fmt(detail.cantidad, 10)).up();
|
|
174
|
-
|
|
175
|
-
const
|
|
176
|
-
const
|
|
175
|
+
const freeValue = detail.mtoValorGratuito ?? 0;
|
|
176
|
+
const isFreeItem = freeValue > 0;
|
|
177
|
+
const freeTaxZeroTips = ['21', '31', '32', '33', '34', '35', '36', '37', '40'];
|
|
178
|
+
const freeLineTaxZero = isFreeItem && freeTaxZeroTips.includes(detail.tipAfeIgv);
|
|
179
|
+
const priceTypeCode = isFreeItem ? '02' : (0, namespaces_1.tipAfeToPreType)(detail.tipAfeIgv);
|
|
180
|
+
const qty = detail.cantidad || 1;
|
|
181
|
+
const precioRef = isFreeItem ? freeValue / qty : detail.mtoPrecioUnitario;
|
|
182
|
+
const lineExtension = isFreeItem ? freeValue : detail.mtoValorVenta;
|
|
183
|
+
const freePercent = freeLineTaxZero ? 0 : detail.porcentajeIgv;
|
|
184
|
+
const freeIgv = isFreeItem
|
|
185
|
+
? (freeLineTaxZero
|
|
186
|
+
? 0
|
|
187
|
+
: Number(((freeValue * (detail.porcentajeIgv || 18)) / 100).toFixed(2)))
|
|
188
|
+
: detail.igv;
|
|
189
|
+
const freeTotalTax = isFreeItem ? 0 : detail.totalImpuestos;
|
|
190
|
+
line.ele('cbc:LineExtensionAmount', { currencyID: currency }).txt(fmt(lineExtension)).up();
|
|
177
191
|
line.ele('cac:PricingReference')
|
|
178
192
|
.ele('cac:AlternativeConditionPrice')
|
|
179
193
|
.ele('cbc:PriceAmount', { currencyID: currency }).txt(fmt(precioRef)).up()
|
|
@@ -181,20 +195,37 @@ function addInvoiceLine(root, detail, index, currency, elementName = 'cac:Invoic
|
|
|
181
195
|
.up()
|
|
182
196
|
.up();
|
|
183
197
|
const lineTax = line.ele('cac:TaxTotal');
|
|
184
|
-
lineTax.ele('cbc:TaxAmount', { currencyID: currency }).txt(fmt(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
+
lineTax.ele('cbc:TaxAmount', { currencyID: currency }).txt(fmt(freeTotalTax)).up();
|
|
199
|
+
if (isFreeItem) {
|
|
200
|
+
const graSub = lineTax.ele('cac:TaxSubtotal');
|
|
201
|
+
graSub.ele('cbc:TaxableAmount', { currencyID: currency }).txt(fmt(freeValue)).up();
|
|
202
|
+
graSub.ele('cbc:TaxAmount', { currencyID: currency }).txt(fmt(freeIgv)).up();
|
|
203
|
+
const graCat = graSub.ele('cac:TaxCategory');
|
|
204
|
+
graCat.ele('cbc:ID', { schemeAgencyName: 'PE:SUNAT', schemeName: 'Codigo de tributos' }).txt(namespaces_1.TRIBUTOS.GRA.id).up();
|
|
205
|
+
graCat.ele('cbc:Percent').txt(fmt(freePercent, 2)).up();
|
|
206
|
+
graCat.ele('cbc:TaxExemptionReasonCode').txt(detail.tipAfeIgv).up();
|
|
207
|
+
graCat.ele('cac:TaxScheme')
|
|
208
|
+
.ele('cbc:ID').txt(namespaces_1.TRIBUTOS.GRA.id).up()
|
|
209
|
+
.ele('cbc:Name').txt(namespaces_1.TRIBUTOS.GRA.name).up()
|
|
210
|
+
.ele('cbc:TaxTypeCode').txt(namespaces_1.TRIBUTOS.GRA.typeCode).up()
|
|
211
|
+
.up();
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const tributo = (0, namespaces_1.tipAfeToTributo)(detail.tipAfeIgv);
|
|
215
|
+
const taxableAmount = detail.mtoBaseIgv;
|
|
216
|
+
const lineSub = lineTax.ele('cac:TaxSubtotal');
|
|
217
|
+
lineSub.ele('cbc:TaxableAmount', { currencyID: currency }).txt(fmt(taxableAmount)).up();
|
|
218
|
+
lineSub.ele('cbc:TaxAmount', { currencyID: currency }).txt(fmt(detail.igv)).up();
|
|
219
|
+
const lineCat = lineSub.ele('cac:TaxCategory');
|
|
220
|
+
lineCat.ele('cbc:ID', { schemeAgencyName: 'PE:SUNAT', schemeName: 'Codigo de tributos' }).txt(tributo.id).up();
|
|
221
|
+
lineCat.ele('cbc:Percent').txt(fmt(detail.porcentajeIgv, 2)).up();
|
|
222
|
+
lineCat.ele('cbc:TaxExemptionReasonCode').txt(detail.tipAfeIgv).up();
|
|
223
|
+
lineCat.ele('cac:TaxScheme')
|
|
224
|
+
.ele('cbc:ID').txt(tributo.id).up()
|
|
225
|
+
.ele('cbc:Name').txt(tributo.name).up()
|
|
226
|
+
.ele('cbc:TaxTypeCode').txt(tributo.typeCode).up()
|
|
227
|
+
.up();
|
|
228
|
+
}
|
|
198
229
|
if ((detail.isc ?? 0) > 0) {
|
|
199
230
|
const iscSub = lineTax.ele('cac:TaxSubtotal');
|
|
200
231
|
iscSub.ele('cbc:TaxableAmount', { currencyID: currency }).txt(fmt(detail.mtoBaseIgv)).up();
|