UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

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

88 lines (87 loc) 3.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CargaSchema = void 0; const zod_1 = require("zod"); const cargoCharacteristics_table_1 = require("../../data/cargoCharacteristics.table"); const measurementUnits_table_1 = require("../../data/measurementUnits.table"); const NumberLenght_1 = __importDefault(require("../../helpers/validation/NumberLenght")); const db_service_1 = __importDefault(require("../../services/db.service")); const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator")); const SDParser_1 = __importDefault(require("../../helpers/SDParser")); /**G1. Campos generales de la carga (G050 - G099) */ exports.CargaSchema = zod_1.z .object({ // G051 unidadMedidaVolumenTotal: zod_1.z .nativeEnum(measurementUnits_table_1.MeasurementUnit) .optional() .describe(SDParser_1.default.stringify('G051', { e: 'MeasurementUnit' })), // G053 volumenTotal: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).max(20); }) .describe(SDParser_1.default.stringify('G053')), // G054 unidadMedidaPesoTotal: zod_1.z .nativeEnum(measurementUnits_table_1.MeasurementUnit) .optional() .describe(SDParser_1.default.stringify('G054', { e: 'MeasurementUnit' })), // G056 pesoTotal: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).max(20); }) .describe(SDParser_1.default.stringify('G056')), // G057 caracteristicaCarga: zod_1.z .nativeEnum(cargoCharacteristics_table_1.CargoCharacteristic) .optional() .describe(SDParser_1.default.stringify('G057', { e: 'CargoCharacteristic' })), // G058: OBS: OBLIGATORIO PARA KUDE caracteristicaCargaDescripcion: zod_1.z .string() .optional() .describe(SDParser_1.default.stringify('G058', { d: 'Obligatorio para KUDE. Se establece automáticamente si la opción no es OTRO.', })), }) .transform((data, ctx) => { const validator = new ZodValidator_1.default(ctx, data); /**G057 = 3 */ const isCargoOther = data.caracteristicaCarga == cargoCharacteristics_table_1.CargoCharacteristic.OTRO; // G058 - caracteristicaCargaDescripcion { /* Si G057 = 3, informar la característica de la carga OBS: Obligatorio para KUDE */ if (isCargoOther) { validator.requiredField('caracteristicaCargaDescripcion'); } else if (data.caracteristicaCarga) { const foundCharacteristic = db_service_1.default.cargoCharacteristics._findById(data.caracteristicaCarga); data.caracteristicaCargaDescripcion = foundCharacteristic?.description; } } return { ...data, // G052 unidadMedidaVolumenDescripcion: db_service_1.default.measurementUnits._findByIdIfExist(data.unidadMedidaVolumenTotal)?.description, // G055 unidadMedidaPesoDescripcion: db_service_1.default.measurementUnits._findByIdIfExist(data.unidadMedidaPesoTotal)?.description, }; });