node-sped-nfe 1.0.0 → 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.
- package/README.md +1 -22
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/utils/eventos.d.ts +4 -0
- package/{utils → dist/utils}/eventos.js +30 -32
- package/dist/utils/make.d.ts +81 -0
- package/dist/utils/make.js +682 -0
- package/dist/utils/sefaz.d.ts +1 -0
- package/dist/utils/sefaz.js +64 -0
- package/dist/utils/tools.d.ts +23 -0
- package/dist/utils/tools.js +269 -0
- package/dist/utils/xmllint.d.ts +4 -0
- package/dist/utils/xmllint.js +234520 -0
- package/package.json +24 -7
- package/saida.txt +4 -0
- package/src/index.ts +4 -0
- package/src/utils/eventos.ts +32 -0
- package/{utils/make.js → src/utils/make.ts} +77 -93
- package/{utils/tools.js → src/utils/tools.ts} +46 -30
- package/tsconfig.json +16 -0
- package/index.js +0 -5
- package/testes/assinar.js +0 -16
- package/testes/nfe.js +0 -166
- package/testes/nfe.json +0 -194
- package/testes/nfe.xml +0 -292
- package/testes/nfe_guara.xml +0 -1
- package/testes/nfe_guara_sign.xml +0 -1
- package/testes/nfe_guara_sign_lote.xml +0 -1
- package/testes/nfe_teste.json +0 -45
- package/utils/sefaz.js +0 -84
- package/utils/xmllint.js +0 -244195
- /package/{utils → src/utils}/schemas/consReciNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/consSitNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/consStatServ_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/enviNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/inutNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/leiauteConsSitNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/leiauteConsStatServ_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/leiauteInutNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/leiauteNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/nfe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/procInutNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/procNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/retConsReciNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/retConsSitNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/retConsStatServ_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/retEnviNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/retInutNFe_v4.00.xsd +0 -0
- /package/{utils → src/utils}/schemas/tiposBasico_v4.00.xsd +0 -0
- /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
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
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
|
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(
|
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(
|
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(
|
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
|
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(
|
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
|
-
|
252
|
-
fs.writeFileSync(xmlFile.name, xml, { encoding:
|
253
|
-
|
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
|
-
|
257
|
-
|
258
|
-
throw ("Biblioteca xmllint não
|
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
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
|
-
}
|