facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
104 lines (103 loc) • 4.14 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransportistaSchema = void 0;
const zod_1 = require("zod");
const idDocsCarriers_table_1 = require("../../data/idDocsCarriers.table");
const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators"));
const ZodValidator_1 = __importDefault(require("../../helpers/validation/ZodValidator"));
const agente_schema_1 = require("./agente.schema");
const chofer_schema_1 = require("./chofer.schema");
const db_service_1 = __importDefault(require("../../services/db.service"));
const taxpayerNotTaxpayer_table_1 = require("../../data/taxpayerNotTaxpayer.table");
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/**E10.4. Campos que identifican al transportista (persona física o jurídica) (E980-E999) */
exports.TransportistaSchema = zod_1.z
.object({
// E981
contribuyente: CommonValidators_1.default.taxpayer().describe(SDParser_1.default.stringify('E981')),
// E982
nombre: CommonValidators_1.default.name().describe(SDParser_1.default.stringify('E982')),
// para obtener E983 y E984
ruc: CommonValidators_1.default.ruc().describe(SDParser_1.default.stringify('E983')),
// E985
documentoTipo: zod_1.z
.nativeEnum(idDocsCarriers_table_1.IdentityDocumentCarrier)
.optional()
.describe(SDParser_1.default.stringify('E985', { e: 'IdentityDocumentCarrier' })),
// E987
documentoNumero: CommonValidators_1.default.identityDocNumber()
.optional()
.describe(SDParser_1.default.stringify('E987')),
// E988
pais: CommonValidators_1.default.country().describe(SDParser_1.default.stringify('E988', { d: 'País de nacimiento', e: 'Country' })),
// E990 - E993 (excluyendo E992)
chofer: chofer_schema_1.ChoferSchema.describe(SDParser_1.default.stringify('E990 - E993 (excluyendo E992)')),
// E992
// VER: https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_010_MT_V150.pdf/d64a693b-6c63-86e1-ec6a-d4fe5ec4eeea?t=1687353747196
direccion: zod_1.z
.string()
.min(1)
.max(150)
.describe(SDParser_1.default.stringify('E992', {
v: 'https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_010_MT_V150.pdf/d64a693b-6c63-86e1-ec6a-d4fe5ec4eeea?t=1687353747196',
})),
// E994 - E997
agente: agente_schema_1.AgenteSchema.optional().describe(SDParser_1.default.stringify('E994 - E997')),
})
.transform((data, ctx) => {
const validator = new ZodValidator_1.default(ctx, data);
/**E981 = 1 */
const isTaxpayer = data.contribuyente == taxpayerNotTaxpayer_table_1.TaxpayerNotTaxpayer.CONTRIBUYENTE;
/**E981 = 2 */
const isNotTaxpayer = data.contribuyente == taxpayerNotTaxpayer_table_1.TaxpayerNotTaxpayer.NO_CONTRIBUYENTE;
// E983 - ruc
{
/*
Obligatorio si E981 = 1
No informar si E981 ≠ 1
*/
if (isTaxpayer) {
validator.requiredField('ruc');
}
else {
validator.undesiredField('ruc');
}
}
// E985 - documentoTipo
{
/*
Obligatorio si E981 = 2
No informar si E981 = 1
*/
if (isNotTaxpayer) {
validator.requiredField('documentoTipo');
}
else if (isTaxpayer) {
validator.undesiredField('documentoTipo');
}
}
// E987 - documentoNumero
{
/*
Obligatorio si existe el campo E985
*/
if (data.documentoTipo) {
validator.requiredField('documentoNumero');
}
}
const [rucID, rucDV] = data.ruc.split('-');
return {
...data,
// E983
rucID,
// E984
rucDV,
// E986
documentoTipoDescripcion: db_service_1.default.idDocsCarriers._findByIdIfExist(data.documentoTipo)?.description,
// E789
paisDescripcion: db_service_1.default.countries._findById(data.pais),
};
});