facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
66 lines (65 loc) • 2.84 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EDocParamsSchema = void 0;
const zod_1 = require("zod");
const actividadEconomica_schema_1 = require("./params/actividadEconomica.schema");
const establecimiento_schema_1 = require("./params/establecimiento.schema");
const CommonValidators_1 = __importDefault(require("../helpers/validation/CommonValidators"));
const regimeTypes_table_1 = require("../data/regimeTypes.table");
const taxpayerTypes_table_1 = require("../data/taxpayerTypes.table");
const SDParser_1 = __importDefault(require("../helpers/SDParser"));
exports.EDocParamsSchema = zod_1.z
.object({
// D2. Campos que identifican al emisor del Documento Electrónico DE (D100-D129)
// ruc con dv, para calcular D101 y D102
ruc: CommonValidators_1.default.ruc().describe(SDParser_1.default.stringify('D101 - D102')),
// D103
tipoContribuyente: zod_1.z
.nativeEnum(taxpayerTypes_table_1.TaxpayerType)
.describe(SDParser_1.default.stringify('D103', { e: 'TaxpayerType' })),
// D104
tipoRegimen: zod_1.z
.nativeEnum(regimeTypes_table_1.RegimeType)
.optional()
.describe(SDParser_1.default.stringify('D104', { e: 'RegimeType' })),
// D105
razonSocial: CommonValidators_1.default.legalName().describe(SDParser_1.default.stringify('D105')),
// D106
nombreFantasia: CommonValidators_1.default.tradeName()
.optional()
.describe(SDParser_1.default.stringify('D106')),
// D107 - D119
establecimientos: zod_1.z
.array(establecimiento_schema_1.EstablecimientoSchema)
.min(1)
.describe(SDParser_1.default.stringify('D107 - D119')),
// D2.1 Campos que describen la actividad económica del emisor (D130-D139)
actividadesEconomicas: zod_1.z
.array(actividadEconomica_schema_1.ActividadEconomicaSchema)
.min(1)
.max(9)
.describe(SDParser_1.default.stringify('D2.1', {
d: 'Campos que describen la actividad económica del emisor (D130-D139)',
v: 'https://servicios.set.gov.py/eset-publico/consultarActividadEconomicaIService.do',
})),
// C004
timbradoNumero: CommonValidators_1.default.timbrado().describe(SDParser_1.default.stringify('C004')),
// C008
timbradoFecha: CommonValidators_1.default.isoDate().describe(SDParser_1.default.stringify('C008')),
})
.transform((data, ctx) => {
const [rucID, rucDV] = data.ruc.split('-');
return {
...data,
// AA. Campos que identifican el formato electrónico XML (AA001-AA009)
// AA002
version: 150,
// D101
rucID,
// D102
rucDV,
};
});