UNPKG

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
"use strict"; 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, }; });