UNPKG

node-sped-nfe-custom

Version:

Seja bem-vindo(a) à **Biblioteca de Emissão de NF-e** — sua parceira definitiva para integrar **emissão de Nota Fiscal Eletrônica modelo 55 (NF-e)** e **modelo 65 (NFC-e)** em aplicações modernas, com simplicidade, robustez e total conformidade com a legi

53 lines (52 loc) 2.03 kB
export class Complements { /** * Junta o XML da NF-e assinada e o protocolo de autorização da SEFAZ, formando o nfeProc. * @param xmlAssinado XML da NF-e já assinado (string) * @param xmlResposta XML da SEFAZ com <protNFe> (string) * @returns XML nfeProc completo */ static toAuthorize(xmlAssinado, xmlResposta) { const protNFe = this.extractTag(xmlResposta, 'protNFe'); const versao = this.extractVersao(xmlAssinado) || '4.00'; return this.join(xmlAssinado, protNFe, 'nfeProc', versao); } /** * Junta o XML do evento (cancelamento, carta de correção, etc) com o protocolo da SEFAZ, formando o procEventoNFe. * @param xmlEvento XML do evento assinado (string) * @param xmlResposta XML da SEFAZ com <retEvento> (string) * @returns XML procEventoNFe completo */ static toProcEvento(xmlEvento, xmlResposta) { const retEvento = this.extractTag(xmlResposta, 'retEvento'); const versao = this.extractVersao(xmlEvento) || '1.00'; return this.join(xmlEvento, retEvento, 'procEventoNFe', versao); } /** * Extrai a tag desejada do XML (ex: <protNFe>...</protNFe>) */ static extractTag(xml, tag) { const match = xml.match(new RegExp(`<${tag}[^>]*>[\\s\\S]*?<\\/${tag}>`, 'm')); if (!match) { throw new Error(`Tag <${tag}> não encontrada no XML.`); } return match[0]; } /** * Extrai a versão do XML (ex: versao="4.00" ou versao="1.00") */ static extractVersao(xml) { const match = xml.match(/versao="([\d.]+)"/); return match ? match[1] : null; } /** * Junta dois blocos XML sob uma tag raiz com a versão e namespace corretos */ static join(bloco1, bloco2, root, versao) { return `<?xml version="1.0" encoding="UTF-8"?> <${root} versao="${versao}" xmlns="${this.urlPortal}"> ${bloco1} ${bloco2} </${root}>`; } } Complements.urlPortal = 'http://www.portalfiscal.inf.br/nfe';