node-sped-nfe 1.0.1 → 1.0.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.
Files changed (49) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.js +3 -0
  3. package/dist/utils/eventos.d.ts +4 -0
  4. package/{utils → dist/utils}/eventos.js +30 -32
  5. package/dist/utils/make.d.ts +81 -0
  6. package/dist/utils/make.js +682 -0
  7. package/dist/utils/sefaz.d.ts +1 -0
  8. package/dist/utils/sefaz.js +64 -0
  9. package/dist/utils/tools.d.ts +23 -0
  10. package/dist/utils/tools.js +269 -0
  11. package/dist/utils/xmllint.d.ts +4 -0
  12. package/dist/utils/xmllint.js +234520 -0
  13. package/package.json +21 -8
  14. package/saida.txt +4 -0
  15. package/src/index.ts +4 -0
  16. package/src/utils/eventos.ts +32 -0
  17. package/{utils/make.js → src/utils/make.ts} +77 -93
  18. package/{utils/tools.js → src/utils/tools.ts} +46 -30
  19. package/tsconfig.json +16 -0
  20. package/index.js +0 -5
  21. package/testes/assinar.js +0 -16
  22. package/testes/nfe.js +0 -166
  23. package/testes/nfe.json +0 -194
  24. package/testes/nfe.xml +0 -292
  25. package/testes/nfe_guara.xml +0 -1
  26. package/testes/nfe_guara_sign.xml +0 -1
  27. package/testes/nfe_guara_sign_lote.xml +0 -1
  28. package/testes/nfe_teste.json +0 -45
  29. package/utils/sefaz.js +0 -84
  30. package/utils/xmllint.js +0 -244195
  31. /package/{utils → src/utils}/schemas/consReciNFe_v4.00.xsd +0 -0
  32. /package/{utils → src/utils}/schemas/consSitNFe_v4.00.xsd +0 -0
  33. /package/{utils → src/utils}/schemas/consStatServ_v4.00.xsd +0 -0
  34. /package/{utils → src/utils}/schemas/enviNFe_v4.00.xsd +0 -0
  35. /package/{utils → src/utils}/schemas/inutNFe_v4.00.xsd +0 -0
  36. /package/{utils → src/utils}/schemas/leiauteConsSitNFe_v4.00.xsd +0 -0
  37. /package/{utils → src/utils}/schemas/leiauteConsStatServ_v4.00.xsd +0 -0
  38. /package/{utils → src/utils}/schemas/leiauteInutNFe_v4.00.xsd +0 -0
  39. /package/{utils → src/utils}/schemas/leiauteNFe_v4.00.xsd +0 -0
  40. /package/{utils → src/utils}/schemas/nfe_v4.00.xsd +0 -0
  41. /package/{utils → src/utils}/schemas/procInutNFe_v4.00.xsd +0 -0
  42. /package/{utils → src/utils}/schemas/procNFe_v4.00.xsd +0 -0
  43. /package/{utils → src/utils}/schemas/retConsReciNFe_v4.00.xsd +0 -0
  44. /package/{utils → src/utils}/schemas/retConsSitNFe_v4.00.xsd +0 -0
  45. /package/{utils → src/utils}/schemas/retConsStatServ_v4.00.xsd +0 -0
  46. /package/{utils → src/utils}/schemas/retEnviNFe_v4.00.xsd +0 -0
  47. /package/{utils → src/utils}/schemas/retInutNFe_v4.00.xsd +0 -0
  48. /package/{utils → src/utils}/schemas/tiposBasico_v4.00.xsd +0 -0
  49. /package/{utils → src/utils}/schemas/xmldsig-core-schema_v1.01.xsd +0 -0
@@ -1,7 +1,7 @@
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"
@@ -9,40 +9,48 @@ import fs from "fs"
9
9
 
10
10
 
11
11
  class Tools {
12
- #cert = new Object();
13
- #xmlTools = {
14
- XMLParser: null,
15
- XMLBuilder: null,
16
- }
17
- #pem = null;
18
- #config = null;
12
+ #cert: {
13
+ pfx: string;
14
+ senha: string;
15
+ };
16
+ #xmlTools: {
17
+ XMLBuilder: XMLBuilder;
18
+ XMLParser: XMLParser;
19
+ } = {
20
+ XMLBuilder: {} as XMLBuilder,
21
+ XMLParser: {} as XMLParser
22
+ };
23
+ #pem: Record<string, any> = {};
24
+ #config: {
25
+ mod: string;
26
+ xmllint: string;
27
+ cUF: string;
28
+ tpAmb: number;
29
+ };
19
30
 
20
- constructor(config = { mod: "", xmllint: 'xmllint' }, certificado = { pfx: "", senha: "" }) {
31
+ constructor(config = { mod: "", xmllint: 'xmllint', cUF: '51', tpAmb: 2 }, certificado = { pfx: "", senha: "" }) {
21
32
  //Configurar certificado
22
33
  this.#config = config;
23
34
  this.#cert = certificado;
24
35
  this.#xmlTools.XMLBuilder = new XMLBuilder({
25
36
  ignoreAttributes: false,
26
37
  attributeNamePrefix: "@",
27
- parseTagValue: false, // Evita conversão automática de valores
28
- parseNodeValue: false, // Mantém valores como strings
29
38
  });
30
39
  this.#xmlTools.XMLParser = new XMLParser({
31
40
  ignoreAttributes: false,
32
41
  attributeNamePrefix: "@",
33
42
  parseTagValue: false, // Evita conversão automática de valores
34
- parseNodeValue: false, // Mantém valores como strings
35
43
  });
36
44
  }
37
45
 
38
- sefazEnviaLote(xml = [], data = { idLote: 1, indSinc: 0, compactar: false }) {
46
+ sefazEnviaLote(xml: string, data = { idLote: 1, indSinc: 0, compactar: false }) {
39
47
  return new Promise(async (resvol, reject) => {
40
48
  if (typeof data.idLote == "undefined") data.idLote = 1;
41
49
  if (typeof data.indSinc == "undefined") data.indSinc = 0;
42
50
  if (typeof data.compactar == "undefined") data.compactar = false;
43
51
 
44
52
  await this.#certTools();
45
- let xmlLote = {
53
+ let jsonXmlLote = {
46
54
  "soap:Envelope": {
47
55
  "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
48
56
  "@xmlns:xsd": "http://www.w3.org/2001/XMLSchema",
@@ -63,7 +71,7 @@ class Tools {
63
71
  }
64
72
  },
65
73
  }
66
- xmlLote = await this.json2xml(xmlLote);
74
+ let xmlLote = await this.json2xml(jsonXmlLote);
67
75
  fs.writeFileSync("testes/nfe_guara_sign_lote.xml", xmlLote, { encoding: "utf8" });
68
76
  try {
69
77
  const req = https.request(urlServicos[`${this.#config.cUF}`][`mod_${this.#config.mod}`].NFeAutorizacao[(this.#config.tpAmb == 1 ? "producao" : "homologacao")], {
@@ -99,13 +107,13 @@ class Tools {
99
107
  })
100
108
  }
101
109
 
102
- async xmlSign(xml, data = {}) {
110
+ async xmlSign(xmlJSON: string, data: any) {
103
111
  return new Promise(async (resvol, reject) => {
104
112
  if (data.tag === undefined) data.tag = "infNFe";
105
113
 
106
114
  //Obter a tag que ira ser assinada
107
- xml = await this.xml2json(xml);
108
- let pem = await this.getCertificado();
115
+ let xml = await this.xml2json(xmlJSON) as any;
116
+ let pem = await this.getCertificado() as { key: string; cert: string };
109
117
  const sign = crypto.createSign('RSA-SHA1'); // Correção: Alterado para RSA-SHA1
110
118
  let signedInfo = {
111
119
  "SignedInfo": {
@@ -159,13 +167,13 @@ class Tools {
159
167
  })
160
168
  }
161
169
 
162
- async xml2json(xml) {
170
+ async xml2json(xml: string): Promise<object> {
163
171
  return new Promise((resvol, reject) => {
164
172
  resvol(this.#xmlTools.XMLParser.parse(xml))
165
173
  })
166
174
  }
167
175
 
168
- async json2xml(obj) {
176
+ async json2xml(obj: object): Promise<string> {
169
177
  return new Promise((resvol, reject) => {
170
178
  resvol(this.#xmlTools.XMLBuilder.build(obj))
171
179
  })
@@ -186,7 +194,7 @@ class Tools {
186
194
  if (typeof this.#config.tpAmb == "undefined") throw "sefazStatus({...tpAmb}) -> não definido!";
187
195
  if (typeof this.#config.mod == "undefined") throw "sefazStatus({...mod}) -> não definido!";
188
196
 
189
- let xml = {
197
+ let xmlObj = {
190
198
  "soap:Envelope": {
191
199
  "@xmlns:soap": "http://www.w3.org/2003/05/soap-envelope",
192
200
  "@xmlns:nfe": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4",
@@ -209,7 +217,7 @@ class Tools {
209
217
  ignoreAttributes: false,
210
218
  attributeNamePrefix: "@"
211
219
  });
212
- xml = tempBuild.build(xml);
220
+ let xml = tempBuild.build(xmlObj);
213
221
 
214
222
  const req = https.request(urlServicos[`${this.#config.cUF}`][`mod_${this.#config.mod}`].NfeStatusServico[(this.#config.tpAmb == 1 ? "producao" : "homologacao")], {
215
223
  ...{
@@ -247,22 +255,30 @@ class Tools {
247
255
 
248
256
 
249
257
  //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' });
258
+ async #xmlValido(xml: string) {
259
+ const xmlFile = tmp.fileSync({ mode: 0o644, prefix: 'xml-', postfix: '.xml' });
260
+ fs.writeFileSync(xmlFile.name, xml, { encoding: 'utf8' });
261
+
262
+ const verif: SpawnSyncReturns<string> = spawnSync(
263
+ this.#config.xmllint,
264
+ ['--noout', '--schema', './utils/schemas/nfe_v4.00.xsd', xmlFile.name],
265
+ { encoding: 'utf8' }
266
+ );
267
+
254
268
  xmlFile.removeCallback();
255
269
 
256
- if (verif.errno == -4058) {
257
- //xmllint - não instalado ou informado path
258
- throw ("Biblioteca xmllint não encontrado!")
270
+ // Aqui, usamos o operador de encadeamento opcional (?.)
271
+ if (verif.error) {
272
+ throw new Error("Biblioteca xmllint não encontrada!");
259
273
  } else if (!verif.stderr.includes(".xml validates")) {
260
- throw (verif.stderr)
274
+ throw new Error(verif.stderr);
261
275
  }
276
+
262
277
  return 1;
263
278
  }
264
279
 
265
280
 
281
+
266
282
  //Extrair dados do certificado pem
267
283
  #certTools() {
268
284
  return new Promise(async (resvol, reject) => {
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/index.js DELETED
@@ -1,5 +0,0 @@
1
- import { Tools } from "./utils/tools.js"
2
- import { Make } from "./utils/make.js"
3
-
4
- export { Make, Tools }
5
- export default { Make, Tools }
package/testes/assinar.js DELETED
@@ -1,16 +0,0 @@
1
- import SefazService from "../utils/sefaz.js";
2
- const baseURL = DISTRIBUICAO[opts.tpAmb]
3
- const options = {
4
- method: 'POST',
5
- data: data,
6
- }
7
- const client = new SefazService({
8
- baseURL: baseURL,
9
- ca: CA,
10
- cert: opts.cert,
11
- key: opts.key,
12
- requestOptions: opts.requestOptions,
13
- httpsOptions: opts.httpsOptions,
14
- })
15
-
16
- const retorno = await client.request(options)
package/testes/nfe.js DELETED
@@ -1,166 +0,0 @@
1
- import { Make, Tools } from "../index.js"
2
- import fs from "fs";
3
- //let xml = fs.readFileSync("./nfe.xml", { encoding: "utf-8" });
4
- //fs.writeFileSync("./nfe.json", JSON.stringify(convert(xml, { format: 'object' })), { encoding: "utf-8" });
5
-
6
- let myTools = new Tools({ //Configuração de habiente e sistema
7
- mod: 55,
8
- tpAmb: 2,
9
- cUF: 51,
10
- xmllint: `../libxml2-2.9.3-win32-x86_64/bin/xmllint.exe`
11
- }, { //Certificado digital
12
- pfx: '../certificado.pfx',
13
- senha: fs.readFileSync('../senha.txt', { encoding: "utf8" }),
14
- });
15
-
16
- let NFe = new Make();
17
- NFe.tagInfNFe({ Id: null, versao: '4.00' });
18
- NFe.tagIde({
19
- cUF: "51",
20
- cNF: "00002023",
21
- natOp: "VENDA",
22
- mod: "55",
23
- serie: "0",
24
- nNF: "248",
25
- dhEmi: NFe.formatData(),
26
- tpNF: "1",
27
- idDest: "1",
28
- cMunFG: "5106257",
29
- tpImp: "1",
30
- tpEmis: "1",
31
- cDV: "1",
32
- tpAmb: "2",
33
- finNFe: "1",
34
- indFinal: "0",
35
- indPres: "1",
36
- indIntermed: "0",
37
- procEmi: "0",
38
- verProc: "4.13"
39
- });
40
- NFe.tagEmit({
41
- CNPJ: "47506306000188",
42
- xNome: "47.506.306 KALMON VALADAO TAVARES",
43
- xFant: "GUARA DEV",
44
- IE: "139551956",
45
- CRT: "1"
46
- });
47
- NFe.tagEnderEmit({
48
- xLgr: "AV PARA",
49
- nro: "138",
50
- xBairro: "UNIAO",
51
- cMun: "5106257",
52
- xMun: "Nova Xavantina",
53
- UF: "MT",
54
- CEP: "78690000",
55
- cPais: "1058",
56
- xPais: "BRASIL",
57
- fone: "66981352912"
58
- });
59
- NFe.tagDest({
60
- CPF: "04079907125",
61
- xNome: "ADELMO CARLOS CIQUEIRA SILVA",
62
- indIEDest: "2",
63
- });
64
- NFe.tagEnderDest({
65
- xLgr: "RUA DAS SAMAMBAIAS",
66
- nro: "144",
67
- xBairro: "PARQUE ELDORADO",
68
- cMun: "5107040",
69
- xMun: "PRIMAVERA DO LESTE",
70
- UF: "MT",
71
- CEP: "78850000",
72
- cPais: "1058",
73
- xPais: "BRASIL"
74
- });
75
- NFe.tagProd([
76
- {
77
- cProd: "126",
78
- cEAN: "SEM GTIN",
79
- xProd: "CABOS MICROFONE DMX XR CANON BALANCEADO 20 METROS",
80
- NCM: "85044010",
81
- CFOP: "5102",
82
- uCom: "UNID",
83
- qCom: "3.0000",
84
- vUnCom: "132.0000000000",
85
- vProd: "396.00",
86
- cEANTrib: "SEM GTIN",
87
- uTrib: "UNID",
88
- qTrib: "3.0000",
89
- vUnTrib: "132.0000000000",
90
- indTot: "1"
91
- },
92
- {
93
- cProd: "129",
94
- cEAN: "SEM GTIN",
95
- xProd: "CABO P2 PARA P10 CELULAR MESA DE SOM CAIXA DE SOM 25 METRO",
96
- NCM: "85044010",
97
- CFOP: "5102",
98
- uCom: "UNID",
99
- qCom: "2.0000",
100
- vUnCom: "218.0000000000",
101
- vProd: "436.00",
102
- cEANTrib: "SEM GTIN",
103
- uTrib: "UNID",
104
- qTrib: "2.0000",
105
- vUnTrib: "218.0000000000",
106
- indTot: "1",
107
- },
108
- {
109
- "cProd": 127,
110
- "cEAN": "SEM GTIN",
111
- "xProd": "CABO DE MICROFONE XLR FEMEA PARA P10 MONO 20 METROS CIRILO CABOS",
112
- "NCM": 85044010,
113
- "CFOP": 5102,
114
- "uCom": "UNID",
115
- "qCom": 2,
116
- "vUnCom": 185,
117
- "vProd": 370,
118
- "cEANTrib": "SEM GTIN",
119
- "uTrib": "UNID",
120
- "qTrib": 2,
121
- "vUnTrib": 185,
122
- "vDesc": 38,
123
- "indTot": 1
124
- },
125
- {
126
- "cProd": 128,
127
- "cEAN": "SEM GTIN",
128
- "xProd": "CABO DE AUDIO P10 X P10 MONO BLINDADO 5 METROS",
129
- "NCM": 85044010,
130
- "CFOP": 5102,
131
- "uCom": "UNID",
132
- "qCom": 2,
133
- "vUnCom": 18,
134
- "vProd": 36,
135
- "cEANTrib": "SEM GTIN",
136
- "uTrib": "UNID",
137
- "qTrib": 2,
138
- "vUnTrib": 18,
139
- "indTot": 1
140
- }
141
- ]);
142
- [0, 1, 2, 3].map((value, index) => {
143
- NFe.tagProdICMSSN(index, { orig: "0", CSOSN: "400" })
144
- NFe.tagProdPIS(index, { CST: "49", qBCProd: "0.0000", vAliqProd: "0.0000", vPIS: "0.00" })
145
- NFe.tagProdCOFINS(index, { CST: "49", qBCProd: "0.0000", vAliqProd: "0.0000", vCOFINS: "0.00" })
146
- });
147
- NFe.tagICMSTot();
148
- NFe.tagTransp({ modFrete: 9 });
149
- NFe.tagDetPag([{ indPag: 0, tPag: 17, vPag: "1200.00" }]);
150
- NFe.tagTroco("0.00");
151
- NFe.tagInfRespTec({ CNPJ: "47506306000188", xContato: "Guara Dev", email: "admin@guaradev.com", fone: "5566999638922" })
152
- fs.writeFileSync("nfe.xml", NFe.xml(), { encoding: "utf-8" });
153
- myTools.xmlSign(NFe.xml()).then(async xmlSign => {
154
- fs.writeFileSync("nfe_sign.xml", xmlSign, { encoding: "utf-8" });
155
- myTools.sefazEnviaLote(xmlSign, { indSinc: 1 }).then(res => {
156
- console.log(res)
157
- })
158
- }).catch(err => {
159
- console.log(err)
160
- })
161
-
162
- /*
163
- myTools.sefazStatus().then(res => {
164
- console.log(res)
165
- });
166
- */
package/testes/nfe.json DELETED
@@ -1,194 +0,0 @@
1
- {
2
- "NFe": {
3
- "@xmlns": "http://www.portalfiscal.inf.br/nfe",
4
- "infNFe": {
5
- "@Id": "NFe51241047506306000188550000000002471000020235",
6
- "@versao": "4.00",
7
- "ide": {
8
- "cUF": "51",
9
- "cNF": "00002023",
10
- "natOp": "VENDA",
11
- "mod": "55",
12
- "serie": "0",
13
- "nNF": "247",
14
- "dhEmi": "2024-10-10T18:01:59-04:00",
15
- "tpNF": "1",
16
- "idDest": "1",
17
- "cMunFG": "5106257",
18
- "tpImp": "1",
19
- "tpEmis": "1",
20
- "cDV": "5",
21
- "tpAmb": "1",
22
- "finNFe": "1",
23
- "indFinal": "0",
24
- "indPres": "1",
25
- "indIntermed": "0",
26
- "procEmi": "0",
27
- "verProc": "4.13"
28
- },
29
- "emit": {
30
- "CNPJ": "47506306000188",
31
- "xNome": "47.506.306 KALMON VALADAO TAVARES",
32
- "xFant": "GUARA DEV",
33
- "enderEmit": {
34
- "xLgr": "AV PARA",
35
- "nro": "138",
36
- "xBairro": "UNIÃO",
37
- "cMun": "5106257",
38
- "xMun": "Nova Xavantina",
39
- "UF": "MT",
40
- "CEP": "78690000",
41
- "cPais": "1058",
42
- "xPais": "BRASIL",
43
- "fone": "66981352912"
44
- },
45
- "IE": "139551956",
46
- "CRT": "1"
47
- },
48
- "dest": {
49
- "CPF": "04079907125",
50
- "xNome": "ADELMO CARLOS CIQUEIRA SILVA",
51
- "enderDest": {
52
- "xLgr": "RUA DAS SAMAMBAIAS",
53
- "nro": "144",
54
- "xBairro": "PARQUE ELDORADO",
55
- "cMun": "5107040",
56
- "xMun": "PRIMAVERA DO LESTE",
57
- "UF": "MT",
58
- "CEP": "78850000",
59
- "cPais": "1058",
60
- "xPais": "BRASIL"
61
- },
62
- "indIEDest": "2"
63
- },
64
- "det": [
65
- {
66
- "@nItem": "1",
67
- "prod": {
68
- "cProd": "126",
69
- "cEAN": "SEM GTIN",
70
- "xProd": "CABOS MICROFONE DMX XR CANON BALANCEADO 20 METROS",
71
- "NCM": "85044010",
72
- "CFOP": "5102",
73
- "uCom": "UNID",
74
- "qCom": "3.0000",
75
- "vUnCom": "132.0000000000",
76
- "vProd": "396.00",
77
- "cEANTrib": "SEM GTIN",
78
- "uTrib": "UNID",
79
- "qTrib": "3.0000",
80
- "vUnTrib": "132.0000000000",
81
- "indTot": "1"
82
- },
83
- "imposto": {
84
- "ICMS": {
85
- "ICMSSN102": {
86
- "orig": "0",
87
- "CSOSN": "400"
88
- }
89
- },
90
- "PIS": {
91
- "PISOutr": {
92
- "CST": "49",
93
- "qBCProd": "0.0000",
94
- "vAliqProd": "0.0000",
95
- "vPIS": "0.00"
96
- }
97
- },
98
- "COFINS": {
99
- "COFINSOutr": {
100
- "CST": "49",
101
- "qBCProd": "0.0000",
102
- "vAliqProd": "0.0000",
103
- "vCOFINS": "0.00"
104
- }
105
- }
106
- }
107
- },
108
- {
109
- "@nItem": "2",
110
- "prod": {
111
- "cProd": "129",
112
- "cEAN": "SEM GTIN",
113
- "xProd": "CABO P2 PARA P10 CELULAR MESA DE SOM CAIXA DE SOM 25 METRO",
114
- "NCM": "85044010",
115
- "CFOP": "5102",
116
- "uCom": "UNID",
117
- "qCom": "2.0000",
118
- "vUnCom": "218.0000000000",
119
- "vProd": "436.00",
120
- "cEANTrib": "SEM GTIN",
121
- "uTrib": "UNID",
122
- "qTrib": "2.0000",
123
- "vUnTrib": "218.0000000000",
124
- "indTot": "1"
125
- },
126
- "imposto": {
127
- "ICMS": {
128
- "ICMSSN102": {
129
- "orig": "0",
130
- "CSOSN": "400"
131
- }
132
- },
133
- "PIS": {
134
- "PISOutr": {
135
- "CST": "49",
136
- "qBCProd": "0.0000",
137
- "vAliqProd": "0.0000",
138
- "vPIS": "0.00"
139
- }
140
- },
141
- "COFINS": {
142
- "COFINSOutr": {
143
- "CST": "49",
144
- "qBCProd": "0.0000",
145
- "vAliqProd": "0.0000",
146
- "vCOFINS": "0.00"
147
- }
148
- }
149
- }
150
- }
151
- ],
152
- "total": {
153
- "ICMSTot": {
154
- "vBC": "0.00",
155
- "vICMS": "0.00",
156
- "vICMSDeson": "0.00",
157
- "vFCP": "0.00",
158
- "vBCST": "0.00",
159
- "vST": "0.00",
160
- "vFCPST": "0.00",
161
- "vFCPSTRet": "0.00",
162
- "vProd": "1238.00",
163
- "vFrete": "0.00",
164
- "vSeg": "0.00",
165
- "vDesc": "38.00",
166
- "vII": "0.00",
167
- "vIPI": "0.00",
168
- "vIPIDevol": "0.00",
169
- "vPIS": "0.00",
170
- "vCOFINS": "0.00",
171
- "vOutro": "0.00",
172
- "vNF": "1200.00"
173
- }
174
- },
175
- "transp": {
176
- "modFrete": "9"
177
- },
178
- "pag": {
179
- "detPag": {
180
- "indPag": "0",
181
- "tPag": "17",
182
- "vPag": "1200.00"
183
- },
184
- "vTroco": "0.00"
185
- },
186
- "infRespTec": {
187
- "CNPJ": "47506306000188",
188
- "xContato": "Guara Dev",
189
- "email": "admin@guaradev.com",
190
- "fone": "5566999638922"
191
- }
192
- }
193
- }
194
- }