UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

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

242 lines (241 loc) 8.99 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ItemSchema = void 0; const zod_1 = require("zod"); const merchandiseRelevances_table_1 = require("../../data/merchandiseRelevances.table"); const DateHelper_1 = __importDefault(require("../../helpers/DateHelper")); 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 impuesto_schema_1 = require("./impuesto.schema"); const itemDncp_schema_1 = require("./itemDncp.schema"); const monto_schema_1 = require("./monto.schema"); const sectorAutomotor_schema_1 = require("./sectorAutomotor.schema"); const measurementUnits_table_1 = require("../../data/measurementUnits.table"); const SDParser_1 = __importDefault(require("../../helpers/SDParser")); /**E8. Campos que describen los ítems de la operación (E700-E899) */ exports.ItemSchema = zod_1.z .object({ // E701 // VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_009_MT_V150.pdf/c268a447-11e3-ee1e-b4d5-8d83dd408401?t=1687353746900 codigo: zod_1.z .string() .min(1) .max(50) .describe(SDParser_1.default.stringify('E701', { v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_009_MT_V150.pdf/c268a447-11e3-ee1e-b4d5-8d83dd408401?t=1687353746900', })), // E702 partidaArancelaria: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).int().length(4); }) .describe(SDParser_1.default.stringify('E702')), // E703 ncm: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).int().min(6).max(8); }) .describe(SDParser_1.default.stringify('E703')), // E704 - E707 dncp: itemDncp_schema_1.ItemDncpSchema.optional().describe(SDParser_1.default.stringify('E704-E707')), // E708 // VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_009_MT_V150.pdf/c268a447-11e3-ee1e-b4d5-8d83dd408401?t=1687353746900 descripcion: zod_1.z .string() .min(1) .max(2000) .describe(SDParser_1.default.stringify('E708', { v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_009_MT_V150.pdf/c268a447-11e3-ee1e-b4d5-8d83dd408401?t=1687353746900', })), // E709 unidadMedida: zod_1.z .nativeEnum(measurementUnits_table_1.MeasurementUnit) .describe(SDParser_1.default.stringify('E709', { e: 'MeasurementUnit' })), // E711 // VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_023_MT_V150.pdf/9580922b-5dd5-60f9-4857-ae66a757898f?t=1724956850006 cantidad: zod_1.z .number() .superRefine((value, ctx) => { new NumberLenght_1.default(value, ctx).max(10).maxDecimals(8); }) .describe(SDParser_1.default.stringify('E711', { v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_023_MT_V150.pdf/9580922b-5dd5-60f9-4857-ae66a757898f?t=1724956850006', })), // E712 pais: CommonValidators_1.default.country() .optional() .describe(SDParser_1.default.stringify('E712', { e: 'Country', })), // E714 observacion: zod_1.z .string() .min(1) .max(500) .optional() .describe(SDParser_1.default.stringify('E714')), // E715 tolerancia: zod_1.z .nativeEnum(merchandiseRelevances_table_1.MerchandiseRelevance) .optional() .describe(SDParser_1.default.stringify('E715', { e: 'MerchandiseRelevance' })), // E717 toleranciaCantidad: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).max(10).maxDecimals(4); }) .describe(SDParser_1.default.stringify('E717')), // E718 toleranciaPorcentaje: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).max(3).maxDecimals(8); }) .describe(SDParser_1.default.stringify('E718')), // E719 cdcAnticipo: zod_1.z .string() .length(44) .optional() .describe(SDParser_1.default.stringify('E719')), // E8.1. Campos que describen el precio, tipo de cambio y valor total de la operación por ítem (E720-E729) monto: monto_schema_1.MontoSchema.optional().describe(SDParser_1.default.stringify('E8.1', { d: 'Campos que describen el precio, tipo de cambio y valor total de la operación por ítem (E720-E729)', })), // E8.2. Campos que describen el IVA de la operación por ítem (E730-E739) impuesto: impuesto_schema_1.ImpuestoSchema.optional().describe(SDParser_1.default.stringify('E8.2', { d: 'Campos que describen el IVA de la operación por ítem (E730-E739)', })), // E8.4. Grupo de rastreo de la mercadería (E750-E761) // E751 lote: zod_1.z .string() .min(1) .max(80) .optional() .describe(SDParser_1.default.stringify('E751')), // E752 vencimiento: zod_1.z.coerce .date() .optional() .transform((value) => { if (!value) return value; return DateHelper_1.default.getIsoDate(value); }) .describe(SDParser_1.default.stringify('E752')), // E753 numeroSerie: zod_1.z .string() .min(1) .max(10) .optional() .describe(SDParser_1.default.stringify('E753')), // E754 numeroPedido: zod_1.z .string() .min(1) .max(20) .optional() .describe(SDParser_1.default.stringify('E754')), // E755 numeroSeguimiento: zod_1.z .string() .min(1) .max(20) .optional() .describe(SDParser_1.default.stringify('E755')), // E756, E757 y E758 (eliminados) // VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_010_MT_V150.pdf/d64a693b-6c63-86e1-ec6a-d4fe5ec4eeea?t=1687353747196 // E759 registroSenave: zod_1.z .string() .length(20) .optional() .describe(SDParser_1.default.stringify('E759')), // E760 registroEntidadComercial: zod_1.z .string() .length(20) .optional() .describe(SDParser_1.default.stringify('E760')), // E761 // VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_010_MT_V150.pdf/d64a693b-6c63-86e1-ec6a-d4fe5ec4eeea?t=1687353747196 nombreProducto: zod_1.z .string() .min(1) .max(30) .optional() .describe(SDParser_1.default.stringify('E761', { v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_010_MT_V150.pdf/d64a693b-6c63-86e1-ec6a-d4fe5ec4eeea?t=1687353747196', })), // E8.5. Sector de automotores nuevos y usados (E770-E789) sectorAutomotor: sectorAutomotor_schema_1.SectorAutomotorSchema.optional().describe(SDParser_1.default.stringify('E8.5', { d: 'Sector de automotores nuevos y usados (E770-E789)', })), }) .transform((data, ctx) => { const validator = new ZodValidator_1.default(ctx, data); // E717 - toleranciaCantidad { /* Obligatorio si se informa E715 */ if (data.tolerancia) { validator.requiredField('toleranciaCantidad'); } } // E718 - toleranciaPorcentaje { /* Obligatorio si se informa E715 */ if (data.tolerancia) { validator.requiredField('toleranciaPorcentaje'); } } let monto; if (data.monto) { monto = { ...data.monto, // E727 precioTotal: data.monto.precioUnitario * data.cantidad, }; } return { ...data, // E713 paisDescripcion: db_service_1.default.countries._findByIdIfExist(data.pais, { ctx, fieldName: 'pais', })?.description, // E710 unidadMedidaDescripcion: db_service_1.default.measurementUnits._findById(data.unidadMedida, { ctx, fieldName: 'unidadMedida', }).representation, // E716 toleranciaDescripcion: db_service_1.default.merchandiseRelevances._findByIdIfExist(data.tolerancia)?.description, monto, }; });