facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
75 lines (74 loc) • 3.02 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RemisionSchema = void 0;
const zod_1 = require("zod");
const freightResponsibles_table_1 = require("../../data/freightResponsibles.table");
const remissionReasons_table_1 = require("../../data/remissionReasons.table");
const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators"));
const NumberLenght_1 = __importDefault(require("../../helpers/validation/NumberLenght"));
const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator"));
const db_service_1 = __importDefault(require("../../services/db.service"));
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/**E6. Campos que componen la Nota de Remisión Electrónica (E500-E599) */
exports.RemisionSchema = zod_1.z
.object({
// E501
motivo: zod_1.z
.nativeEnum(remissionReasons_table_1.RemissionReason)
.describe(SDParser_1.default.stringify('E501', { e: 'RemissionReason' })),
// E502
motivoDescripcion: zod_1.z
.string()
.min(5)
.max(60)
.optional()
.describe(SDParser_1.default.stringify('E502')),
// E503,
tipoResponsable: zod_1.z
.nativeEnum(freightResponsibles_table_1.FreightResponsible)
.describe(SDParser_1.default.stringify('E503', { e: 'FreightResponsible' })),
// E505
kms: zod_1.z
.number()
.superRefine((value, ctx) => {
new NumberLenght_1.default(value, ctx).int().max(5);
})
.describe(SDParser_1.default.stringify('E505')),
// E506
fechaFactura: CommonValidators_1.default.isoDate()
.optional()
.describe(SDParser_1.default.stringify('E506')),
// E507
// VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_010_MT_V150.pdf/d64a693b-6c63-86e1-ec6a-d4fe5ec4eeea?t=1687353747196
costoFlete: zod_1.z
.number()
.optional()
.superRefine((value, ctx) => {
if (value == undefined)
return;
new NumberLenght_1.default(value, ctx).max(15).maxDecimals(8);
})
.describe(SDParser_1.default.stringify('E507', {
v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_010_MT_V150.pdf/d64a693b-6c63-86e1-ec6a-d4fe5ec4eeea?t=1687353747196',
})),
})
.transform((data, ctx) => {
const validator = new ZodValidator_1.default(ctx, data);
// E502 - motivoDescripcion
{
/*
Si E501=99 describir el motivo de la emisión
*/
if (data.motivo == remissionReasons_table_1.RemissionReason.OTRO) {
validator.requiredField('motivoDescripcion');
}
}
return {
...data,
// E504
descripcionTipoResponsable: db_service_1.default.freightResponsibles._findById(data.tipoResponsable).description,
};
});