node-sped-nfe 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -54
- package/docs/README.md +23 -12
- package/docs/Tools.md +105 -0
- package/docs/requisitos.md +26 -0
- package/package.json +1 -1
package/README.md
CHANGED
@@ -34,57 +34,5 @@ Seja bem-vindo(a) à **Biblioteca de Emissão de NF-e** — sua parceira definit
|
|
34
34
|
|
35
35
|
---
|
36
36
|
|
37
|
-
## 📌
|
38
|
-
|
39
|
-
Para garantir o funcionamento correto da biblioteca, certifique-se de que os seguintes requisitos estejam atendidos:
|
40
|
-
|
41
|
-
### 🔧 Ambiente
|
42
|
-
|
43
|
-
- **Windows**/**Linux**
|
44
|
-
- **Node.js** `v22.14.0` (versão testada e recomendada)
|
45
|
-
- **xmllint** `2.9.3` (utilizado para validação dos XMLs gerados)
|
46
|
-
|
47
|
-
---
|
48
|
-
|
49
|
-
## 🧪 Estados Testados
|
50
|
-
|
51
|
-
A biblioteca já foi testada com sucesso nos seguintes estados brasileiros:
|
52
|
-
|
53
|
-
- ✅ MT — Mato Grosso
|
54
|
-
- ⬜ AC — Acre
|
55
|
-
- ⬜ AL — Alagoas
|
56
|
-
- ⬜ AM — Amazonas
|
57
|
-
- ⬜ AP — Amapá
|
58
|
-
- ⬜ BA — Bahia
|
59
|
-
- ⬜ CE — Ceará
|
60
|
-
- ⬜ DF — Distrito Federal
|
61
|
-
- ⬜ ES — Espírito Santo
|
62
|
-
- ⬜ GO — Goiás
|
63
|
-
- ⬜ MA — Maranhão
|
64
|
-
- ⬜ MG — Minas Gerais
|
65
|
-
- ⬜ MS — Mato Grosso do Sul
|
66
|
-
- ⬜ PA — Pará
|
67
|
-
- ⬜ PB — Paraíba
|
68
|
-
- ⬜ PE — Pernambuco
|
69
|
-
- ⬜ PI — Piauí
|
70
|
-
- ⬜ PR — Paraná
|
71
|
-
- ⬜ RJ — Rio de Janeiro
|
72
|
-
- ⬜ RN — Rio Grande do Norte
|
73
|
-
- ⬜ RO — Rondônia
|
74
|
-
- ⬜ RR — Roraima
|
75
|
-
- ⬜ RS — Rio Grande do Sul
|
76
|
-
- ⬜ SC — Santa Catarina
|
77
|
-
- ⬜ SE — Sergipe
|
78
|
-
- ⬜ SP — São Paulo
|
79
|
-
- ⬜ TO — Tocantins
|
80
|
-
|
81
|
-
Contribua com a comunidade! Testou com sucesso em algum estado? Envie um PR ou abra uma issue!
|
82
|
-
|
83
|
-
## 🚀 Começando
|
84
|
-
|
85
|
-
### 1. Instalação
|
86
|
-
|
87
|
-
```bash
|
88
|
-
npm install node-sped-nfe
|
89
|
-
# ou
|
90
|
-
yarn add node-sped-nfe
|
37
|
+
## 📌 Informações
|
38
|
+
[Documentação](https://github.com/kalmonv/node-sped-nfe/tree/main/docs)
|
package/docs/README.md
CHANGED
@@ -13,25 +13,36 @@ Antes de começar, verifique se seu ambiente está preparado:
|
|
13
13
|
- ✅ **xmllint / libxml**
|
14
14
|
Utilizado para validação e assinatura de XML.
|
15
15
|
📚 Guia de instalação e uso:
|
16
|
-
👉 [
|
16
|
+
👉 [Validar XML com xmllint](https://github.com/kalmonv/node-sped-nfe/blob/main/docs/requisitos.md)
|
17
17
|
|
18
18
|
---
|
19
|
+
## 📌 Considerações
|
19
20
|
|
20
|
-
|
21
|
+
O sistema atualmente segue o layout da **NF-e versão 4.00**, conforme os padrões da SEFAZ.
|
21
22
|
|
22
|
-
|
23
|
+
Está sendo desenvolvido com estrutura flexível para facilitar futuras adaptações a novas versões da NF-e.
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
🔗 **Leitura obrigatória**:
|
26
|
+
Para uma integração correta, consulte sempre o **Manual de Integração do Contribuinte**, disponível em:
|
27
|
+
[https://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=ndIjl+iEFdE=](https://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=ndIjl+iEFdE=)
|
27
28
|
|
28
|
-
|
29
|
-
Assine digitalmente o XML com seu certificado A1.
|
30
|
-
👉 [Como assinar](https://github.com/kalmonv/node-sped-nfe/blob/main/docs/assinar_xml.md)
|
29
|
+
> ⚠️ Manter-se atualizado com esse manual é essencial para garantir conformidade fiscal.
|
31
30
|
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
---
|
32
|
+
|
33
|
+
### 1. 🧾 Criar o XML da NF-e ou NFC-e
|
34
|
+
📚 Guia de instalação e uso:
|
35
|
+
[Documentação](https://github.com/kalmonv/node-sped-nfe/blob/main/docs/xml.md)
|
36
|
+
- 📂 **NF-e**: [Ver exemplo completo](https://github.com/kalmonv/node-sped-nfe/blob/main/exemplos/nfe.js)
|
37
|
+
- 📂 **NFC-e**: [Ver exemplo completo](https://github.com/kalmonv/node-sped-nfe/blob/main/exemplos/nfce.js)
|
38
|
+
|
39
|
+
---
|
40
|
+
|
41
|
+
### 2. 🧾 Consulta status da sefaz
|
42
|
+
|
43
|
+
- 📂 **NF-e/NFC-e**: [Ver exemplo completo](https://github.com/kalmonv/node-sped-nfe/blob/main/exemplos/status.js)
|
44
|
+
|
45
|
+
---
|
35
46
|
|
36
47
|
4. 📬 **Entendendo as respostas da SEFAZ**
|
37
48
|
Interprete corretamente os códigos e status da resposta da SEFAZ.
|
package/docs/Tools.md
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
# 🧰 Instanciando a classe `Tools`
|
2
|
+
|
3
|
+
A classe `Tools` é responsável por operações centrais da NF-e/NFC-e: geração, assinatura, envio e validação de XMLs.
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
## ✨ Sintaxe
|
8
|
+
|
9
|
+
```ts
|
10
|
+
const config = {
|
11
|
+
UF: 'SP', // Obrigatorio
|
12
|
+
tpAmb: 2, //1-Produçao, 2-Homologação
|
13
|
+
versao: '4.00', //Obrigatorio
|
14
|
+
xmllint: '/usr/bin/xmllint.exe', //Optativo, caso sistema não tenha declarado nas variaveis.
|
15
|
+
mod: '55', //Obrigatorio, 65 ou 55
|
16
|
+
timeout: 60 //Optativo - Tempo limite de requisição
|
17
|
+
};
|
18
|
+
const certificado = {
|
19
|
+
pfx: fs.readFileSync('./certs/empresa.pfx'), //Obrigatorio, caminho para o arquivo .pfx
|
20
|
+
senha: 'minhasenha123' //Obrigatorio, senha do certificado digital
|
21
|
+
};
|
22
|
+
const tools = new Tools(config, certificado);
|
23
|
+
```
|
24
|
+
|
25
|
+
## 📥 Método `xml2json(xml: string): Promise<object>`
|
26
|
+
## 📥 Método `json2xml(obj: object): Promise<string>`
|
27
|
+
Converte uma string XML em um objeto JavaScript.
|
28
|
+
Converte uma string XML em um objeto JavaScript.
|
29
|
+
|
30
|
+
### Exemplo entrada ou saida:
|
31
|
+
```xml
|
32
|
+
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
|
33
|
+
<soapenv:Body>
|
34
|
+
<nfeResultMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4">
|
35
|
+
<retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">
|
36
|
+
<tpAmb>0</tpAmb>
|
37
|
+
<verAplic>1.00</verAplic>
|
38
|
+
<cStat>999</cStat>
|
39
|
+
<xMotivo>Rejeicao: Erro nao catalogado</xMotivo>
|
40
|
+
<cUF>51</cUF>
|
41
|
+
</retConsStatServ>
|
42
|
+
</nfeResultMsg>
|
43
|
+
</soapenv:Body>
|
44
|
+
</soapenv:Envelope>
|
45
|
+
```
|
46
|
+
```json
|
47
|
+
{
|
48
|
+
"soapenv:Envelope": {
|
49
|
+
"@xmlns:soapenv": "http://www.w3.org/2003/05/soap-envelope",
|
50
|
+
"soapenv:Body": {
|
51
|
+
"nfeResultMsg": {
|
52
|
+
"@xmlns": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4",
|
53
|
+
"retConsStatServ": {
|
54
|
+
"@xmlns": "http://www.portalfiscal.inf.br/nfe",
|
55
|
+
"@versao": "4.00",
|
56
|
+
"tpAmb": 0,
|
57
|
+
"verAplic": "1.00",
|
58
|
+
"cStat": 999,
|
59
|
+
"xMotivo": "Rejeicao: Erro nao catalogado",
|
60
|
+
"cUF": 51
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
```
|
67
|
+
## 📥 Método `sefazEnviaLote(xml: string, data: any = { idLote: 1, indSinc: 0, compactar: false }): Promise<string>`
|
68
|
+
Este método é responsável por enviar um lote de NF-e ou NFC-e para a SEFAZ. Ele recebe um XML contendo a NF-e/NFC-e a ser transmitida, além de um objeto de configuração que define parâmetros adicionais para o envio.
|
69
|
+
```ts
|
70
|
+
let xml = "Conteudo da NFCe/NFe".
|
71
|
+
let data = {
|
72
|
+
idLote: 1, //Identificador de controle do envio do lote.
|
73
|
+
indSinc: 0, // 0 - Não, 1 = Sim || síncrono
|
74
|
+
compactar: false
|
75
|
+
}
|
76
|
+
tools.sefazEnviaLote(xml, data);
|
77
|
+
```
|
78
|
+
|
79
|
+
## 📥 Método `async xmlSign(xmlJSON: string, data: any = { tag: "infNFe" }): Promise<string>`
|
80
|
+
Este método é responsável por **assinar digitalmente** o XML da NF-e ou NFC-e utilizando o certificado digital A1 (formato `.pfx`). A assinatura segue o padrão exigido pela SEFAZ e é essencial para a validação do documento fiscal.
|
81
|
+
```ts
|
82
|
+
let xml = "Conteudo da NFCe/NFe".
|
83
|
+
const xmlAssinado = await tools.xmlSign(xml, {
|
84
|
+
tag: "infNFe" //Tag que vai ser usada para gerar assinatura.
|
85
|
+
});
|
86
|
+
```
|
87
|
+
|
88
|
+
## 📥 Método `getCertificado: Promise<object>`
|
89
|
+
Este método retorna, de forma assíncrona, o conteúdo do certificado digital **A1 (.pfx)** carregado na instância da classe `Tools`.
|
90
|
+
```ts
|
91
|
+
const certificado = await tools.getCertificado();
|
92
|
+
console.log(certificado) //{ca,key,cert}
|
93
|
+
```
|
94
|
+
|
95
|
+
## 📥 Método `async consultarNFe(chNFe: string): Promise<string>`
|
96
|
+
O método `consultarNFe` realiza a **consulta de uma NF-e ou NFC-e na SEFAZ** utilizando a chave de acesso completa da nota e retorna o status dela em xml.
|
97
|
+
```ts
|
98
|
+
const xmlStatus = await tools.consultarNFe("CHAVE DA NFE");
|
99
|
+
```
|
100
|
+
|
101
|
+
## 📥 Método `async sefazStatus(): Promise<string>`
|
102
|
+
O método `sefazStatus` realiza a **consulta ao servidor da SEFAZ** utilizando a UF de inicializaçao.
|
103
|
+
```ts
|
104
|
+
const xmlStatus = await tools.sefazStatus();
|
105
|
+
```
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Requisitos do Projeto
|
2
|
+
|
3
|
+
Este projeto foi desenvolvido e testado com os seguintes requisitos. Certifique-se de instalá-los corretamente para garantir o funcionamento adequado.
|
4
|
+
|
5
|
+
## 1. Node.js
|
6
|
+
|
7
|
+
- **Versão testada**: `v22.1.4`
|
8
|
+
- É altamente recomendável utilizar a mesma versão para evitar incompatibilidades.
|
9
|
+
|
10
|
+
### 1.1 Links para Download
|
11
|
+
|
12
|
+
- [Node.js para Windows](https://nodejs.org/dist/v22.1.4/node-v22.1.4-x64.msi)
|
13
|
+
- [Node.js para Linux](https://nodejs.org/dist/v22.1.4/node-v22.1.4-linux-x64.tar.xz)
|
14
|
+
|
15
|
+
---
|
16
|
+
|
17
|
+
## 2. xmllint (libxml) 2.9.3
|
18
|
+
|
19
|
+
- Utilizado para validação de arquivos XML, essencial no processo de manipulação de NF-e/NFC-e.
|
20
|
+
|
21
|
+
### 2.1 Links para Download
|
22
|
+
|
23
|
+
- [libxml2 for Windows (includes xmllint)](http://xmlsoft.org/sources/win32/)
|
24
|
+
- Para Linux, você pode instalar via terminal:
|
25
|
+
```bash
|
26
|
+
sudo apt install libxml2-utils
|