UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

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

193 lines (192 loc) 6.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const eDocumentTypes_table_1 = require("../../data/eDocumentTypes.table"); class GeneralXMLSG { /**D. Campos Generales del Documento Electrónico DE (D001-D299) */ get_gDatGralOpe(params, data) { return { // D002 dFeEmiDE: data.fecha, // D1. Campos inherentes a la operación comercial (D010-D099) gOpeCom: this.get_gOpeCom(data), // D2. Campos que identifican al emisor del Documento Electrónico DE (D100-D129)*/ gEmis: this.get_gEmis(params, data), // D3. Campos que identifican al receptor del Documento Electrónico DE (D200-D299)*/ gDatRec: this.get_gDatRec(data), }; } /**D1. Campos inherentes a la operación comercial (D010-D099) */ get_gOpeCom(data) { // C002 = 7 if (data.tipoDocumento == eDocumentTypes_table_1.EDocumentType.NOTA_DE_REMISION_ELECTRONICA) { // No informa si el tipo de documento es 7 return; } return { // D011 iTipTra: data.tipoTransaccion, // D012 dDesTipTra: data.descripcionTipoTransaccion, // D013 iTImp: data.tipoImpuesto, // D014 dDesTImp: data.descripcionTipoImpuesto, // D015 cMoneOpe: data.moneda, // D016 dDesMoneOpe: data.descripcionMoneda, // D017 dCondTipCam: data.condicionTipoCambio, // D018 dTiCam: data.cambio, // D019 iCondAnt: data.condicionAnticipo, // D020 dDesCondAnt: data.descripcionCondicionAnticipo, // D1.1. Campos que identifican las obligaciones afectadas (D030-D040) gOblAfe: this.get_gOblAfe(data), }; } /** D1.1. Campos que identifican las obligaciones afectadas (D030-D040) * @link https://www.dnit.gov.py/documents/20123/420595/NT_E_KUATIA_018_MT_V150-+Junio.pdf/2ace18c4-5c03-c339-7f5c-bed6d5b5eb5e?t=1717699899642 */ get_gOblAfe(data) { if (!data.obligaciones) return undefined; return data.obligaciones.map((ob) => ({ cOblAfe: ob.codigo, dDesOblAfe: ob.descripcion, })); } /** D2. Campos que identifican al emisor del Documento Electrónico DE (D100-D129)*/ get_gEmis(params, data) { const foundEst = params.establecimientos.find((e) => e.codigo === data.establecimiento); if (!foundEst) { throw new Error(`Establecimiento '${data.establecimiento}' no encontrado en params.establecimientos*.codigo. Valores: ${params.establecimientos.map((a) => a.codigo + '-' + a.denominacion)}`); } return { // D101 dRucEm: params.rucID, // D102 dDVEmi: params.rucDV, // D103 iTipCont: params.tipoContribuyente, // D104 cTipReg: params.tipoRegimen, // D105 dNomEmi: params.razonSocial, // D106 dNomFanEmi: params.nombreFantasia, // D107 dDirEmi: foundEst.direccion, // D108 dNumCas: foundEst.numeroCasa, // D109 dCompDir1: foundEst.complementoDireccion1, // D110 dCompDir2: foundEst.complementoDireccion2, // D111 cDepEmi: foundEst.departamento, // D112 dDesDepEmi: foundEst.departamentoDescripcion, // D113 cDisEmi: foundEst.distrito, // D114 dDesDisEmi: foundEst.distritoDescripcion, // D115 cCiuEmi: foundEst.ciudad, // D116 dDesCiuEmi: foundEst.ciudadDescripcion, // D117 dTelEmi: foundEst.telefono, // D118 dEmailE: foundEst.email, // D119 dDenSuc: foundEst.denominacion, // D2.1 Campos que describen la actividad económica del emisor (D130-D139) gActEco: this.get_gActEco(params), // D2.2 Campos que identifican al responsable de la generación del DE (D140-D160) gRespDE: this.get_gRespDE(data), }; } /**D2.1 Campos que describen la actividad económica del emisor (D130-D139) */ get_gActEco(params) { return params.actividadesEconomicas.map((act) => ({ cActEco: act.codigo, dDesActEco: act.descripcion, })); } /**D2.2 Campos que identifican al responsable de la generación del DE (D140-D160) */ get_gRespDE(data) { const user = data.usuario; if (!user) return undefined; return { // D141 iTipIDRespDE: user.documentoTipo, // D142 dDTipIDRespDE: user.documentoTipoDescripcion, // D143 dNumIDRespDE: user.documentoNumero, // D144 dNomRespDE: user.nombre, // D145 dCarRespDE: user.cargo, }; } /** D3. Campos que identifican al receptor del Documento Electrónico DE (D200-D299)*/ get_gDatRec(data) { const client = data.cliente; return { // D201 iNatRec: client.contribuyente, // D202 iTiOpe: client.tipoOperacion, // D203 cPaisRec: client.pais, // D204 dDesPaisRe: client.paisDescripcion, // D205 iTiContRec: client.tipoContribuyente, // D206 dRucRec: client.rucID, // D207 dDVRec: client.rucDV, // D208 iTipIDRec: client.documentoTipo, // D209 dDTipIDRec: client.descripcionTipoDocumento, // D210 dNumIDRec: client.documentoNumero, // D211 dNomRec: client.razonSocial, // D212 dNomFanRec: client.nombreFantasia, // D213 dDirRec: client.direccion, // D218 dNumCasRec: client.numeroCasa, // D219 cDepRec: client.departamento, // D220 dDesDepRec: client.descripcionDepartamento, // D221 cDisRec: client.distrito, // D222 dDesDisRec: client.descripcionDistrito, // D223 cCiuRec: client.ciudad, // D224 dDesCiuRec: client.descripcionCiudad, // D214 dTelRec: client.telefono, // D215 dCelRec: client.celular, // D216 dEmailRec: client.email, // D217 dCodCliente: client.codigo, }; } } exports.default = new GeneralXMLSG();