facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
53 lines (52 loc) • 1.87 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreditoSchema = void 0;
const zod_1 = require("zod");
const infoCuota_schema_1 = require("./infoCuota.schema");
const creditTypes_table_1 = require("../../data/creditTypes.table");
const db_service_1 = __importDefault(require("../../services/db.service"));
const NumberLenght_1 = __importDefault(require("../../helpers/validation/NumberLenght"));
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/**E7.2. Campos que describen la operación a crédito (E640-E649) */
exports.CreditoSchema = zod_1.z
.object({
// E641
tipo: zod_1.z
.nativeEnum(creditTypes_table_1.CreditType)
.describe(SDParser_1.default.stringify('E641', { e: 'CreditType' })),
// E643
plazo: zod_1.z
.string()
.min(2)
.max(12)
.optional()
.describe(SDParser_1.default.stringify('E643')),
// E644
cuotas: zod_1.z
.number()
.optional()
.superRefine((value, ctx) => {
if (value == undefined)
return;
new NumberLenght_1.default(value, ctx).int().max(3);
})
.describe(SDParser_1.default.stringify('E644')),
// E645: lo calculamos en CondicionSchema
// E7.2.1.Campos que describen las cuotas (E650-E659)
infoCuotas: zod_1.z
.array(infoCuota_schema_1.InfoCuotaSchema)
.max(999)
.describe(SDParser_1.default.stringify('E7.2.1', {
d: 'Campos que describen las cuotas (E650-E659)',
})),
})
.transform((data, ctx) => {
return {
...data,
// E642
tipoDescripcion: db_service_1.default.creditTypes._findById(data.tipo).description,
};
});