UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

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

187 lines (186 loc) • 7.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NominationEventSchema = void 0; const zod_1 = require("zod"); const operationTypes_table_1 = require("../../data/operationTypes.table"); const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators")); const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator")); const db_service_1 = __importDefault(require("../../services/db.service")); const taxpayerTypes_table_1 = require("../../data/taxpayerTypes.table"); const taxpayerNotTaxpayer_table_1 = require("../../data/taxpayerNotTaxpayer.table"); const idDocsForNominationEvent_table_1 = require("../../data/idDocsForNominationEvent.table"); const SDParser_1 = __importDefault(require("../../helpers/SDParser")); // VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_014_MT_V150X.pdf/dbbb0294-8678-357a-1657-bcd0318077f9?t=1706189857282 // GENFE001 exports.NominationEventSchema = zod_1.z .object({ // GENFE002 cdc: CommonValidators_1.default.cdc().describe(SDParser_1.default.stringify('GENFE002')), // GENFE003 motive: CommonValidators_1.default.motive().describe(SDParser_1.default.stringify('GENFE003')), // GENFE004 contribuyente: CommonValidators_1.default.taxpayer().describe(SDParser_1.default.stringify('GENFE004')), // GENFE005 pais: CommonValidators_1.default.country().describe(SDParser_1.default.stringify('GENFE005', { e: 'Country' })), // GENFE007 tipoReceptor: zod_1.z .nativeEnum(taxpayerTypes_table_1.TaxpayerType) .optional() .describe(SDParser_1.default.stringify('GENFE007', { e: 'TaxpayerType' })), // para calcular GENFE008 y GENFE009 ruc: CommonValidators_1.default.ruc() .optional() .describe(SDParser_1.default.stringify('GENFE008 y GENFE009')), // GENFE010 documentoTipo: zod_1.z .nativeEnum(idDocsForNominationEvent_table_1.IdentityDocForNominationEvent) .optional() .describe(SDParser_1.default.stringify('GENFE010', { e: 'IdentityDocForNominationEvent' })), // GENFE011 descripcionTipoDocumento: CommonValidators_1.default.identityDocDescription() .optional() .describe(SDParser_1.default.stringify('GENFE011')), // GENFE012 documentoNumero: CommonValidators_1.default.identityDocNumber() .optional() .describe(SDParser_1.default.stringify('GENFE012')), // GENFE013 razonSocial: CommonValidators_1.default.legalName() .optional() .describe(SDParser_1.default.stringify('GENFE013')), // GENFE014 nombreFantasia: CommonValidators_1.default.tradeName() .optional() .describe(SDParser_1.default.stringify('GENFE014')), // GENFE015 direccion: CommonValidators_1.default.address() .optional() .describe(SDParser_1.default.stringify('GENFE015')), // GENFE016 numeroCasa: CommonValidators_1.default.houseNumber() .optional() .describe(SDParser_1.default.stringify('GENFE016')), // GENFE017 departamento: CommonValidators_1.default.department() .optional() .describe(SDParser_1.default.stringify('GENFE017', { e: 'Department' })), // GENFE019 distrito: CommonValidators_1.default.district() .optional() .describe(SDParser_1.default.stringify('GENFE019')), // GENFE021 ciudad: CommonValidators_1.default.city() .optional() .describe(SDParser_1.default.stringify('GENFE021')), // GENFE023 telefono: CommonValidators_1.default.tel() .optional() .describe(SDParser_1.default.stringify('GENFE023')), // GENFE024 celular: CommonValidators_1.default.cel() .optional() .describe(SDParser_1.default.stringify('GENFE024')), // GENFE025 email: CommonValidators_1.default.email() .optional() .describe(SDParser_1.default.stringify('GENFE025')), // GENFE026 codigo: CommonValidators_1.default.clientCode() .optional() .describe(SDParser_1.default.stringify('GENFE026')), // GENFE027 tipoOperacion: zod_1.z .nativeEnum(operationTypes_table_1.OperationTypeNoB2G) .describe(SDParser_1.default.stringify('GENFE027', { e: 'OperationTypeNoB2G' })), }) .transform((data, ctx) => { const validator = new ZodValidator_1.default(ctx, data); CommonValidators_1.default.location(ctx, data.departamento, data.distrito, data.ciudad); /**GENFE004 = 1 */ const isTaxpayer = data.contribuyente == taxpayerNotTaxpayer_table_1.TaxpayerNotTaxpayer.CONTRIBUYENTE; /**GENFE004 = 2 */ const isNotTaxpayer = data.contribuyente == taxpayerNotTaxpayer_table_1.TaxpayerNotTaxpayer.NO_CONTRIBUYENTE; /**GENFE010 = 9 */ const isOther = data.documentoTipo == idDocsForNominationEvent_table_1.IdentityDocForNominationEvent.OTRO; // GENFE007, GENFE008, GENFE009 { /* Obligatorio si GENFE004=1 No informar si GENFE004=2 */ if (isTaxpayer) { validator.requiredField('tipoReceptor'); validator.requiredField('ruc'); } else if (isNotTaxpayer) { validator.undesiredField('tipoReceptor'); validator.undesiredField('ruc'); } } // GENFE010, GENFE012 { /* Obligatorio si GENFE004=2 */ if (isNotTaxpayer) { validator.requiredField('documentoTipo'); validator.requiredField('documentoNumero'); } } // GENFE011 - descripcionTipoDocumento { /* Si GENFE010 = 9 informar el tipo de documento de identidad del receptor */ if (isOther) { validator.requiredField('descripcionTipoDocumento'); } else { data.descripcionTipoDocumento = db_service_1.default.identityDocsForNominationEvent._findByIdIfExist(data.documentoTipo)?.description; } } // GENFE016 { /* Campo obligatorio si se informa el campo GENFE015 */ if (data.direccion) { validator.requiredField('numeroCasa'); } } // GENFE023 { /*DELETE: una vez se resuelva Debe incluir el prefijo de la ciudad si GENFE005= PRY */ } const [rucID, rucDV] = data.ruc?.split('-') ?? []; return { ...data, // GENFE006 paisDescripcion: db_service_1.default.countries._findByIdIfExist(data.pais) ?.description, // GENFE008 rucID: rucID, // GENFE009 rucDV: rucDV, // GENFE018 descripcionDepartamento: db_service_1.default.departments._findByIdIfExist(data.departamento)?.description, // GENFE020 descripcionDistrito: db_service_1.default.districts._findByIdIfExist(data.distrito) ?.description, // GENFE022 descripcionCiudad: db_service_1.default.cities._findByIdIfExist(data.ciudad) ?.description, }; });