facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
80 lines (79 loc) • 2.84 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.VehiculoSchema = void 0;
const zod_1 = require("zod");
const vehicleIdentifications_table_1 = require("../../data/vehicleIdentifications.table");
const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator"));
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/**E10.3. Campos que identifican el vehículo de traslado de mercaderías (E960-E979) */
exports.VehiculoSchema = zod_1.z
.object({
// E961: Debe ser acorde al atributo modalidad (E903)
tipo: zod_1.z
.string()
.min(4)
.max(10)
.describe(SDParser_1.default.stringify('E961', {
d: 'Debe ser acorde al atributo modalidad (E903)',
})),
// E962
marca: zod_1.z.string().min(1).max(10).describe(SDParser_1.default.stringify('E962')),
// E963
documentoNumero: zod_1.z
.string()
.min(1)
.max(20)
.optional()
.describe(SDParser_1.default.stringify('E963')),
// E964
obs: zod_1.z
.string()
.min(1)
.max(20)
.optional()
.describe(SDParser_1.default.stringify('E964')),
// E965
// VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_005_MT_V150.pdf/098e75de-e878-7bcd-49ec-55c33a45a0a7?t=1687353746324
numeroMatricula: zod_1.z
.string()
.min(6)
.max(7)
.optional()
.describe(SDParser_1.default.stringify('E965')),
// E966
numeroVuelo: zod_1.z.string().optional().describe(SDParser_1.default.stringify('E966')),
// E967
documentoTipo: zod_1.z
.nativeEnum(vehicleIdentifications_table_1.VehicleIdentification)
.describe(SDParser_1.default.stringify('E967', { e: 'VehicleIdentification' })),
})
.superRefine((data, ctx) => {
const validator = new ZodValidator_1.default(ctx, data);
/**E967 = 1 */
const docTypeIsIdentificationNumber = data.documentoTipo ==
vehicleIdentifications_table_1.VehicleIdentification.NUMERO_DE_IDENTIFICACION_DEL_VEHICULO;
/**E967 = 2 */
const docTypeIsMatricula = data.documentoTipo ==
vehicleIdentifications_table_1.VehicleIdentification.NUMERO_DE_MATRICULA_DEL_VEHICULO;
// E963 - documentoNumero
{
/*
Debe informarse cuando el E967=1
*/
if (docTypeIsIdentificationNumber) {
validator.requiredField('documentoNumero');
}
}
// E965 - numeroMatricula
{
/*
Debe informarse cuando el E967=2
*/
if (docTypeIsMatricula) {
validator.requiredField('numeroMatricula');
}
}
});