facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
55 lines (54 loc) • 2.24 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UsuarioSchema = void 0;
const zod_1 = require("zod");
const idDocsUsers_table_1 = require("../../data/idDocsUsers.table");
const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators"));
const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator"));
const db_service_1 = __importDefault(require("../../services/db.service"));
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/** D2.2 Campos que identifican al responsable de la generación del DE (D140-D160) */
exports.UsuarioSchema = zod_1.z
.object({
// D141
documentoTipo: zod_1.z
.nativeEnum(idDocsUsers_table_1.IdentityDocumentUser)
.describe(SDParser_1.default.stringify('D141', { e: 'IdentityDocumentUser' })),
// D142
documentoTipoDescripcion: zod_1.z
.string()
.min(9)
.max(41)
.optional()
.describe(SDParser_1.default.stringify('D142')),
// D143
documentoNumero: CommonValidators_1.default.identityDocNumber().describe(SDParser_1.default.stringify('D143')),
// D144
nombre: CommonValidators_1.default.name().describe(SDParser_1.default.stringify('D144')),
// D145
cargo: zod_1.z.string().min(4).max(100).describe(SDParser_1.default.stringify('D145')),
})
.transform((data, ctx) => {
const validator = new ZodValidator_1.default(ctx, data);
const isOtherDocument = data.documentoTipo == idDocsUsers_table_1.IdentityDocumentUser.OTRO;
// D141 - documentoTipoDescripcion
{
/*
Si D141 = 9 informar el tipo de
documento de identidad del
responsable de la generación del DE
*/
if (isOtherDocument) {
validator.requiredField('documentoTipoDescripcion');
}
}
return {
...data,
documentoTipoDescripcion: !isOtherDocument
? db_service_1.default.idDocsUsers._findById(data.documentoTipo).description
: data.documentoTipoDescripcion,
};
});