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
JavaScript
;
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,
};
});