UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

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

167 lines (166 loc) 7.73 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const xml2js_1 = __importDefault(require("xml2js")); const removeUndefinedValues_1 = require("../helpers/removeUndefinedValues"); const ComplementariosGen_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/ComplementariosGen.XMLSG")); const DocAsociado_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/DocAsociado.XMLSG")); const AutoFactura_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/AutoFactura.XMLSG")); const ComplementariosEsp_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/ComplementariosEsp.XMLSG")); const Condicion_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/Condicion.XMLSG")); const Factura_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/Factura.XMLSG")); const Items_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/Items.XMLSG")); const NotaCreditoDebito_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/NotaCreditoDebito.XMLSG")); const NotaRemision_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/NotaRemision.XMLSG")); const Transporte_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/E-section/Transporte.XMLSG")); const General_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/General.XMLSG")); const Totales_XMLSG_1 = __importDefault(require("./e-doc-xml-structure-generators/Totales.XMLSG")); class EDocXMLGenerator { defaultConfig = { redondeoSedeco: true, decimals: 2, taxDecimals: 2, pygDecimals: 0, partialTaxDecimals: 8, pygTaxDecimals: 0, userObjectRemove: false, test: false, //Para ambiente de test se debe informar true por "config" exterior.. }; xmlBuilder = new xml2js_1.default.Builder({ xmldec: { version: '1.0', encoding: 'UTF-8', standalone: false, }, renderOpts: { //Para firmar tiene que estar normalizado pretty: false, }, }); generateXMLDocument(params, data, config) { return new Promise((resolve, reject) => { try { // DELETE: si ya no se usa config = { ...this.defaultConfig, ...config }; const xmlStructure = this.transformToXMLStructure(params, data); const xml = this.xmlBuilder.buildObject(xmlStructure); resolve(xml); } catch (error) { reject(error); } }); } transformToXMLStructure(params, data) { return { rDE: this.get_rDE(params, data), }; } get_rDE(params, data) { // ver: "7.2.2.1. Particularidad de la firma digital" // todos los valores dentro del $ son atributos de la etiqueta return (0, removeUndefinedValues_1.removeUndefinedValues)({ $: { xmlns: 'http://ekuatia.set.gov.py/sifen/xsd', 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', // aunque parezca un error, ese espacio en el link es necesario 'xsi:schemaLocation': 'http://ekuatia.set.gov.py/sifen/xsd siRecepDE_v150.xsd', }, dVerFor: params.version, DE: this.get_DE(params, data), // I. Información de la Firma Digital del DTE (I001-I049) Signature: undefined, // J. Campos fuera de la Firma Digital (J001-J049) gCamFuFD: undefined, }); } /**A. Campos firmados del Documento Electrónico (A001-A099) */ get_DE(params, data) { return { $: { // A002 Id: data.Id, }, // A003 dDVId: data.dvId, // A004 dFecFirma: data.fechaFirmaDigital, // A005 dSisFact: data.sistemaDeFacturacion, // B. Campos inherentes a la operación de Documentos Electrónicos (B001-B099) gOpeDE: this.get_gOpeDE(data), // C. Campos de datos del Timbrado (C001-C099) gTimb: this.get_gTimb(params, data), // D. Campos Generales del Documento Electrónico DE (D001-D299) gDatGralOpe: General_XMLSG_1.default.get_gDatGralOpe(params, data), // E. Campos específicos por tipo de Documento Electrónico (E001-E009) gDtipDE: this.get_gDtipDE(data), // F. Campos que describen los subtotales y totales de la transacción documentada (F001-F099) gTotSub: Totales_XMLSG_1.default.get_gTotSub(data), // G. Campos complementarios comerciales de uso general (G001-G049) gCamGen: ComplementariosGen_XMLSG_1.default.get_gCamGen(data), // H. Campos que identifican al documento asociado (H001-H049) gCamDEAsoc: DocAsociado_XMLSG_1.default.get_gCamDEAsoc(data), }; } /**B. Campos inherentes a la operación de Documentos Electrónicos (B001-B099) */ get_gOpeDE(data) { return { // B002 iTipEmi: data.tipoEmision, // B003 dDesTipEmi: data.descripcionEmision, // B004 dCodSeg: data.codigoSeguridadAleatorio, // B005 dInfoEmi: data.observacion, // B006 dInfoFisc: data.descripcion, }; } /**C. Campos de datos del Timbrado (C001-C099) */ get_gTimb(params, data) { return { // C002 iTiDE: data.tipoDocumento, // C003 dDesTiDE: data.descripcionDocumento, // C004 dNumTim: params.timbradoNumero, // C005 dEst: data.establecimiento, // C006 dPunExp: data.punto, // C007 dNumDoc: data.numero, // C010 dSerieNum: data.serie, // C008 dFeIniT: params.timbradoFecha, }; } /**E. Campos específicos por tipo de Documento Electrónico (E001-E009)*/ get_gDtipDE(data) { return { // E1. Campos que componen la Factura Electrónica FE (E002-E099) gCamFE: Factura_XMLSG_1.default.get_gCamFE(data), // E4. Campos que componen la Autofactura Electrónica AFE (E300-E399) gCamAE: AutoFactura_XMLSG_1.default.get_gCamAE(data), // E5. Campos que componen la Nota de Crédito/Débito Electrónica NCE-NDE (E400-E499) gCamNCDE: NotaCreditoDebito_XMLSG_1.default.get_gCamNCDE(data), // E6. Campos que componen la Nota de Remisión Electrónica (E500-E599) gCamNRE: NotaRemision_XMLSG_1.default.get_gCamNRE(data), // E7. Campos que describen la condición de la operación (E600-E699) gCamCond: Condicion_XMLSG_1.default.get_gCamCond(data), // E8. Campos que describen los ítems de la operación (E700-E899) gCamItem: Items_XMLSG_1.default.get_gCamItem(data), // E9. Campos complementarios comerciales de uso específico (E790-E899) gCamEsp: ComplementariosEsp_XMLSG_1.default.get_gCamEsp(data), // E10. Campos que describen el transporte de las mercaderías (E900-E999) gCamTrans: Transporte_XMLSG_1.default.get_gTransp(data), }; } } exports.default = new EDocXMLGenerator();