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
JavaScript
;
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,
};
});