UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

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

135 lines (134 loc) 5.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransporteSchema = void 0; const zod_1 = require("zod"); const freightResponsibles_table_1 = require("../../data/freightResponsibles.table"); const tradingConditions_table_1 = require("../../data/tradingConditions.table"); const transportModalities_table_1 = require("../../data/transportModalities.table"); const transportTypes_table_1 = require("../../data/transportTypes.table"); const Path_1 = require("../../helpers/Path"); 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 salidaYEntrega_schema_1 = require("./salidaYEntrega.schema"); const transportista_schema_1 = require("./transportista.schema"); const vehiculo_schema_1 = require("./vehiculo.schema"); const SDParser_1 = __importDefault(require("../../helpers/SDParser")); exports.TransporteSchema = zod_1.z .object({ // E901 tipo: zod_1.z .nativeEnum(transportTypes_table_1.TransportType) .optional() .describe(SDParser_1.default.stringify('E901', { e: 'TransportType' })), // E903 modalidad: zod_1.z .nativeEnum(transportModalities_table_1.TransportModality) .describe(SDParser_1.default.stringify('E903', { e: 'TransportModality' })), // E905 tipoResponsable: zod_1.z .nativeEnum(freightResponsibles_table_1.FreightResponsible) .describe(SDParser_1.default.stringify('E905', { e: 'FreightResponsible' })), // E906 condicionNegociacion: zod_1.z .nativeEnum(tradingConditions_table_1.TradingCondition) .optional() .describe(SDParser_1.default.stringify('E906', { e: 'TradingCondition' })), // E907 numeroManifiesto: zod_1.z .string() .min(1) .max(15) .optional() .describe(SDParser_1.default.stringify('E907')), // E908 numeroDespachoImportacion: zod_1.z .string() .length(16) .optional() .describe(SDParser_1.default.stringify('E908')), // E909 inicioEstimadoTranslado: CommonValidators_1.default.isoDate() .optional() .describe(SDParser_1.default.stringify('E909')), // E910 finEstimadoTranslado: CommonValidators_1.default.isoDate() .optional() .describe(SDParser_1.default.stringify('E910')), // E911 paisDestino: CommonValidators_1.default.country() .optional() .describe(SDParser_1.default.stringify('E911', { e: 'Country', })), // (E920) E10.1. Campos que identifican el local de salida de las mercaderías (E920-E939) salida: salidaYEntrega_schema_1.SalidaYEntregaSchema.optional().describe(SDParser_1.default.stringify('E10.1', { d: 'Campos que identifican el local de salida de las mercaderías (E920-E939)', })), // (E940) E10.2. Campos que identifican el local de entrega de las mercaderías (E940-E959) entrega: salidaYEntrega_schema_1.SalidaYEntregaSchema.optional().describe(SDParser_1.default.stringify('E10.2', { d: 'Campos que identifican el local de entrega de las mercaderías (E940-E959)', })), // (E960) E10.3. Campos que identifican el vehículo de traslado de mercaderías (E960-E979) vehiculo: vehiculo_schema_1.VehiculoSchema.optional().describe(SDParser_1.default.stringify('E10.3', { d: 'Campos que identifican el vehículo de traslado de mercaderías (E960-E979)', })), // (E980) E10.4. Campos que identifican al transportista (persona física o jurídica) (E980-E999) transportista: transportista_schema_1.TransportistaSchema.optional().describe(SDParser_1.default.stringify('E10.4', { d: 'Campos que identifican al transportista (persona física o jurídica) (E980-E999)', })), }) .transform((data, ctx) => { const validator = new ZodValidator_1.default(ctx, data); const vehiclePath = new Path_1.Path('vehiculo'); // E910 - finEstimadoTranslado { /* Obligatorio si existe el campo E909 */ if (data.inicioEstimadoTranslado) { validator.requiredField('finEstimadoTranslado'); } } // ⚠️ esto no esta en el manual { const startPath = new Path_1.Path('inicioEstimadoTranslado'); if (data.inicioEstimadoTranslado && data.finEstimadoTranslado) { validator.validate('finEstimadoTranslado', data.finEstimadoTranslado < data.inicioEstimadoTranslado, `$path no puede ser anterior a '${startPath}'`); } } // E912 - paisDestinoNombre let paisDestinoNombre; { /* Obligatorio si existe el campo E911 */ if (data.paisDestino) { const countryFound = db_service_1.default.countries._findById(data.paisDestino); paisDestinoNombre = countryFound.description; } } // E966 - vehiculo.numeroVuelo { /* Obligatorio si E903 = 3 No informar si E903 ≠ 3 */ if (data.modalidad == transportModalities_table_1.TransportModality.AEREO) { validator.requiredField(vehiclePath.concat('numeroVuelo')); } } return { ...data, // E902 tipoDescripcion: db_service_1.default.transportTypes._findByIdIfExist(data.tipo) ?.description, // E904 modalidadDescripcion: db_service_1.default.transportModalities._findById(data.modalidad).description, // E912 paisDestinoNombre, }; });