facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
57 lines (56 loc) • 2.11 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FacturaSchema = void 0;
const zod_1 = require("zod");
const presenceIndicators_table_1 = require("../../data/presenceIndicators.table");
const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators"));
const db_service_1 = __importDefault(require("../../services/db.service"));
const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator"));
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/** (E010) E1. Campos que componen la Factura Electrónica FE (E002-E099) */
exports.FacturaSchema = zod_1.z
.object({
// E011
presencia: zod_1.z
.nativeEnum(presenceIndicators_table_1.PresenceIndicator)
.describe(SDParser_1.default.stringify('E011', { e: 'PresenceIndicator' })),
// E012
descripcionPresencia: zod_1.z
.string()
.min(10)
.max(30)
.optional()
.describe(SDParser_1.default.stringify('E012', {
d: 'Obligatorio si E011 = 9 (presencia = OTRO)',
})),
// E013
fechaEnvio: CommonValidators_1.default.isoDate()
.optional()
.describe(SDParser_1.default.stringify('E013')),
})
.transform((data, ctx) => {
const validator = new ZodValidator_1.default(ctx, data);
const presenceIsOther = data.presencia == presenceIndicators_table_1.PresenceIndicator.OTRO;
// E012 - descripcionPresencia
let descripcionPresencia = data.descripcionPresencia;
{
/*
Si E011 = 9 informar el indicador de
presencia
*/
if (presenceIsOther) {
validator.requiredField('descripcionPresencia');
}
else {
descripcionPresencia = db_service_1.default.presenceIndicators._findByIdIfExist(data.presencia)?.description;
}
}
return {
...data,
// E012
descripcionPresencia,
};
});