UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

Genera el contenido del archivo XML del Documento electrónico exigido por la SET

95 lines (94 loc) 3.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.InfoTarjetaSchema = void 0; const zod_1 = require("zod"); const creditCardProcessingMethods_table_1 = require("../../data/creditCardProcessingMethods.table"); const creditCards_table_1 = require("../../data/creditCards.table"); const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators")); const NumberLenght_1 = __importDefault(require("../../helpers/validation/NumberLenght")); const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator")); const db_service_1 = __importDefault(require("../../services/db.service")); const SDParser_1 = __importDefault(require("../../helpers/SDParser")); /** (E620) E7.1.1.Campos que describen el pago o entrega inicial de la operación con tarjeta de crédito/débito */ exports.InfoTarjetaSchema = zod_1.z .object({ // E621 tipo: zod_1.z .nativeEnum(creditCards_table_1.CreditCard) .describe(SDParser_1.default.stringify('E621', { e: 'CreditCard' })), // E622 tipoDescripcion: zod_1.z .string() .optional() .describe(SDParser_1.default.stringify('E622', { d: 'Obligatorio si E621 = 99 (tipo = OTRO)', })), // E623 razonSocial: zod_1.z .string() .min(4) .max(60) .optional() .describe(SDParser_1.default.stringify('E623')), // para obtener E624 y E625 ruc: CommonValidators_1.default.ruc().optional().describe(SDParser_1.default.stringify('E624')), // E626 medioPago: zod_1.z .nativeEnum(creditCardProcessingMethods_table_1.CreditCardProcessingMethod) .describe(SDParser_1.default.stringify('E626', { e: 'CreditCardProcessingMethod' })), // E627 codigoAutorizacion: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).int().min(6).max(10); }) .describe(SDParser_1.default.stringify('E627')), // E628 titular: zod_1.z .string() .min(4) .max(30) .optional() .describe(SDParser_1.default.stringify('E628')), // E629 numero: zod_1.z .number() .optional() .superRefine((value, ctx) => { if (value == undefined) return; new NumberLenght_1.default(value, ctx).int().length(4); }) .describe(SDParser_1.default.stringify('E629')), }) .transform((data, ctx) => { const validator = new ZodValidator_1.default(ctx, data); const isOtherCreditCard = data.tipo == creditCards_table_1.CreditCard.OTRO; // E622 - tipoDescripcion { /* Si E621 = 99 informar la descripción de la denominación de la tarjeta */ if (isOtherCreditCard) { validator.requiredField('tipoDescripcion'); } } const [rucID, rucDV] = data.ruc?.split('-') ?? []; return { ...data, tipoDescripcion: data.tipoDescripcion ?? db_service_1.default.creditCards._findById(data.tipo).description, // E624 rucID, // E625 rucDV, }; });