facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
100 lines (99 loc) • 3.44 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SectorAdicionalSchema = void 0;
const zod_1 = require("zod");
const NumberLenght_1 = __importDefault(require("../../helpers/validation/NumberLenght"));
const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator"));
const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators"));
const Path_1 = require("../../helpers/Path");
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/**E9.5. Grupo de datos adicionales de uso comercial (E820-E829) */
exports.SectorAdicionalSchema = zod_1.z
.object({
// E821
ciclo: zod_1.z
.string()
.min(1)
.max(15)
.optional()
.describe(SDParser_1.default.stringify('E821')),
// E822
inicioCiclo: CommonValidators_1.default.isoDate()
.optional()
.describe(SDParser_1.default.stringify('E822')),
// E823
finCiclo: CommonValidators_1.default.isoDate()
.optional()
.describe(SDParser_1.default.stringify('E823')),
// E824
vencimientoPago: CommonValidators_1.default.isoDate()
.optional()
.describe(SDParser_1.default.stringify('E824')),
// E825
numeroContrato: zod_1.z
.string()
.min(1)
.max(30)
.optional()
.describe(SDParser_1.default.stringify('E825')),
// E826
saldoAnterior: zod_1.z
.number()
.optional()
.superRefine((value, ctx) => {
if (value == undefined)
return;
new NumberLenght_1.default(value, ctx).max(15).maxDecimals(4);
})
.describe(SDParser_1.default.stringify('E826')),
// E827: VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_020_MT_V150.pdf/f9a47078-748e-db87-bf2f-e6826ef048b9?t=1700242734040
codigoContratacionDncp: zod_1.z
.string()
.min(1)
.max(30)
.optional()
.describe(SDParser_1.default.stringify('E827', {
v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_020_MT_V150.pdf/f9a47078-748e-db87-bf2f-e6826ef048b9?t=1700242734040',
})),
})
.superRefine((data, ctx) => {
const validator = new ZodValidator_1.default(ctx, data);
// E822 - inicioCiclo
{
/*
Obligatorio si se informa el campo E821
No completar si no se informa el campo E821
*/
if (data.ciclo) {
validator.requiredField('inicioCiclo');
}
else {
validator.undesiredField('inicioCiclo');
}
}
// E823 - finCiclo
{
/*
Obligatorio si se informa el campo E822
No completar si no se informa el campo E822
*/
if (data.inicioCiclo) {
validator.requiredField('finCiclo');
}
else {
validator.undesiredField('finCiclo');
}
}
// ⚠️ esto no es del manual
{
if (data.inicioCiclo && data.finCiclo) {
const inicio = new Date(data.inicioCiclo);
const fin = new Date(data.finCiclo);
const endPath = new Path_1.Path('finCiclo');
validator.validate('inicioCiclo', inicio > fin, `$path no puede ser mayor que '${endPath}'`);
}
}
});