UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

Genera el contenido del archivo XML del Documento electrónico exigido por la SET

249 lines (248 loc) 8.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DocumentoAsociadoSchema = void 0; const zod_1 = require("zod"); const associatedDocumentTypes_table_1 = require("../../data/associatedDocumentTypes.table"); const constancyTypes_table_1 = require("../../data/constancyTypes.table"); const printedDocumentTypes_table_1 = require("../../data/printedDocumentTypes.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")); /**H. Campos que identifican al documento asociado (H001-H049) */ exports.DocumentoAsociadoSchema = zod_1.z .object({ // H002 formato: zod_1.z .nativeEnum(associatedDocumentTypes_table_1.AssociatedDocumentType) .describe(SDParser_1.default.stringify('H002', { e: 'AssociatedDocumentType' })), // H004 cdc: CommonValidators_1.default.cdc().optional().describe(SDParser_1.default.stringify('H004')), // H005 timbrado: CommonValidators_1.default.timbrado() .optional() .describe(SDParser_1.default.stringify('H005')), // H006 establecimiento: CommonValidators_1.default.zeroPadToLength(3) .optional() .describe(SDParser_1.default.stringify('H006')), // H007 punto: CommonValidators_1.default.zeroPadToLength(3) .optional() .describe(SDParser_1.default.stringify('H007')), // H008 numero: CommonValidators_1.default.zeroPadToLength(7) .optional() .describe(SDParser_1.default.stringify('H008')), // H009 tipoDocumentoImpreso: zod_1.z .nativeEnum(printedDocumentTypes_table_1.PrintedDocumentType) .optional() .describe(SDParser_1.default.stringify('H009', { e: 'PrintedDocumentType' })), // H011 fecha: CommonValidators_1.default.isoDate() .optional() .describe(SDParser_1.default.stringify('H011')), // H012 numeroRetencion: zod_1.z .string() .length(15) .optional() .describe(SDParser_1.default.stringify('H012')), // H013 resolucionCreditoFiscal: zod_1.z .string() .length(15) .optional() .describe(SDParser_1.default.stringify('H013')), // H014 constanciaTipo: zod_1.z .nativeEnum(constancyTypes_table_1.ConstancyType) .optional() .describe(SDParser_1.default.stringify('H014', { e: 'ConstancyType' })), // H016 constanciaNumero: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).int().length(11); }) .describe(SDParser_1.default.stringify('H016')), // H017 constanciaControl: zod_1.z .string() .length(8) .optional() .describe(SDParser_1.default.stringify('H017')), /* OBS: Obligatorio cuando el CDC del DTE referenciado corresponda a un RUC fusionado */ // H018 // VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_023_MT_V150.pdf/9580922b-5dd5-60f9-4857-ae66a757898f?t=1724956850006 rucFusionado: zod_1.z .string() .min(3) .max(8) .optional() .describe(SDParser_1.default.stringify('H018', { v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_023_MT_V150.pdf/9580922b-5dd5-60f9-4857-ae66a757898f?t=1724956850006', d: 'Obligatorio cuando el CDC del DTE referenciado corresponda a un RUC fusionado', })), }) .transform((data, ctx) => { const validator = new ZodValidator_1.default(ctx, data); /**H002 = 1 */ const isElectronicDocument = data.formato == associatedDocumentTypes_table_1.AssociatedDocumentType.ELECTRONICO; /**H002 = 2 */ const isPrintedDocument = data.formato == associatedDocumentTypes_table_1.AssociatedDocumentType.IMPRESO; /**H002 = 3 */ const isConstancyElectronicDocument = data.formato == associatedDocumentTypes_table_1.AssociatedDocumentType.CONSTANCIA_ELECTRONICA; /**H014 = 2 */ const constancyTipeIsMicroproducer = data.constanciaTipo == constancyTypes_table_1.ConstancyType.CONSTANCIA_DE_MICROPRODUCTORES; // H004 - cdc { /* Obligatorio si H002=1 No informar si H002 = 2 o 3 */ if (isElectronicDocument) { validator.requiredField('cdc'); } else if (isPrintedDocument || isConstancyElectronicDocument) { validator.undesiredField('cdc'); } } // H005 - timbrado { /* Obligatorio si H002=2 No informar si H002 = 1 o 3 */ if (isPrintedDocument) { validator.requiredField('timbrado'); } else if (isElectronicDocument || isConstancyElectronicDocument) { validator.undesiredField('timbrado'); } } // H006 - establecimiento { /* Obligatorio si H002=2 No informar si H002 = 1 o 3 */ if (isPrintedDocument) { validator.requiredField('establecimiento'); } else if (isElectronicDocument || isConstancyElectronicDocument) { validator.undesiredField('establecimiento'); } } // H007 - punto { /* Obligatorio si H002=2 No informar si H002 = 1 o 3 */ if (isPrintedDocument) { validator.requiredField('punto'); } else if (isElectronicDocument || isConstancyElectronicDocument) { validator.undesiredField('punto'); } } // H008 - numero { /* Obligatorio si H002=2 No informar si H002 = 1 o 3 */ if (isPrintedDocument) { validator.requiredField('numero'); } else if (isElectronicDocument || isConstancyElectronicDocument) { validator.undesiredField('numero'); } } // H009 - tipoDocumentoImpreso { /* Obligatorio si H002=2 No informar si H002 = 1 o 3 */ if (isPrintedDocument) { validator.requiredField('tipoDocumentoImpreso'); } else if (isElectronicDocument || isConstancyElectronicDocument) { validator.undesiredField('tipoDocumentoImpreso'); } } // H011 - fecha { /* Obligatorio si existe el campo H005 No Informar si campo H005 no existe */ if (data.timbrado) { validator.requiredField('fecha'); } else { validator.undesiredField('fecha'); } } // H014 - constanciaTipo { /* Obligatorio cuando H002 = 3 No informar cuando H002 ≠ 3 */ if (isConstancyElectronicDocument) { validator.requiredField('constanciaTipo'); } else { validator.undesiredField('constanciaTipo'); } } // H016 - constanciaNumero { /* Obligatorio cuando H002 = 3 y H014 = 2 No informar cuando H002 ≠ 3 */ if (isConstancyElectronicDocument && constancyTipeIsMicroproducer) { validator.requiredField('constanciaNumero'); } else if (!isConstancyElectronicDocument) { validator.undesiredField('constanciaNumero'); } } // H017 - constanciaControl { /* Obligatorio cuando H002 = 3 y H014 = 2 No informar cuando H002 ≠ 3 */ if (isConstancyElectronicDocument && constancyTipeIsMicroproducer) { validator.requiredField('constanciaControl'); } else if (!isConstancyElectronicDocument) { validator.undesiredField('constanciaControl'); } } return { ...data, // H003 formatoDescripcion: db_service_1.default.associatedDocumentTypes._findById(data.formato)?.description, // H010 tipoDocumentoImpresoDescripcion: db_service_1.default.printedDocumentTypes._findByIdIfExist(data.tipoDocumentoImpreso)?.description, // H015 constanciaTipoDescripcion: db_service_1.default.constancyTypes._findByIdIfExist(data.constanciaTipo)?.description, }; });