UNPKG

node-nfe-nfce

Version:

Modulo que auxilia na geração de NFe e NFCe

71 lines 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.inutilizar = void 0; const utils_1 = require("../../../application/helpers/utils"); const web_service_1 = require("../../../application/helpers/web-service"); const xml_1 = require("../../../application/helpers/xml"); const repos_1 = require("../../../domain/contracts/repos"); const signature_1 = require("../signature"); async function inutilizar(input) { const xml = gerarXML(input); const response = await request(xml, input); return await builderResponse(response); } exports.inutilizar = inutilizar; async function builderResponse(soapResponse) { const xmlObj = await (0, xml_1.deserializeXml)(soapResponse.xml_enviado, { explicitArray: false }); const procInutNFe = { $: { versao: '4.00', xmlns: 'http://www.portalfiscal.inf.br/nfe' }, inutNFe: Object(xmlObj).inutNFe, retInutNFe: Object(soapResponse.data.retInutNFe) }; (0, utils_1.removeSelfClosedFields)(procInutNFe); const xml_completo = (0, xml_1.serializeXml)(procInutNFe, 'procInutNFe'); return { xml_enviado: soapResponse.xml_enviado, xml_recebido: soapResponse.xml_recebido, procInutNFe, success: soapResponse.data.retInutNFe.infInut.cStat === '102', xml_completo, mensagem: soapResponse.data.retInutNFe.infInut.xMotivo }; } async function request(xml, { configuracao, dados: { cUf } }) { const soap = (0, utils_1.configuraUrlsSefaz)(cUf, configuracao, repos_1.ServicosSefaz.inutilizacao); return await (0, web_service_1.makeSoapRequest)({ xml, empresa: configuracao.empresa, soap, webProxy: configuracao.webProxy }); } function gerarXML({ configuracao, dados }) { if (dados.ano > 2000) dados.ano = dados.ano - 2000; if (dados.numeroInicial > dados.numeroFinal) throw new Error('O numero final não pode ser menor que o inicial.'); const infInut = gerarInfInut({ configuracao, dados }); const inutNFe = { $: { versao: configuracao.geral.versao, xmlns: 'http://www.portalfiscal.inf.br/nfe' }, infInut }; (0, utils_1.removeSelfClosedFields)(inutNFe); const xml = (0, xml_1.serializeXml)(inutNFe, 'inutNFe'); const xmlAssinado = (0, signature_1.signXmlX509)(xml, 'infInut', configuracao.empresa); return xmlAssinado; } function gerarInfInut({ configuracao, dados: { cUf, ano, modelo, serie, numeroFinal, numeroInicial, xJustificativa, cnpj } }) { const _ID = `ID${cUf}${ano}${cnpj}${(`00${modelo}`).slice(-2)}${(`000${serie}`).slice(-3)}${(`000000000${numeroInicial}`).slice(-9)}${(`000000000${numeroFinal}`).slice(-9)}`; if (_ID.length < 43) throw new Error('ID de Inutilização inválido'); const infInut = { $: { Id: _ID }, tpAmb: configuracao.geral.ambiente, xServ: 'INUTILIZAR', cUF: cUf, ano, CNPJ: cnpj, mod: modelo, serie, nNFIni: numeroInicial, nNFFin: numeroFinal, xJust: xJustificativa }; return infInut; } //# sourceMappingURL=inutiliza.js.map