node-sped-nfe 1.1.0 → 1.1.2
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 +3 -1
- package/dist/utils/eventos.js +7 -7
- package/dist/utils/extras.js +14 -1
- package/dist/utils/tools.d.ts +1 -0
- package/dist/utils/tools.js +8 -1
- package/package.json +1 -3
- package/saida.txt +0 -0
- package/testes/nfe.xml +285 -0
- package/testes/nfe_sign.xml +1 -0
- package/{exemplos/nfe.js → testes/teste.js} +12 -0
- package/xmlvalid.json +1 -0
- package/docs/README.md +0 -60
- package/docs/Tools.md +0 -105
- package/docs/requisitos.md +0 -26
- package/docs/xml.md +0 -1653
- package/exemplos/consulta.js +0 -19
- package/exemplos/nfce.js +0 -165
- package/exemplos/status.js +0 -22
- package/src/index.ts +0 -4
- package/src/utils/eventos.ts +0 -1487
- package/src/utils/extras.ts +0 -282
- package/src/utils/make.ts +0 -712
- package/src/utils/tools.ts +0 -436
package/README.md
CHANGED
@@ -37,5 +37,7 @@ Seja bem-vindo(a) à **Biblioteca de Emissão de NF-e** — sua parceira definit
|
|
37
37
|
## 📌 Informações
|
38
38
|
Toda a documentação completa com guias, exemplos, status SEFAZ e muito mais está disponível aqui:
|
39
39
|
<div align="center">
|
40
|
-
|
40
|
+
<a href="https://github.com/kalmonv/node-sped-nfe/tree/main/docs">
|
41
|
+
🧾 <strong>Documentação oficial no GitHub</strong>
|
42
|
+
</a>
|
41
43
|
</div>
|
package/dist/utils/eventos.js
CHANGED
@@ -121,13 +121,13 @@ const urlEventos400 = {
|
|
121
121
|
"NFeConsultaCadastro": "https://nfe.sefaz.go.gov.br/nfe/services/CadConsultaCadastro4"
|
122
122
|
},
|
123
123
|
"homologacao": {
|
124
|
-
"NFeStatusServico": "https://homolog.sefaz.go.gov.br/nfe/services/NFeStatusServico4",
|
125
|
-
"NFeAutorizacao": "https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4",
|
126
|
-
"NFeConsultaProtocolo": "https://homolog.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4",
|
127
|
-
"NFeInutilizacao": "https://homolog.sefaz.go.gov.br/nfe/services/NFeInutilizacao4",
|
128
|
-
"NFeRetAutorizacao": "https://homolog.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4",
|
129
|
-
"RecepcaoEvento": "https://homolog.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4",
|
130
|
-
"NFeConsultaCadastro": "https://homolog.sefaz.go.gov.br/nfe/services/CadConsultaCadastro4"
|
124
|
+
"NFeStatusServico": "https://homolog.sefaz.go.gov.br/nfe/services/NFeStatusServico4?wsdl",
|
125
|
+
"NFeAutorizacao": "https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4?wsdl",
|
126
|
+
"NFeConsultaProtocolo": "https://homolog.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4?wsdl",
|
127
|
+
"NFeInutilizacao": "https://homolog.sefaz.go.gov.br/nfe/services/NFeInutilizacao4?wsdl",
|
128
|
+
"NFeRetAutorizacao": "https://homolog.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4?wsdl",
|
129
|
+
"RecepcaoEvento": "https://homolog.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4?wsdl",
|
130
|
+
"NFeConsultaCadastro": "https://homolog.sefaz.go.gov.br/nfe/services/CadConsultaCadastro4?wsdl"
|
131
131
|
}
|
132
132
|
},
|
133
133
|
"mod65": {
|
package/dist/utils/extras.js
CHANGED
@@ -255,7 +255,20 @@ const impEstrutura = (imposto) => {
|
|
255
255
|
};
|
256
256
|
//Configurar valores
|
257
257
|
let configStruct = async (el, struc) => {
|
258
|
-
|
258
|
+
Object.keys(struc).forEach(key => {
|
259
|
+
if (typeof el[key] == "undefined") { //Não foi definido pelo usuario!
|
260
|
+
if (struc[key]["@obrig"]) { //Obrigatorio?
|
261
|
+
return struc; //Retonar estrutura
|
262
|
+
}
|
263
|
+
}
|
264
|
+
});
|
265
|
+
Object.keys(struc).forEach(key => {
|
266
|
+
if (typeof el[key]["@next"][`${key}_${el[key].value}`] != "undefined") { //Não foi definido pelo usuario!
|
267
|
+
}
|
268
|
+
});
|
269
|
+
if (el["@next"]) {
|
270
|
+
}
|
271
|
+
return configStruct(imposto, gStruct);
|
259
272
|
};
|
260
273
|
imposto = configStruct(imposto, gStruct);
|
261
274
|
};
|
package/dist/utils/tools.d.ts
CHANGED
package/dist/utils/tools.js
CHANGED
@@ -23,7 +23,7 @@ import pem from 'pem';
|
|
23
23
|
const __filename = fileURLToPath(import.meta.url);
|
24
24
|
const __dirname = path.dirname(__filename);
|
25
25
|
class Tools {
|
26
|
-
constructor(config = { mod: "", xmllint: 'xmllint', UF: '', tpAmb: 2, CSC: "", CSCid: "", versao: "4.00", timeout: 30 }, certificado = { pfx: "", senha: "" }) {
|
26
|
+
constructor(config = { mod: "", xmllint: 'xmllint', UF: '', tpAmb: 2, CSC: "", CSCid: "", versao: "4.00", timeout: 30, openssl: "" }, certificado = { pfx: "", senha: "" }) {
|
27
27
|
_Tools_instances.add(this);
|
28
28
|
_Tools_cert.set(this, void 0);
|
29
29
|
_Tools_xmlTools.set(this, {
|
@@ -44,10 +44,13 @@ class Tools {
|
|
44
44
|
throw "Tools({...,tpAmb:?},{}): tpAmb não definida!";
|
45
45
|
if (typeof config.versao == "undefined")
|
46
46
|
throw "Tools({...,versao:?},{}): versao não definida!";
|
47
|
+
//Default do sistema
|
47
48
|
if (typeof config.timeout == "undefined")
|
48
49
|
config.timeout = 30;
|
49
50
|
if (typeof config.xmllint == "undefined")
|
50
51
|
config.xmllint = 'xmllint';
|
52
|
+
if (typeof config.openssl == "undefined")
|
53
|
+
config.openssl = 'openssl';
|
51
54
|
//Configurar certificado
|
52
55
|
__classPrivateFieldSet(this, _Tools_config, config, "f");
|
53
56
|
__classPrivateFieldSet(this, _Tools_cert, certificado, "f");
|
@@ -371,6 +374,7 @@ async function _Tools_xmlValido(xml, xsd) {
|
|
371
374
|
fs.writeFileSync(xmlFile.name, xml, { encoding: 'utf8' });
|
372
375
|
const schemaPath = path.resolve(__dirname, `../../schemas/${xsd}.xsd`);
|
373
376
|
const verif = spawnSync(__classPrivateFieldGet(this, _Tools_config, "f").xmllint, ['--noout', '--schema', schemaPath, xmlFile.name], { encoding: 'utf8' });
|
377
|
+
fs.writeFileSync("xmlvalid.json", JSON.stringify(verif));
|
374
378
|
xmlFile.removeCallback();
|
375
379
|
// Aqui, usamos o operador de encadeamento opcional (?.)
|
376
380
|
if (verif.error) {
|
@@ -384,6 +388,9 @@ async function _Tools_xmlValido(xml, xsd) {
|
|
384
388
|
return new Promise(async (resvol, reject) => {
|
385
389
|
if (__classPrivateFieldGet(this, _Tools_pem, "f").key != "")
|
386
390
|
resvol(__classPrivateFieldGet(this, _Tools_pem, "f"));
|
391
|
+
pem.config({
|
392
|
+
pathOpenSSL: __classPrivateFieldGet(this, _Tools_config, "f").openssl
|
393
|
+
});
|
387
394
|
pem.readPkcs12(__classPrivateFieldGet(this, _Tools_cert, "f").pfx, { p12Password: __classPrivateFieldGet(this, _Tools_cert, "f").senha }, (err, myPem) => {
|
388
395
|
if (err)
|
389
396
|
return reject(err); // <-- importante!
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "node-sped-nfe",
|
3
|
-
"version": "1.1.
|
3
|
+
"version": "1.1.2",
|
4
4
|
"author": "Kalmon V. Tavares",
|
5
5
|
"type": "module",
|
6
6
|
"main": "dist/index.js",
|
@@ -25,12 +25,10 @@
|
|
25
25
|
},
|
26
26
|
"scripts": {
|
27
27
|
"build": "tsc > saida.txt",
|
28
|
-
|
29
28
|
"t:status": "node exemplos/status.js",
|
30
29
|
"t:nfe": "node exemplos/nfe.js",
|
31
30
|
"t:nfce": "node exemplos/nfce.js",
|
32
31
|
"t:cons": "node exemplos/consulta.js",
|
33
|
-
|
34
32
|
"teste": "node testes/teste.js"
|
35
33
|
},
|
36
34
|
"devDependencies": {
|
package/saida.txt
ADDED
File without changes
|
package/testes/nfe.xml
ADDED
@@ -0,0 +1,285 @@
|
|
1
|
+
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
|
2
|
+
<infNFe xmlns="http://www.portalfiscal.inf.br/nfe"
|
3
|
+
Id="NFe51250447506306000188550000000002481000020236" versao="4.00">
|
4
|
+
<ide>
|
5
|
+
<cUF>51</cUF>
|
6
|
+
<cNF>00002023</cNF>
|
7
|
+
<natOp>VENDA</natOp>
|
8
|
+
<mod>55</mod>
|
9
|
+
<serie>0</serie>
|
10
|
+
<nNF>248</nNF>
|
11
|
+
<dhEmi>2025-04-10T20:18:35-03:00</dhEmi>
|
12
|
+
<tpNF>1</tpNF>
|
13
|
+
<idDest>1</idDest>
|
14
|
+
<cMunFG>5106257</cMunFG>
|
15
|
+
<tpImp>1</tpImp>
|
16
|
+
<tpEmis>1</tpEmis>
|
17
|
+
<cDV>6</cDV>
|
18
|
+
<tpAmb>2</tpAmb>
|
19
|
+
<finNFe>1</finNFe>
|
20
|
+
<indFinal>0</indFinal>
|
21
|
+
<indPres>1</indPres>
|
22
|
+
<indIntermed>0</indIntermed>
|
23
|
+
<procEmi>0</procEmi>
|
24
|
+
<verProc>4.13</verProc>
|
25
|
+
<NFref>
|
26
|
+
<refNFe>51250247506306000188550000000002561000002577</refNFe>
|
27
|
+
</NFref>
|
28
|
+
<NFref>
|
29
|
+
<refNF>
|
30
|
+
<cUF>35</cUF>
|
31
|
+
<AAMM>1412</AAMM>
|
32
|
+
<CNPJ>52297850000105</CNPJ>
|
33
|
+
<mod>01</mod>
|
34
|
+
<serie>3</serie>
|
35
|
+
<nNF>587878</nNF>
|
36
|
+
</refNF>
|
37
|
+
</NFref>
|
38
|
+
</ide>
|
39
|
+
<emit>
|
40
|
+
<CNPJ>47506306000188</CNPJ>
|
41
|
+
<xNome>47.506.306 KALMON VALADAO TAVARES</xNome>
|
42
|
+
<xFant>GUARA DEV</xFant>
|
43
|
+
<enderEmit>
|
44
|
+
<xLgr>AV PARA</xLgr>
|
45
|
+
<nro>138</nro>
|
46
|
+
<xBairro>UNIAO</xBairro>
|
47
|
+
<cMun>5106257</cMun>
|
48
|
+
<xMun>Nova Xavantina</xMun>
|
49
|
+
<UF>MT</UF>
|
50
|
+
<CEP>78690000</CEP>
|
51
|
+
<cPais>1058</cPais>
|
52
|
+
<xPais>BRASIL</xPais>
|
53
|
+
<fone>66981352912</fone>
|
54
|
+
</enderEmit>
|
55
|
+
<IE>139551956</IE>
|
56
|
+
<CRT>1</CRT>
|
57
|
+
</emit>
|
58
|
+
<dest>
|
59
|
+
<CPF>04079907125</CPF>
|
60
|
+
<xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome>
|
61
|
+
<enderDest>
|
62
|
+
<xLgr>RUA DAS SAMAMBAIAS</xLgr>
|
63
|
+
<nro>144</nro>
|
64
|
+
<xBairro>PARQUE ELDORADO</xBairro>
|
65
|
+
<cMun>5107040</cMun>
|
66
|
+
<xMun>PRIMAVERA DO LESTE</xMun>
|
67
|
+
<UF>MT</UF>
|
68
|
+
<CEP>78850000</CEP>
|
69
|
+
<cPais>1058</cPais>
|
70
|
+
<xPais>BRASIL</xPais>
|
71
|
+
</enderDest>
|
72
|
+
<indIEDest>2</indIEDest>
|
73
|
+
</dest>
|
74
|
+
<det nItem="1">
|
75
|
+
<prod>
|
76
|
+
<cProd>126</cProd>
|
77
|
+
<cEAN>SEM GTIN</cEAN>
|
78
|
+
<xProd>CABOS MICROFONE DMX XR CANON BALANCEADO 20 METROS</xProd>
|
79
|
+
<NCM>85044010</NCM>
|
80
|
+
<CFOP>5102</CFOP>
|
81
|
+
<uCom>UNID</uCom>
|
82
|
+
<qCom>3.0000</qCom>
|
83
|
+
<vUnCom>132.0000000000</vUnCom>
|
84
|
+
<vProd>396.00</vProd>
|
85
|
+
<cEANTrib>SEM GTIN</cEANTrib>
|
86
|
+
<uTrib>UNID</uTrib>
|
87
|
+
<qTrib>3.0000</qTrib>
|
88
|
+
<vUnTrib>132.0000000000</vUnTrib>
|
89
|
+
<indTot>1</indTot>
|
90
|
+
</prod>
|
91
|
+
<imposto>
|
92
|
+
<ICMS>
|
93
|
+
<ICMSSN102>
|
94
|
+
<orig>0</orig>
|
95
|
+
<CSOSN>400</CSOSN>
|
96
|
+
</ICMSSN102>
|
97
|
+
</ICMS>
|
98
|
+
<PIS>
|
99
|
+
<PISOutr>
|
100
|
+
<CST>49</CST>
|
101
|
+
<qBCProd>0.0000</qBCProd>
|
102
|
+
<vAliqProd>0.0000</vAliqProd>
|
103
|
+
<vPIS>0.00</vPIS>
|
104
|
+
</PISOutr>
|
105
|
+
</PIS>
|
106
|
+
<COFINS>
|
107
|
+
<COFINSOutr>
|
108
|
+
<CST>49</CST>
|
109
|
+
<qBCProd>0.0000</qBCProd>
|
110
|
+
<vAliqProd>0.0000</vAliqProd>
|
111
|
+
<vCOFINS>0.00</vCOFINS>
|
112
|
+
</COFINSOutr>
|
113
|
+
</COFINS>
|
114
|
+
</imposto>
|
115
|
+
<infAdProd>Cagaram tudo aqui vei!</infAdProd>
|
116
|
+
</det>
|
117
|
+
<det nItem="2">
|
118
|
+
<prod>
|
119
|
+
<cProd>129</cProd>
|
120
|
+
<cEAN>SEM GTIN</cEAN>
|
121
|
+
<xProd>CABO P2 PARA P10 CELULAR MESA DE SOM CAIXA DE SOM 25 METRO</xProd>
|
122
|
+
<NCM>85044010</NCM>
|
123
|
+
<CFOP>5102</CFOP>
|
124
|
+
<uCom>UNID</uCom>
|
125
|
+
<qCom>2.0000</qCom>
|
126
|
+
<vUnCom>218.0000000000</vUnCom>
|
127
|
+
<vProd>436.00</vProd>
|
128
|
+
<cEANTrib>SEM GTIN</cEANTrib>
|
129
|
+
<uTrib>UNID</uTrib>
|
130
|
+
<qTrib>2.0000</qTrib>
|
131
|
+
<vUnTrib>218.0000000000</vUnTrib>
|
132
|
+
<indTot>1</indTot>
|
133
|
+
</prod>
|
134
|
+
<imposto>
|
135
|
+
<ICMS>
|
136
|
+
<ICMSSN102>
|
137
|
+
<orig>0</orig>
|
138
|
+
<CSOSN>400</CSOSN>
|
139
|
+
</ICMSSN102>
|
140
|
+
</ICMS>
|
141
|
+
<PIS>
|
142
|
+
<PISOutr>
|
143
|
+
<CST>49</CST>
|
144
|
+
<qBCProd>0.0000</qBCProd>
|
145
|
+
<vAliqProd>0.0000</vAliqProd>
|
146
|
+
<vPIS>0.00</vPIS>
|
147
|
+
</PISOutr>
|
148
|
+
</PIS>
|
149
|
+
<COFINS>
|
150
|
+
<COFINSOutr>
|
151
|
+
<CST>49</CST>
|
152
|
+
<qBCProd>0.0000</qBCProd>
|
153
|
+
<vAliqProd>0.0000</vAliqProd>
|
154
|
+
<vCOFINS>0.00</vCOFINS>
|
155
|
+
</COFINSOutr>
|
156
|
+
</COFINS>
|
157
|
+
</imposto>
|
158
|
+
</det>
|
159
|
+
<det nItem="3">
|
160
|
+
<prod>
|
161
|
+
<cProd>127</cProd>
|
162
|
+
<cEAN>SEM GTIN</cEAN>
|
163
|
+
<xProd>CABO DE MICROFONE XLR FEMEA PARA P10 MONO 20 METROS CIRILO CABOS</xProd>
|
164
|
+
<NCM>85044010</NCM>
|
165
|
+
<CFOP>5102</CFOP>
|
166
|
+
<uCom>UNID</uCom>
|
167
|
+
<qCom>2.0000</qCom>
|
168
|
+
<vUnCom>185.0000000000</vUnCom>
|
169
|
+
<vProd>370.00</vProd>
|
170
|
+
<cEANTrib>SEM GTIN</cEANTrib>
|
171
|
+
<uTrib>UNID</uTrib>
|
172
|
+
<qTrib>2.0000</qTrib>
|
173
|
+
<vUnTrib>185.0000000000</vUnTrib>
|
174
|
+
<vDesc>38.00</vDesc>
|
175
|
+
<indTot>1</indTot>
|
176
|
+
</prod>
|
177
|
+
<imposto>
|
178
|
+
<ICMS>
|
179
|
+
<ICMSSN102>
|
180
|
+
<orig>0</orig>
|
181
|
+
<CSOSN>400</CSOSN>
|
182
|
+
</ICMSSN102>
|
183
|
+
</ICMS>
|
184
|
+
<PIS>
|
185
|
+
<PISOutr>
|
186
|
+
<CST>49</CST>
|
187
|
+
<qBCProd>0.0000</qBCProd>
|
188
|
+
<vAliqProd>0.0000</vAliqProd>
|
189
|
+
<vPIS>0.00</vPIS>
|
190
|
+
</PISOutr>
|
191
|
+
</PIS>
|
192
|
+
<COFINS>
|
193
|
+
<COFINSOutr>
|
194
|
+
<CST>49</CST>
|
195
|
+
<qBCProd>0.0000</qBCProd>
|
196
|
+
<vAliqProd>0.0000</vAliqProd>
|
197
|
+
<vCOFINS>0.00</vCOFINS>
|
198
|
+
</COFINSOutr>
|
199
|
+
</COFINS>
|
200
|
+
</imposto>
|
201
|
+
</det>
|
202
|
+
<det nItem="4">
|
203
|
+
<prod>
|
204
|
+
<cProd>128</cProd>
|
205
|
+
<cEAN>SEM GTIN</cEAN>
|
206
|
+
<xProd>CABO DE AUDIO P10 X P10 MONO BLINDADO 5 METROS</xProd>
|
207
|
+
<NCM>85044010</NCM>
|
208
|
+
<CFOP>5102</CFOP>
|
209
|
+
<uCom>UNID</uCom>
|
210
|
+
<qCom>2.0000</qCom>
|
211
|
+
<vUnCom>18.0000000000</vUnCom>
|
212
|
+
<vProd>36.00</vProd>
|
213
|
+
<cEANTrib>SEM GTIN</cEANTrib>
|
214
|
+
<uTrib>UNID</uTrib>
|
215
|
+
<qTrib>2.0000</qTrib>
|
216
|
+
<vUnTrib>18.0000000000</vUnTrib>
|
217
|
+
<indTot>1</indTot>
|
218
|
+
</prod>
|
219
|
+
<imposto>
|
220
|
+
<ICMS>
|
221
|
+
<ICMSSN102>
|
222
|
+
<orig>0</orig>
|
223
|
+
<CSOSN>400</CSOSN>
|
224
|
+
</ICMSSN102>
|
225
|
+
</ICMS>
|
226
|
+
<PIS>
|
227
|
+
<PISOutr>
|
228
|
+
<CST>49</CST>
|
229
|
+
<qBCProd>0.0000</qBCProd>
|
230
|
+
<vAliqProd>0.0000</vAliqProd>
|
231
|
+
<vPIS>0.00</vPIS>
|
232
|
+
</PISOutr>
|
233
|
+
</PIS>
|
234
|
+
<COFINS>
|
235
|
+
<COFINSOutr>
|
236
|
+
<CST>49</CST>
|
237
|
+
<qBCProd>0.0000</qBCProd>
|
238
|
+
<vAliqProd>0.0000</vAliqProd>
|
239
|
+
<vCOFINS>0.00</vCOFINS>
|
240
|
+
</COFINSOutr>
|
241
|
+
</COFINS>
|
242
|
+
</imposto>
|
243
|
+
</det>
|
244
|
+
<total>
|
245
|
+
<ICMSTot>
|
246
|
+
<vBC>0.00</vBC>
|
247
|
+
<vICMS>0.00</vICMS>
|
248
|
+
<vICMSDeson>0.00</vICMSDeson>
|
249
|
+
<vFCP>0.00</vFCP>
|
250
|
+
<vBCST>0.00</vBCST>
|
251
|
+
<vST>0.00</vST>
|
252
|
+
<vFCPST>0.00</vFCPST>
|
253
|
+
<vFCPSTRet>0.00</vFCPSTRet>
|
254
|
+
<vProd>1238.00</vProd>
|
255
|
+
<vFrete>0.00</vFrete>
|
256
|
+
<vSeg>0.00</vSeg>
|
257
|
+
<vDesc>38.00</vDesc>
|
258
|
+
<vII>0.00</vII>
|
259
|
+
<vIPI>0.00</vIPI>
|
260
|
+
<vIPIDevol>0.00</vIPIDevol>
|
261
|
+
<vPIS>0.00</vPIS>
|
262
|
+
<vCOFINS>0.00</vCOFINS>
|
263
|
+
<vOutro>0.00</vOutro>
|
264
|
+
<vNF>1200.00</vNF>
|
265
|
+
</ICMSTot>
|
266
|
+
</total>
|
267
|
+
<transp>
|
268
|
+
<modFrete>9</modFrete>
|
269
|
+
</transp>
|
270
|
+
<pag>
|
271
|
+
<detPag>
|
272
|
+
<indPag>0</indPag>
|
273
|
+
<tPag>17</tPag>
|
274
|
+
<vPag>1200.00</vPag>
|
275
|
+
</detPag>
|
276
|
+
<vTroco>0.00</vTroco>
|
277
|
+
</pag>
|
278
|
+
<infRespTec>
|
279
|
+
<CNPJ>47506306000188</CNPJ>
|
280
|
+
<xContato>Guara Dev</xContato>
|
281
|
+
<email>admin@guaradev.com</email>
|
282
|
+
<fone>5566999638922</fone>
|
283
|
+
</infRespTec>
|
284
|
+
</infNFe>
|
285
|
+
</NFe>
|
@@ -0,0 +1 @@
|
|
1
|
+
<NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe xmlns="http://www.portalfiscal.inf.br/nfe" Id="NFe51250447506306000188550000000002481000020236" versao="4.00"><ide><cUF>51</cUF><cNF>00002023</cNF><natOp>VENDA</natOp><mod>55</mod><serie>0</serie><nNF>248</nNF><dhEmi>2025-04-10T20:18:35-03:00</dhEmi><tpNF>1</tpNF><idDest>1</idDest><cMunFG>5106257</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>6</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><indFinal>0</indFinal><indPres>1</indPres><indIntermed>0</indIntermed><procEmi>0</procEmi><verProc>4.13</verProc><NFref><refNFe>51250247506306000188550000000002561000002577</refNFe></NFref><NFref><refNF><cUF>35</cUF><AAMM>1412</AAMM><CNPJ>52297850000105</CNPJ><mod>01</mod><serie>3</serie><nNF>587878</nNF></refNF></NFref></ide><emit><CNPJ>47506306000188</CNPJ><xNome>47.506.306 KALMON VALADAO TAVARES</xNome><xFant>GUARA DEV</xFant><enderEmit><xLgr>AV PARA</xLgr><nro>138</nro><xBairro>UNIAO</xBairro><cMun>5106257</cMun><xMun>Nova Xavantina</xMun><UF>MT</UF><CEP>78690000</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>66981352912</fone></enderEmit><IE>139551956</IE><CRT>1</CRT></emit><dest><CPF>04079907125</CPF><xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome><enderDest><xLgr>RUA DAS SAMAMBAIAS</xLgr><nro>144</nro><xBairro>PARQUE ELDORADO</xBairro><cMun>5107040</cMun><xMun>PRIMAVERA DO LESTE</xMun><UF>MT</UF><CEP>78850000</CEP><cPais>1058</cPais><xPais>BRASIL</xPais></enderDest><indIEDest>2</indIEDest></dest><det nItem="1"><prod><cProd>126</cProd><cEAN>SEM GTIN</cEAN><xProd>CABOS MICROFONE DMX XR CANON BALANCEADO 20 METROS</xProd><NCM>85044010</NCM><CFOP>5102</CFOP><uCom>UNID</uCom><qCom>3.0000</qCom><vUnCom>132.0000000000</vUnCom><vProd>396.00</vProd><cEANTrib>SEM GTIN</cEANTrib><uTrib>UNID</uTrib><qTrib>3.0000</qTrib><vUnTrib>132.0000000000</vUnTrib><indTot>1</indTot></prod><imposto><ICMS><ICMSSN102><orig>0</orig><CSOSN>400</CSOSN></ICMSSN102></ICMS><PIS><PISOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vPIS>0.00</vPIS></PISOutr></PIS><COFINS><COFINSOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vCOFINS>0.00</vCOFINS></COFINSOutr></COFINS></imposto><infAdProd>Cagaram tudo aqui vei!</infAdProd></det><det nItem="2"><prod><cProd>129</cProd><cEAN>SEM GTIN</cEAN><xProd>CABO P2 PARA P10 CELULAR MESA DE SOM CAIXA DE SOM 25 METRO</xProd><NCM>85044010</NCM><CFOP>5102</CFOP><uCom>UNID</uCom><qCom>2.0000</qCom><vUnCom>218.0000000000</vUnCom><vProd>436.00</vProd><cEANTrib>SEM GTIN</cEANTrib><uTrib>UNID</uTrib><qTrib>2.0000</qTrib><vUnTrib>218.0000000000</vUnTrib><indTot>1</indTot></prod><imposto><ICMS><ICMSSN102><orig>0</orig><CSOSN>400</CSOSN></ICMSSN102></ICMS><PIS><PISOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vPIS>0.00</vPIS></PISOutr></PIS><COFINS><COFINSOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vCOFINS>0.00</vCOFINS></COFINSOutr></COFINS></imposto></det><det nItem="3"><prod><cProd>127</cProd><cEAN>SEM GTIN</cEAN><xProd>CABO DE MICROFONE XLR FEMEA PARA P10 MONO 20 METROS CIRILO CABOS</xProd><NCM>85044010</NCM><CFOP>5102</CFOP><uCom>UNID</uCom><qCom>2.0000</qCom><vUnCom>185.0000000000</vUnCom><vProd>370.00</vProd><cEANTrib>SEM GTIN</cEANTrib><uTrib>UNID</uTrib><qTrib>2.0000</qTrib><vUnTrib>185.0000000000</vUnTrib><vDesc>38.00</vDesc><indTot>1</indTot></prod><imposto><ICMS><ICMSSN102><orig>0</orig><CSOSN>400</CSOSN></ICMSSN102></ICMS><PIS><PISOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vPIS>0.00</vPIS></PISOutr></PIS><COFINS><COFINSOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vCOFINS>0.00</vCOFINS></COFINSOutr></COFINS></imposto></det><det nItem="4"><prod><cProd>128</cProd><cEAN>SEM GTIN</cEAN><xProd>CABO DE AUDIO P10 X P10 MONO BLINDADO 5 METROS</xProd><NCM>85044010</NCM><CFOP>5102</CFOP><uCom>UNID</uCom><qCom>2.0000</qCom><vUnCom>18.0000000000</vUnCom><vProd>36.00</vProd><cEANTrib>SEM GTIN</cEANTrib><uTrib>UNID</uTrib><qTrib>2.0000</qTrib><vUnTrib>18.0000000000</vUnTrib><indTot>1</indTot></prod><imposto><ICMS><ICMSSN102><orig>0</orig><CSOSN>400</CSOSN></ICMSSN102></ICMS><PIS><PISOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vPIS>0.00</vPIS></PISOutr></PIS><COFINS><COFINSOutr><CST>49</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vCOFINS>0.00</vCOFINS></COFINSOutr></COFINS></imposto></det><total><ICMSTot><vBC>0.00</vBC><vICMS>0.00</vICMS><vICMSDeson>0.00</vICMSDeson><vFCP>0.00</vFCP><vBCST>0.00</vBCST><vST>0.00</vST><vFCPST>0.00</vFCPST><vFCPSTRet>0.00</vFCPSTRet><vProd>1238.00</vProd><vFrete>0.00</vFrete><vSeg>0.00</vSeg><vDesc>38.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vIPIDevol>0.00</vIPIDevol><vPIS>0.00</vPIS><vCOFINS>0.00</vCOFINS><vOutro>0.00</vOutro><vNF>1200.00</vNF></ICMSTot></total><transp><modFrete>9</modFrete></transp><pag><detPag><indPag>0</indPag><tPag>17</tPag><vPag>1200.00</vPag></detPag><vTroco>0.00</vTroco></pag><infRespTec><CNPJ>47506306000188</CNPJ><xContato>Guara Dev</xContato><email>admin@guaradev.com</email><fone>5566999638922</fone></infRespTec></infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod><Reference URI="#NFe51250447506306000188550000000002481000020236"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod><DigestValue>zg1YG83ygaaiUoxOpp2u445Jff4=</DigestValue></Reference></SignedInfo><SignatureValue>0jE/ZcdB7pv9hEIyoUn9qTpg7wXuRGMQAei9/2OMXL0alrM1XHoPyaEEwJRGxzVFf4GMlJsLKvloFkLJrNLDBYv0cSXm2dn2y5CCrCE6xI0o0ATLzGdSHHkHPGHqZI22Iajoat1JvxZhyIBlu+uOpCtseN+uZhxJPjRBoa/ddiNTLcJKrMOfqweMKm63H8qi5pvBxjj8+B4hChTB+Jqfq3+Lq8bP2bOkU1rvbm93qG8A4TJpjbXLp1BEYjd2F1EzfTVri8ywdvrUthLQEbZfLfdb8d7zoTLpH4+ehYIYIyOXjN3fKYhMcsOJhkeRJ3LB0VH/GRs6HI+HhA3HxfJ3Ig==</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></NFe>
|
@@ -38,6 +38,15 @@ NFe.tagIde({
|
|
38
38
|
procEmi: "0",
|
39
39
|
verProc: "4.13"
|
40
40
|
});
|
41
|
+
NFe.tagRefNFe("51250247506306000188550000000002561000002577");
|
42
|
+
NFe.tagRefNF({
|
43
|
+
cUF: 35,
|
44
|
+
AAMM: 1412,
|
45
|
+
CNPJ: '52297850000105',
|
46
|
+
mod: '01',
|
47
|
+
serie: 3,
|
48
|
+
nNF: 587878,
|
49
|
+
});
|
41
50
|
NFe.tagEmit({
|
42
51
|
CNPJ: "47506306000188",
|
43
52
|
xNome: "47.506.306 KALMON VALADAO TAVARES",
|
@@ -140,6 +149,9 @@ NFe.tagProd([
|
|
140
149
|
"indTot": 1
|
141
150
|
}
|
142
151
|
]);
|
152
|
+
NFe.taginfAdProd(0, {
|
153
|
+
infAdProd: "Cagaram tudo aqui vei!"
|
154
|
+
});
|
143
155
|
|
144
156
|
//Setor o imposto de cada produto.
|
145
157
|
[0, 1, 2, 3].map((value, index) => {
|
package/xmlvalid.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"status":0,"signal":null,"output":[null,"","C:\\Users\\NFS-e\\AppData\\Local\\Temp\\xml--22324-BvPn9O3YGQDu-.xml validates\r\n"],"pid":15828,"stdout":"","stderr":"C:\\Users\\NFS-e\\AppData\\Local\\Temp\\xml--22324-BvPn9O3YGQDu-.xml validates\r\n"}
|
package/docs/README.md
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
# 🚀 Bem-vindo à jornada de emissão de NF-e!
|
2
|
-
|
3
|
-
Aqui começa sua aventura pelo mundo fiscal brasileiro!
|
4
|
-
Abaixo você encontrará todos os passos necessários para emitir suas Notas Fiscais Eletrônicas (NF-e) com sucesso e tranquilidade. 💡
|
5
|
-
|
6
|
-
---
|
7
|
-
|
8
|
-
## 📦 Requisitos
|
9
|
-
|
10
|
-
Antes de começar, verifique se seu ambiente está preparado:
|
11
|
-
|
12
|
-
- ✅ **Node.js** `v22.14.0` (versão testada e recomendada)
|
13
|
-
- ✅ **xmllint / libxml**
|
14
|
-
Utilizado para validação e assinatura de XML.
|
15
|
-
📚 Guia de instalação e uso:
|
16
|
-
👉 [Validar XML com xmllint](https://github.com/kalmonv/node-sped-nfe/blob/main/docs/requisitos.md)
|
17
|
-
|
18
|
-
---
|
19
|
-
## 📌 Considerações
|
20
|
-
|
21
|
-
O sistema atualmente segue o layout da **NF-e versão 4.00**, conforme os padrões da SEFAZ.
|
22
|
-
|
23
|
-
Está sendo desenvolvido com estrutura flexível para facilitar futuras adaptações a novas versões da NF-e.
|
24
|
-
|
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=)
|
28
|
-
|
29
|
-
> ⚠️ Manter-se atualizado com esse manual é essencial para garantir conformidade fiscal.
|
30
|
-
|
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
|
-
---
|
46
|
-
|
47
|
-
4. 📬 **Entendendo as respostas da SEFAZ**
|
48
|
-
Interprete corretamente os códigos e status da resposta da SEFAZ.
|
49
|
-
👉 [Tabela de status](https://github.com/kalmonv/node-sped-nfe/blob/main/docs/sefaz_status.md)
|
50
|
-
|
51
|
-
---
|
52
|
-
|
53
|
-
## ✨ Pronto para emitir?
|
54
|
-
|
55
|
-
Com esses passos em mãos, você está oficialmente preparado para integrar a emissão de NF-e na sua aplicação!
|
56
|
-
Se algo não funcionar, revise os links, verifique as dependências e conte com a comunidade. 😉
|
57
|
-
|
58
|
-
---
|
59
|
-
|
60
|
-
💙 Feito com dedicação para desenvolvedores que enfrentam a selva do SPED todos os dias.
|
package/docs/Tools.md
DELETED
@@ -1,105 +0,0 @@
|
|
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
|
-
```
|