facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
64 lines (63 loc) • 2.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MontoSchema = void 0;
const zod_1 = require("zod");
const NumberLenght_1 = __importDefault(require("../../helpers/validation/NumberLenght"));
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/**E8.1. Campos que describen el precio, tipo de cambio y valor total de la operación por ítem (E720-E729) */
exports.MontoSchema = zod_1.z
.object({
// E721
precioUnitario: zod_1.z
.number()
.superRefine((value, ctx) => {
new NumberLenght_1.default(value, ctx).max(15).maxDecimals(8);
})
.describe(SDParser_1.default.stringify('E721')),
// E725
cambio: zod_1.z
.number()
.positive()
.optional()
.superRefine((value, ctx) => {
if (value == undefined)
return;
new NumberLenght_1.default(value, ctx).max(5).maxDecimals(4);
})
.describe(SDParser_1.default.stringify('E725')),
// E8.1.1 Campos que describen los descuentos, anticipos y valor total por ítem (EA001-EA050)
// EA002
descuento: zod_1.z
.number()
.optional()
.superRefine((value, ctx) => {
if (value == undefined)
return;
new NumberLenght_1.default(value, ctx).max(15).maxDecimals(8);
})
.describe(SDParser_1.default.stringify('EA002')),
// EA006
anticipo: zod_1.z
.number()
.optional()
.superRefine((value, ctx) => {
if (value == undefined)
return;
new NumberLenght_1.default(value, ctx).max(15).maxDecimals(8);
})
.describe(SDParser_1.default.stringify('EA006')),
})
.transform((data, ctx) => {
return {
...data,
// EA004 y EA007 se declaran en EDocSchema
// EA008, EA009, E735 y E736 se calculan en EDocSchema
// EA003
procentajeDescuentoPorItem: data.descuento && data.descuento > 0
? (data.descuento * 100) / data.precioUnitario
: undefined,
};
});