node-sped-nfe 1.0.1 → 1.0.3

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.
Files changed (66) hide show
  1. package/README.md +34 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.js +3 -0
  4. package/dist/tsconfig.tsbuildinfo +1 -0
  5. package/dist/utils/eventos.d.ts +4 -0
  6. package/{utils → dist/utils}/eventos.js +30 -32
  7. package/dist/utils/make.d.ts +81 -0
  8. package/dist/utils/make.js +682 -0
  9. package/dist/utils/sefaz.d.ts +1 -0
  10. package/dist/utils/sefaz.js +64 -0
  11. package/dist/utils/tools.d.ts +20 -0
  12. package/dist/utils/tools.js +283 -0
  13. package/dist/utils/xmllint.d.ts +4 -0
  14. package/dist/utils/xmllint.js +234520 -0
  15. package/package.json +24 -8
  16. package/saida.txt +0 -0
  17. package/{index.js → src/index.ts} +4 -5
  18. package/src/utils/eventos.ts +32 -0
  19. package/{utils/make.js → src/utils/make.ts} +77 -93
  20. package/src/utils/schemas/consReciNFe_v4.00.xsd +9 -0
  21. package/src/utils/schemas/consSitNFe_v4.00.xsd +9 -0
  22. package/src/utils/schemas/consStatServ_v4.00.xsd +9 -0
  23. package/src/utils/schemas/enviNFe_v4.00.xsd +9 -0
  24. package/src/utils/schemas/inutNFe_v4.00.xsd +9 -0
  25. package/src/utils/schemas/leiauteConsSitNFe_v4.00.xsd +502 -0
  26. package/src/utils/schemas/leiauteConsStatServ_v4.00.xsd +98 -0
  27. package/src/utils/schemas/leiauteInutNFe_v4.00.xsd +193 -0
  28. package/src/utils/schemas/leiauteNFe_v4.00.xsd +7412 -0
  29. package/src/utils/schemas/nfe_v4.00.xsd +9 -0
  30. package/src/utils/schemas/procInutNFe_v4.00.xsd +9 -0
  31. package/src/utils/schemas/procNFe_v4.00.xsd +9 -0
  32. package/src/utils/schemas/retConsReciNFe_v4.00.xsd +9 -0
  33. package/src/utils/schemas/retConsSitNFe_v4.00.xsd +9 -0
  34. package/src/utils/schemas/retConsStatServ_v4.00.xsd +9 -0
  35. package/src/utils/schemas/retEnviNFe_v4.00.xsd +9 -0
  36. package/src/utils/schemas/retInutNFe_v4.00.xsd +9 -0
  37. package/src/utils/schemas/tiposBasico_v4.00.xsd +598 -0
  38. package/src/utils/schemas/xmldsig-core-schema_v1.01.xsd +98 -0
  39. package/{utils/tools.js → src/utils/tools.ts} +70 -35
  40. package/testes/nfe.js +3 -3
  41. package/tsconfig.json +16 -0
  42. package/testes/nfe.xml +0 -292
  43. package/testes/nfe_guara.xml +0 -1
  44. package/testes/nfe_guara_sign.xml +0 -1
  45. package/testes/nfe_guara_sign_lote.xml +0 -1
  46. package/utils/sefaz.js +0 -84
  47. package/utils/xmllint.js +0 -244195
  48. /package/{utils/schemas → schemas}/consReciNFe_v4.00.xsd +0 -0
  49. /package/{utils/schemas → schemas}/consSitNFe_v4.00.xsd +0 -0
  50. /package/{utils/schemas → schemas}/consStatServ_v4.00.xsd +0 -0
  51. /package/{utils/schemas → schemas}/enviNFe_v4.00.xsd +0 -0
  52. /package/{utils/schemas → schemas}/inutNFe_v4.00.xsd +0 -0
  53. /package/{utils/schemas → schemas}/leiauteConsSitNFe_v4.00.xsd +0 -0
  54. /package/{utils/schemas → schemas}/leiauteConsStatServ_v4.00.xsd +0 -0
  55. /package/{utils/schemas → schemas}/leiauteInutNFe_v4.00.xsd +0 -0
  56. /package/{utils/schemas → schemas}/leiauteNFe_v4.00.xsd +0 -0
  57. /package/{utils/schemas → schemas}/nfe_v4.00.xsd +0 -0
  58. /package/{utils/schemas → schemas}/procInutNFe_v4.00.xsd +0 -0
  59. /package/{utils/schemas → schemas}/procNFe_v4.00.xsd +0 -0
  60. /package/{utils/schemas → schemas}/retConsReciNFe_v4.00.xsd +0 -0
  61. /package/{utils/schemas → schemas}/retConsSitNFe_v4.00.xsd +0 -0
  62. /package/{utils/schemas → schemas}/retConsStatServ_v4.00.xsd +0 -0
  63. /package/{utils/schemas → schemas}/retEnviNFe_v4.00.xsd +0 -0
  64. /package/{utils/schemas → schemas}/retInutNFe_v4.00.xsd +0 -0
  65. /package/{utils/schemas → schemas}/tiposBasico_v4.00.xsd +0 -0
  66. /package/{utils/schemas → schemas}/xmldsig-core-schema_v1.01.xsd +0 -0
@@ -0,0 +1,98 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- ***************************************************-->
3
+ <!-- *** Schema específico para assinaturas XML ***-->
4
+ <!-- *** a partir de certificados do padrão (X509) ***-->
5
+ <!-- *** ICP-Brasil - Projeto Nota Fiscal Eletrônica ***-->
6
+ <!-- ***************************************************-->
7
+ <!-- Schema for XML Signatures-->
8
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
9
+ <element name="Signature" type="ds:SignatureType"/>
10
+ <complexType name="SignatureType">
11
+ <sequence>
12
+ <element name="SignedInfo" type="ds:SignedInfoType"/>
13
+ <element name="SignatureValue" type="ds:SignatureValueType"/>
14
+ <element name="KeyInfo" type="ds:KeyInfoType"/>
15
+ </sequence>
16
+ <attribute name="Id" type="ID" use="optional"/>
17
+ </complexType>
18
+ <complexType name="SignatureValueType">
19
+ <simpleContent>
20
+ <extension base="base64Binary">
21
+ <attribute name="Id" type="ID" use="optional"/>
22
+ </extension>
23
+ </simpleContent>
24
+ </complexType>
25
+ <complexType name="SignedInfoType">
26
+ <sequence>
27
+ <element name="CanonicalizationMethod">
28
+ <complexType>
29
+ <attribute name="Algorithm" type="anyURI" use="required" fixed="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
30
+ </complexType>
31
+ </element>
32
+ <element name="SignatureMethod">
33
+ <complexType>
34
+ <attribute name="Algorithm" type="anyURI" use="required" fixed="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
35
+ </complexType>
36
+ </element>
37
+ <element name="Reference" type="ds:ReferenceType"/>
38
+ </sequence>
39
+ <attribute name="Id" type="ID" use="optional"/>
40
+ </complexType>
41
+ <complexType name="ReferenceType">
42
+ <sequence>
43
+ <element name="Transforms" type="ds:TransformsType">
44
+ <!-- Garante a unicidade do atributo -->
45
+ <unique name="unique_Transf_Alg">
46
+ <selector xpath="./*"/>
47
+ <field xpath="@Algorithm"/>
48
+ </unique>
49
+ </element>
50
+ <element name="DigestMethod">
51
+ <complexType>
52
+ <attribute name="Algorithm" type="anyURI" use="required" fixed="http://www.w3.org/2000/09/xmldsig#sha1"/>
53
+ </complexType>
54
+ </element>
55
+ <element name="DigestValue" type="ds:DigestValueType"/>
56
+ </sequence>
57
+ <attribute name="Id" type="ID" use="optional"/>
58
+ <attribute name="URI" use="required">
59
+ <simpleType>
60
+ <restriction base="anyURI">
61
+ <minLength value="2"/>
62
+ </restriction>
63
+ </simpleType>
64
+ </attribute>
65
+ <attribute name="Type" type="anyURI" use="optional"/>
66
+ </complexType>
67
+ <complexType name="TransformsType">
68
+ <sequence>
69
+ <element name="Transform" type="ds:TransformType" minOccurs="2" maxOccurs="2"/>
70
+ </sequence>
71
+ </complexType>
72
+ <complexType name="TransformType">
73
+ <sequence minOccurs="0" maxOccurs="unbounded">
74
+ <element name="XPath" type="string"/>
75
+ </sequence>
76
+ <attribute name="Algorithm" type="ds:TTransformURI" use="required"/>
77
+ </complexType>
78
+ <complexType name="KeyInfoType">
79
+ <sequence>
80
+ <element name="X509Data" type="ds:X509DataType"/>
81
+ </sequence>
82
+ <attribute name="Id" type="ID" use="optional"/>
83
+ </complexType>
84
+ <complexType name="X509DataType">
85
+ <sequence>
86
+ <element name="X509Certificate" type="base64Binary"/>
87
+ </sequence>
88
+ </complexType>
89
+ <simpleType name="DigestValueType">
90
+ <restriction base="base64Binary"/>
91
+ </simpleType>
92
+ <simpleType name="TTransformURI">
93
+ <restriction base="anyURI">
94
+ <enumeration value="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
95
+ <enumeration value="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
96
+ </restriction>
97
+ </simpleType>
98
+ </schema>
@@ -1,48 +1,72 @@
1
1
  import { XMLParser, XMLBuilder, XMLValidator } from "fast-xml-parser";
2
2
  import pem from "pem";
3
3
  import https from "https";
4
- import { spawnSync } from "child_process"
4
+ import { spawnSync, SpawnSyncReturns } from "child_process"
5
5
  import tmp from "tmp"
6
6
  import crypto from "crypto";
7
7
  import { urlServicos } from "./eventos.js"
8
8
  import fs from "fs"
9
+ import path from 'path';
10
+ import { fileURLToPath } from 'url';
9
11
 
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
10
14
 
11
15
  class Tools {
12
- #cert = new Object();
13
- #xmlTools = {
14
- XMLParser: null,
15
- XMLBuilder: null,
16
- }
17
- #pem = null;
18
- #config = null;
16
+ #cert: {
17
+ pfx: string;
18
+ senha: string;
19
+ };
20
+ #xmlTools: {
21
+ XMLBuilder: XMLBuilder;
22
+ XMLParser: XMLParser;
23
+ } = {
24
+ XMLBuilder: {} as XMLBuilder,
25
+ XMLParser: {} as XMLParser
26
+ };
27
+ #pem: {
28
+ key: string;
29
+ cert: string;
30
+ ca: string[]; // <- define que pode ser uma lista de strings
31
+ } = {
32
+ key: "", // A chave privada extraída do PKCS#12, em formato PEM
33
+ cert: "", // O certificado extraído, em formato PEM
34
+ ca: [] // Uma lista de certificados da cadeia (se houver), ou null
35
+ };
36
+ #config: {
37
+ mod: string;
38
+ xmllint: string;
39
+ cUF: string;
40
+ tpAmb: number;
41
+ };
19
42
 
20
- constructor(config = { mod: "", xmllint: 'xmllint' }, certificado = { pfx: "", senha: "" }) {
43
+ constructor(config = { mod: "", xmllint: 'xmllint', cUF: '51', tpAmb: 2 }, certificado = { pfx: "", senha: "" }) {
21
44
  //Configurar certificado
22
45
  this.#config = config;
23
46
  this.#cert = certificado;
24
47
  this.#xmlTools.XMLBuilder = new XMLBuilder({
25
48
  ignoreAttributes: false,
26
49
  attributeNamePrefix: "@",
27
- parseTagValue: false, // Evita conversão automática de valores
28
- parseNodeValue: false, // Mantém valores como strings
29
50
  });
30
51
  this.#xmlTools.XMLParser = new XMLParser({
31
52
  ignoreAttributes: false,
32
53
  attributeNamePrefix: "@",
33
54
  parseTagValue: false, // Evita conversão automática de valores
34
- parseNodeValue: false, // Mantém valores como strings
35
55
  });
36
56
  }
37
57
 
38
- sefazEnviaLote(xml = [], data = { idLote: 1, indSinc: 0, compactar: false }) {
58
+ async teste() {
59
+ return await this.#certTools()
60
+ }
61
+
62
+ sefazEnviaLote(xml: string, data: any = { idLote: 1, indSinc: 0, compactar: false }): Promise<string> {
39
63
  return new Promise(async (resvol, reject) => {
40
64
  if (typeof data.idLote == "undefined") data.idLote = 1;
41
65
  if (typeof data.indSinc == "undefined") data.indSinc = 0;
42
66
  if (typeof data.compactar == "undefined") data.compactar = false;
43
67
 
44
68
  await this.#certTools();
45
- let xmlLote = {
69
+ let jsonXmlLote = {
46
70
  "soap:Envelope": {
47
71
  "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
48
72
  "@xmlns:xsd": "http://www.w3.org/2001/XMLSchema",
@@ -63,7 +87,7 @@ class Tools {
63
87
  }
64
88
  },
65
89
  }
66
- xmlLote = await this.json2xml(xmlLote);
90
+ let xmlLote = await this.json2xml(jsonXmlLote);
67
91
  fs.writeFileSync("testes/nfe_guara_sign_lote.xml", xmlLote, { encoding: "utf8" });
68
92
  try {
69
93
  const req = https.request(urlServicos[`${this.#config.cUF}`][`mod_${this.#config.mod}`].NFeAutorizacao[(this.#config.tpAmb == 1 ? "producao" : "homologacao")], {
@@ -99,13 +123,14 @@ class Tools {
99
123
  })
100
124
  }
101
125
 
102
- async xmlSign(xml, data = {}) {
126
+ async xmlSign(xmlJSON: string, data: any = { tag: "infNFe" }): Promise<string> {
103
127
  return new Promise(async (resvol, reject) => {
104
128
  if (data.tag === undefined) data.tag = "infNFe";
105
129
 
106
130
  //Obter a tag que ira ser assinada
107
- xml = await this.xml2json(xml);
108
- let pem = await this.getCertificado();
131
+ let xml = await this.xml2json(xmlJSON) as any;
132
+ let tempPem = await this.#certTools() as any;
133
+
109
134
  const sign = crypto.createSign('RSA-SHA1'); // Correção: Alterado para RSA-SHA1
110
135
  let signedInfo = {
111
136
  "SignedInfo": {
@@ -141,10 +166,10 @@ class Tools {
141
166
  xml.NFe.Signature = {
142
167
  ...signedInfo,
143
168
  ...{
144
- "SignatureValue": sign.sign(pem.key, 'base64'),
169
+ "SignatureValue": sign.sign(tempPem.key, 'base64'),
145
170
  "KeyInfo": {
146
171
  "X509Data": {
147
- "X509Certificate": pem.cert.replace(/-----BEGIN CERTIFICATE-----/g, '').replace(/-----END CERTIFICATE-----/g, '').replace(/\r\n/g, '')
172
+ "X509Certificate": tempPem.cert.replace(/-----BEGIN CERTIFICATE-----/g, '').replace(/-----END CERTIFICATE-----/g, '').replace(/\r\n/g, '')
148
173
  }
149
174
  },
150
175
  "@xmlns": "http://www.w3.org/2000/09/xmldsig#"
@@ -159,13 +184,13 @@ class Tools {
159
184
  })
160
185
  }
161
186
 
162
- async xml2json(xml) {
187
+ async xml2json(xml: string): Promise<object> {
163
188
  return new Promise((resvol, reject) => {
164
189
  resvol(this.#xmlTools.XMLParser.parse(xml))
165
190
  })
166
191
  }
167
192
 
168
- async json2xml(obj) {
193
+ async json2xml(obj: object): Promise<string> {
169
194
  return new Promise((resvol, reject) => {
170
195
  resvol(this.#xmlTools.XMLBuilder.build(obj))
171
196
  })
@@ -186,7 +211,7 @@ class Tools {
186
211
  if (typeof this.#config.tpAmb == "undefined") throw "sefazStatus({...tpAmb}) -> não definido!";
187
212
  if (typeof this.#config.mod == "undefined") throw "sefazStatus({...mod}) -> não definido!";
188
213
 
189
- let xml = {
214
+ let xmlObj = {
190
215
  "soap:Envelope": {
191
216
  "@xmlns:soap": "http://www.w3.org/2003/05/soap-envelope",
192
217
  "@xmlns:nfe": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4",
@@ -209,7 +234,7 @@ class Tools {
209
234
  ignoreAttributes: false,
210
235
  attributeNamePrefix: "@"
211
236
  });
212
- xml = tempBuild.build(xml);
237
+ let xml = tempBuild.build(xmlObj);
213
238
 
214
239
  const req = https.request(urlServicos[`${this.#config.cUF}`][`mod_${this.#config.mod}`].NfeStatusServico[(this.#config.tpAmb == 1 ? "producao" : "homologacao")], {
215
240
  ...{
@@ -247,29 +272,39 @@ class Tools {
247
272
 
248
273
 
249
274
  //Validar XML da NFe, somente apos assinar
250
- async #xmlValido(xml) {
251
- let xmlFile = tmp.fileSync({ mode: 0o644, prefix: 'xml-', postfix: '.xml' });
252
- fs.writeFileSync(xmlFile.name, xml, { encoding: "utf8" });
253
- let verif = spawnSync(this.#config.xmllint, ['--noout', '--schema', `./utils/schemas/nfe_v4.00.xsd`, xmlFile.name], { encoding: 'utf8' });
275
+ async #xmlValido(xml: string) {
276
+ const xmlFile = tmp.fileSync({ mode: 0o644, prefix: 'xml-', postfix: '.xml' });
277
+ fs.writeFileSync(xmlFile.name, xml, { encoding: 'utf8' });
278
+
279
+ const schemaPath = path.resolve(__dirname, '../../schemas/nfe_v4.00.xsd');
280
+ const verif: SpawnSyncReturns<string> = spawnSync(
281
+ this.#config.xmllint,
282
+ ['--noout', '--schema', schemaPath, xmlFile.name],
283
+ { encoding: 'utf8' }
284
+ );
285
+
254
286
  xmlFile.removeCallback();
255
287
 
256
- if (verif.errno == -4058) {
257
- //xmllint - não instalado ou informado path
258
- throw ("Biblioteca xmllint não encontrado!")
288
+ // Aqui, usamos o operador de encadeamento opcional (?.)
289
+ if (verif.error) {
290
+ throw new Error("Biblioteca xmllint não encontrada!");
259
291
  } else if (!verif.stderr.includes(".xml validates")) {
260
- throw (verif.stderr)
292
+ throw new Error(verif.stderr);
261
293
  }
294
+
262
295
  return 1;
263
296
  }
264
297
 
265
298
 
299
+
266
300
  //Extrair dados do certificado pem
267
- #certTools() {
301
+ #certTools(): Promise<object> {
268
302
  return new Promise(async (resvol, reject) => {
269
- if (this.#pem != null) resvol(this.#pem);
303
+ if (this.#pem.key != "") resvol(this.#pem);
270
304
  pem.readPkcs12(this.#cert.pfx, { p12Password: this.#cert.senha }, (err, myPem) => {
305
+ if (err) return reject(err); // <-- importante!
271
306
  this.#pem = myPem;
272
- resvol(myPem);
307
+ resvol(this.#pem);
273
308
  });
274
309
  })
275
310
  }
package/testes/nfe.js CHANGED
@@ -1,12 +1,12 @@
1
- import { Make, Tools } from "../index.js"
1
+ import { Make, Tools } from "../dist/index.js"
2
2
  import fs from "fs";
3
3
  //let xml = fs.readFileSync("./nfe.xml", { encoding: "utf-8" });
4
4
  //fs.writeFileSync("./nfe.json", JSON.stringify(convert(xml, { format: 'object' })), { encoding: "utf-8" });
5
5
 
6
6
  let myTools = new Tools({ //Configuração de habiente e sistema
7
- mod: 55,
7
+ mod: '55',
8
8
  tpAmb: 2,
9
- cUF: 51,
9
+ cUF: '51',
10
10
  xmllint: `../libxml2-2.9.3-win32-x86_64/bin/xmllint.exe`
11
11
  }, { //Certificado digital
12
12
  pfx: '../certificado.pfx',
package/tsconfig.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "compilerOptions": {
3
+ "outDir": "./dist",
4
+ "declaration": true,
5
+ "declarationDir": "./dist",
6
+ "target": "ES2020",
7
+ "module": "ESNext",
8
+ "moduleResolution": "node",
9
+ "esModuleInterop": true,
10
+ "strict": true,
11
+ "skipLibCheck": true,
12
+ "forceConsistentCasingInFileNames": true
13
+ },
14
+ "include": ["src"],
15
+ "exclude": ["node_modules", "dist"]
16
+ }
package/testes/nfe.xml DELETED
@@ -1,292 +0,0 @@
1
- <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
2
- <infNFe Id="NFe51241047506306000188550000000002471000020235" versao="4.00">
3
- <ide>
4
- <cUF>51</cUF>
5
- <cNF>00002023</cNF>
6
- <natOp>VENDA</natOp>
7
- <mod>55</mod>
8
- <serie>0</serie>
9
- <nNF>247</nNF>
10
- <dhEmi>2024-10-10T18:01:59-04:00</dhEmi>
11
- <tpNF>1</tpNF>
12
- <idDest>1</idDest>
13
- <cMunFG>5106257</cMunFG>
14
- <tpImp>1</tpImp>
15
- <tpEmis>1</tpEmis>
16
- <cDV>5</cDV>
17
- <tpAmb>1</tpAmb>
18
- <finNFe>1</finNFe>
19
- <indFinal>0</indFinal>
20
- <indPres>1</indPres>
21
- <indIntermed>0</indIntermed>
22
- <procEmi>0</procEmi>
23
- <verProc>4.13</verProc>
24
- </ide>
25
- <emit>
26
- <CNPJ>47506306000188</CNPJ>
27
- <xNome>47.506.306 KALMON VALADAO TAVARES</xNome>
28
- <xFant>GUARA DEV</xFant>
29
- <enderEmit>
30
- <xLgr>AV PARA</xLgr>
31
- <nro>138</nro>
32
- <xBairro>UNIÃO</xBairro>
33
- <cMun>5106257</cMun>
34
- <xMun>Nova Xavantina</xMun>
35
- <UF>MT</UF>
36
- <CEP>78690000</CEP>
37
- <cPais>1058</cPais>
38
- <xPais>BRASIL</xPais>
39
- <fone>66981352912</fone>
40
- </enderEmit>
41
- <IE>139551956</IE>
42
- <CRT>1</CRT>
43
- </emit>
44
- <dest>
45
- <CPF>04079907125</CPF>
46
- <xNome>ADELMO CARLOS CIQUEIRA SILVA</xNome>
47
- <enderDest>
48
- <xLgr>RUA DAS SAMAMBAIAS</xLgr>
49
- <nro>144</nro>
50
- <xBairro>PARQUE ELDORADO</xBairro>
51
- <cMun>5107040</cMun>
52
- <xMun>PRIMAVERA DO LESTE</xMun>
53
- <UF>MT</UF>
54
- <CEP>78850000</CEP>
55
- <cPais>1058</cPais>
56
- <xPais>BRASIL</xPais>
57
- </enderDest>
58
- <indIEDest>2</indIEDest>
59
- </dest>
60
- <det nItem="1">
61
- <prod>
62
- <cProd>126</cProd>
63
- <cEAN>SEM GTIN</cEAN>
64
- <xProd>CABOS MICROFONE DMX XR CANON BALANCEADO 20 METROS</xProd>
65
- <NCM>85044010</NCM>
66
- <CFOP>5102</CFOP>
67
- <uCom>UNID</uCom>
68
- <qCom>3.0000</qCom>
69
- <vUnCom>132.0000000000</vUnCom>
70
- <vProd>396.00</vProd>
71
- <cEANTrib>SEM GTIN</cEANTrib>
72
- <uTrib>UNID</uTrib>
73
- <qTrib>3.0000</qTrib>
74
- <vUnTrib>132.0000000000</vUnTrib>
75
- <indTot>1</indTot>
76
- </prod>
77
- <imposto>
78
- <ICMS>
79
- <ICMSSN102>
80
- <orig>0</orig>
81
- <CSOSN>400</CSOSN>
82
- </ICMSSN102>
83
- </ICMS>
84
- <PIS>
85
- <PISOutr>
86
- <CST>49</CST>
87
- <qBCProd>0.0000</qBCProd>
88
- <vAliqProd>0.0000</vAliqProd>
89
- <vPIS>0.00</vPIS>
90
- </PISOutr>
91
- </PIS>
92
- <COFINS>
93
- <COFINSOutr>
94
- <CST>49</CST>
95
- <qBCProd>0.0000</qBCProd>
96
- <vAliqProd>0.0000</vAliqProd>
97
- <vCOFINS>0.00</vCOFINS>
98
- </COFINSOutr>
99
- </COFINS>
100
- </imposto>
101
- </det>
102
- <det nItem="2">
103
- <prod>
104
- <cProd>129</cProd>
105
- <cEAN>SEM GTIN</cEAN>
106
- <xProd>CABO P2 PARA P10 CELULAR MESA DE SOM CAIXA DE SOM 25 METRO</xProd>
107
- <NCM>85044010</NCM>
108
- <CFOP>5102</CFOP>
109
- <uCom>UNID</uCom>
110
- <qCom>2.0000</qCom>
111
- <vUnCom>218.0000000000</vUnCom>
112
- <vProd>436.00</vProd>
113
- <cEANTrib>SEM GTIN</cEANTrib>
114
- <uTrib>UNID</uTrib>
115
- <qTrib>2.0000</qTrib>
116
- <vUnTrib>218.0000000000</vUnTrib>
117
- <indTot>1</indTot>
118
- </prod>
119
- <imposto>
120
- <ICMS>
121
- <ICMSSN102>
122
- <orig>0</orig>
123
- <CSOSN>400</CSOSN>
124
- </ICMSSN102>
125
- </ICMS>
126
- <PIS>
127
- <PISOutr>
128
- <CST>49</CST>
129
- <qBCProd>0.0000</qBCProd>
130
- <vAliqProd>0.0000</vAliqProd>
131
- <vPIS>0.00</vPIS>
132
- </PISOutr>
133
- </PIS>
134
- <COFINS>
135
- <COFINSOutr>
136
- <CST>49</CST>
137
- <qBCProd>0.0000</qBCProd>
138
- <vAliqProd>0.0000</vAliqProd>
139
- <vCOFINS>0.00</vCOFINS>
140
- </COFINSOutr>
141
- </COFINS>
142
- </imposto>
143
- </det>
144
- <det nItem="3">
145
- <prod>
146
- <cProd>127</cProd>
147
- <cEAN>SEM GTIN</cEAN>
148
- <xProd>CABO DE MICROFONE XLR FEMEA PARA P10 MONO 20 METROS CIRILO CABOS</xProd>
149
- <NCM>85044010</NCM>
150
- <CFOP>5102</CFOP>
151
- <uCom>UNID</uCom>
152
- <qCom>2.0000</qCom>
153
- <vUnCom>185.0000000000</vUnCom>
154
- <vProd>370.00</vProd>
155
- <cEANTrib>SEM GTIN</cEANTrib>
156
- <uTrib>UNID</uTrib>
157
- <qTrib>2.0000</qTrib>
158
- <vUnTrib>185.0000000000</vUnTrib>
159
- <vDesc>38.00</vDesc>
160
- <indTot>1</indTot>
161
- </prod>
162
- <imposto>
163
- <ICMS>
164
- <ICMSSN102>
165
- <orig>0</orig>
166
- <CSOSN>400</CSOSN>
167
- </ICMSSN102>
168
- </ICMS>
169
- <PIS>
170
- <PISOutr>
171
- <CST>49</CST>
172
- <qBCProd>0.0000</qBCProd>
173
- <vAliqProd>0.0000</vAliqProd>
174
- <vPIS>0.00</vPIS>
175
- </PISOutr>
176
- </PIS>
177
- <COFINS>
178
- <COFINSOutr>
179
- <CST>49</CST>
180
- <qBCProd>0.0000</qBCProd>
181
- <vAliqProd>0.0000</vAliqProd>
182
- <vCOFINS>0.00</vCOFINS>
183
- </COFINSOutr>
184
- </COFINS>
185
- </imposto>
186
- </det>
187
- <det nItem="4">
188
- <prod>
189
- <cProd>128</cProd>
190
- <cEAN>SEM GTIN</cEAN>
191
- <xProd>CABO DE AUDIO P10 X P10 MONO BLINDADO 5 METROS</xProd>
192
- <NCM>85044010</NCM>
193
- <CFOP>5102</CFOP>
194
- <uCom>UNID</uCom>
195
- <qCom>2.0000</qCom>
196
- <vUnCom>18.0000000000</vUnCom>
197
- <vProd>36.00</vProd>
198
- <cEANTrib>SEM GTIN</cEANTrib>
199
- <uTrib>UNID</uTrib>
200
- <qTrib>2.0000</qTrib>
201
- <vUnTrib>18.0000000000</vUnTrib>
202
- <indTot>1</indTot>
203
- </prod>
204
- <imposto>
205
- <ICMS>
206
- <ICMSSN102>
207
- <orig>0</orig>
208
- <CSOSN>400</CSOSN>
209
- </ICMSSN102>
210
- </ICMS>
211
- <PIS>
212
- <PISOutr>
213
- <CST>49</CST>
214
- <qBCProd>0.0000</qBCProd>
215
- <vAliqProd>0.0000</vAliqProd>
216
- <vPIS>0.00</vPIS>
217
- </PISOutr>
218
- </PIS>
219
- <COFINS>
220
- <COFINSOutr>
221
- <CST>49</CST>
222
- <qBCProd>0.0000</qBCProd>
223
- <vAliqProd>0.0000</vAliqProd>
224
- <vCOFINS>0.00</vCOFINS>
225
- </COFINSOutr>
226
- </COFINS>
227
- </imposto>
228
- </det>
229
- <total>
230
- <ICMSTot>
231
- <vBC>0.00</vBC>
232
- <vICMS>0.00</vICMS>
233
- <vICMSDeson>0.00</vICMSDeson>
234
- <vFCP>0.00</vFCP>
235
- <vBCST>0.00</vBCST>
236
- <vST>0.00</vST>
237
- <vFCPST>0.00</vFCPST>
238
- <vFCPSTRet>0.00</vFCPSTRet>
239
- <vProd>1238.00</vProd>
240
- <vFrete>0.00</vFrete>
241
- <vSeg>0.00</vSeg>
242
- <vDesc>38.00</vDesc>
243
- <vII>0.00</vII>
244
- <vIPI>0.00</vIPI>
245
- <vIPIDevol>0.00</vIPIDevol>
246
- <vPIS>0.00</vPIS>
247
- <vCOFINS>0.00</vCOFINS>
248
- <vOutro>0.00</vOutro>
249
- <vNF>1200.00</vNF>
250
- </ICMSTot>
251
- </total>
252
- <transp>
253
- <modFrete>9</modFrete>
254
- </transp>
255
- <pag>
256
- <detPag>
257
- <indPag>0</indPag>
258
- <tPag>17</tPag>
259
- <vPag>1200.00</vPag>
260
- </detPag>
261
- <vTroco>0.00</vTroco>
262
- </pag>
263
- <infRespTec>
264
- <CNPJ>47506306000188</CNPJ>
265
- <xContato>Guara Dev</xContato>
266
- <email>admin@guaradev.com</email>
267
- <fone>5566999638922</fone>
268
- </infRespTec>
269
- </infNFe>
270
- <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
271
- <SignedInfo>
272
- <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
273
- <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
274
- <Reference URI="#NFe51241047506306000188550000000002471000020235">
275
- <Transforms>
276
- <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
277
- <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
278
- </Transforms>
279
- <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
280
- <DigestValue>UMtSWs+6VuIxSnH1D2y0kKsJXT0=</DigestValue>
281
- </Reference>
282
- </SignedInfo>
283
- <SignatureValue>
284
- fA+SNJrYc+MOBv8OlZP4ZyovtIs+/1Wb0fFI8MAygkRCxZopNIaobzDBXr5POCHmApx34CErdhdwru1jVCSFHFNaF71qevrz5VPS5RNXW/Hk3ros8f6a+ghkC++PM1ufPivDVeHJCTb1htia4wRo7jChRTinswTSpQxJP7hb7IfG53fw8o38QzebN4ny0h/oO7Aq0wOAtC5VOQBEzH+/Gkg0He/u6CKPXhRNoiaoOIZ8q1LHemJElr4FsbZJLp1PvyEwcTVt/EFtXIVKQ+rACCvnoEpv56IprJROPc/3HWPLSBiKLqQ1faz3o4u1jMzGSQOE5kyQZ34GiQEmZg3q6A==</SignatureValue>
285
- <KeyInfo>
286
- <X509Data>
287
- <X509Certificate>
288
- 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</X509Certificate>
289
- </X509Data>
290
- </KeyInfo>
291
- </Signature>
292
- </NFe>
@@ -1 +0,0 @@
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-04T21:47:27-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></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></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></NFe>