node-sped-nfe 1.0.5 → 1.0.7
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/LICENSE.md +188 -0
- package/dist/utils/eventos.d.ts +2 -1
- package/dist/utils/eventos.js +794 -105
- package/dist/utils/extras.d.ts +2 -0
- package/dist/utils/extras.js +58 -0
- package/dist/utils/make.d.ts +1 -1
- package/dist/utils/make.js +36 -12
- package/dist/utils/tools.d.ts +4 -2
- package/dist/utils/tools.js +77 -10
- package/docs/xml.md +81 -81
- package/exemplos/consulta.js +19 -0
- package/exemplos/nfe.js +4 -3
- package/exemplos/status.js +2 -1
- package/package.json +5 -2
- package/src/utils/eventos.ts +800 -106
- package/src/utils/extras.ts +59 -0
- package/src/utils/make.ts +63 -19
- package/src/utils/tools.ts +88 -11
- package/src/utils/schemas/consReciNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/consSitNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/consStatServ_v4.00.xsd +0 -9
- package/src/utils/schemas/enviNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/inutNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/leiauteConsSitNFe_v4.00.xsd +0 -502
- package/src/utils/schemas/leiauteConsStatServ_v4.00.xsd +0 -98
- package/src/utils/schemas/leiauteInutNFe_v4.00.xsd +0 -193
- package/src/utils/schemas/leiauteNFe_v4.00.xsd +0 -7412
- package/src/utils/schemas/nfe_v4.00.xsd +0 -9
- package/src/utils/schemas/procInutNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/procNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/retConsReciNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/retConsSitNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/retConsStatServ_v4.00.xsd +0 -9
- package/src/utils/schemas/retEnviNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/retInutNFe_v4.00.xsd +0 -9
- package/src/utils/schemas/tiposBasico_v4.00.xsd +0 -598
- package/src/utils/schemas/xmldsig-core-schema_v1.01.xsd +0 -98
@@ -0,0 +1,59 @@
|
|
1
|
+
const cUF2UF: any = {
|
2
|
+
"11": "RO",
|
3
|
+
"12": "AC",
|
4
|
+
"13": "AM",
|
5
|
+
"14": "RR",
|
6
|
+
"15": "PA",
|
7
|
+
"16": "AP",
|
8
|
+
"17": "TO",
|
9
|
+
"21": "MA",
|
10
|
+
"22": "PI",
|
11
|
+
"23": "CE",
|
12
|
+
"24": "RN",
|
13
|
+
"25": "PB",
|
14
|
+
"26": "PE",
|
15
|
+
"27": "AL",
|
16
|
+
"28": "SE",
|
17
|
+
"29": "BA",
|
18
|
+
"31": "MG",
|
19
|
+
"32": "ES",
|
20
|
+
"33": "RJ",
|
21
|
+
"35": "SP",
|
22
|
+
"41": "PR",
|
23
|
+
"42": "SC",
|
24
|
+
"43": "RS",
|
25
|
+
"50": "MS",
|
26
|
+
"51": "MT",
|
27
|
+
"52": "GO",
|
28
|
+
"53": "DF"
|
29
|
+
},
|
30
|
+
UF2cUF: any = {
|
31
|
+
"RO": "11",
|
32
|
+
"AC": "12",
|
33
|
+
"AM": "13",
|
34
|
+
"RR": "14",
|
35
|
+
"PA": "15",
|
36
|
+
"AP": "16",
|
37
|
+
"TO": "17",
|
38
|
+
"MA": "21",
|
39
|
+
"PI": "22",
|
40
|
+
"CE": "23",
|
41
|
+
"RN": "24",
|
42
|
+
"PB": "25",
|
43
|
+
"PE": "26",
|
44
|
+
"AL": "27",
|
45
|
+
"SE": "28",
|
46
|
+
"BA": "29",
|
47
|
+
"MG": "31",
|
48
|
+
"ES": "32",
|
49
|
+
"RJ": "33",
|
50
|
+
"SP": "35",
|
51
|
+
"PR": "41",
|
52
|
+
"SC": "42",
|
53
|
+
"RS": "43",
|
54
|
+
"MS": "50",
|
55
|
+
"MT": "51",
|
56
|
+
"GO": "52",
|
57
|
+
"DF": "53"
|
58
|
+
};
|
59
|
+
export { cUF2UF, UF2cUF }
|
package/src/utils/make.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
|
2
2
|
import { XMLParser, XMLBuilder, XMLValidator } from "fast-xml-parser";
|
3
|
-
import {
|
3
|
+
import { urlEventos } from "./eventos.js"
|
4
|
+
import { cUF2UF } from "./extras.js"
|
4
5
|
|
5
6
|
//Classe da nota fiscal
|
6
7
|
class Make {
|
@@ -62,23 +63,38 @@ class Make {
|
|
62
63
|
}
|
63
64
|
|
64
65
|
tagRefNFe(obj: any) {
|
65
|
-
|
66
|
+
if (typeof this.#NFe.infNFe.ide.NFref == "undefined") {
|
67
|
+
this.#NFe.infNFe.ide.NFref = new Array();
|
68
|
+
}
|
69
|
+
this.#NFe.infNFe.ide.NFref.push({ refNFe: obj });
|
66
70
|
}
|
67
71
|
|
68
72
|
tagRefNF(obj: any) {
|
69
|
-
|
73
|
+
if (typeof this.#NFe.infNFe.ide.NFref == "undefined") {
|
74
|
+
this.#NFe.infNFe.ide.NFref = new Array();
|
75
|
+
}
|
76
|
+
this.#NFe.infNFe.ide.NFref.push({ refNF: obj });
|
70
77
|
}
|
71
78
|
|
72
79
|
tagRefNFP(obj: any) {
|
73
|
-
|
80
|
+
if (typeof this.#NFe.infNFe.ide.NFref == "undefined") {
|
81
|
+
this.#NFe.infNFe.ide.NFref = new Array();
|
82
|
+
}
|
83
|
+
this.#NFe.infNFe.ide.NFref.push({ refNFP: obj });
|
74
84
|
}
|
75
85
|
|
76
86
|
tagRefCTe(obj: any) {
|
77
|
-
|
87
|
+
if (typeof this.#NFe.infNFe.ide.NFref == "undefined") {
|
88
|
+
this.#NFe.infNFe.ide.NFref = new Array();
|
89
|
+
}
|
90
|
+
this.#NFe.infNFe.ide.NFref.push({ refCTe: obj });
|
78
91
|
}
|
79
92
|
|
80
93
|
tagRefECF(obj: any) {
|
81
|
-
|
94
|
+
if (typeof this.#NFe.infNFe.ide.NFref == "undefined") {
|
95
|
+
this.#NFe.infNFe.ide.NFref = new Array();
|
96
|
+
}
|
97
|
+
this.#NFe.infNFe.ide.NFref.push({ refECF: obj });
|
82
98
|
}
|
83
99
|
|
84
100
|
tagEmit(obj: any) {
|
@@ -118,18 +134,24 @@ class Make {
|
|
118
134
|
}
|
119
135
|
|
120
136
|
tagRetirada(obj: any) {
|
121
|
-
|
137
|
+
this.#NFe.infNFe.retirada = {};
|
138
|
+
Object.keys(obj).forEach(key => {
|
139
|
+
this.#NFe.infNFe.retirada[key] = obj[key];
|
140
|
+
});
|
122
141
|
}
|
123
142
|
|
124
143
|
tagAutXML(obj: any) {
|
125
|
-
|
144
|
+
if (typeof this.#NFe.infNFe.autXML == "undefined") {
|
145
|
+
this.#NFe.infNFe.autXML = new Array();
|
146
|
+
}
|
147
|
+
this.#NFe.infNFe.autXML.push(obj);
|
126
148
|
}
|
127
149
|
|
128
150
|
//tagprod
|
129
151
|
tagProd(obj: any) {
|
130
152
|
//Abrir tag de imposto
|
131
153
|
for (let cont = 0; cont < obj.length; cont++) {
|
132
|
-
|
154
|
+
|
133
155
|
if (obj[cont]['@nItem'] === undefined) {
|
134
156
|
obj[cont] = { '@nItem': cont + 1, prod: obj[cont], imposto: {} };
|
135
157
|
} else {
|
@@ -138,7 +160,7 @@ class Make {
|
|
138
160
|
}
|
139
161
|
|
140
162
|
//Primeiro item + NFCe + Homologação
|
141
|
-
if(cont==0 && this.#NFe.infNFe.ide.mod == 65 && this.#NFe.infNFe.ide.tpAmb == 2
|
163
|
+
if (cont == 0 && this.#NFe.infNFe.ide.mod == 65 && this.#NFe.infNFe.ide.tpAmb == 2) obj[cont].prod.xProd = "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL";
|
142
164
|
|
143
165
|
obj[cont].prod.qCom = (obj[cont].prod.qCom * 1).toFixed(4)
|
144
166
|
obj[cont].prod.vUnCom = (obj[cont].prod.vUnCom * 1).toFixed(10)
|
@@ -158,8 +180,10 @@ class Make {
|
|
158
180
|
throw "não implementado!";
|
159
181
|
}
|
160
182
|
|
161
|
-
taginfAdProd(obj: any) {
|
162
|
-
|
183
|
+
taginfAdProd(index: any, obj: any) {
|
184
|
+
Object.keys(obj).forEach(key => {
|
185
|
+
this.#NFe.infNFe.det[index][key] = obj[key];
|
186
|
+
});
|
163
187
|
}
|
164
188
|
|
165
189
|
tagCEST(obj: any) {
|
@@ -170,8 +194,26 @@ class Make {
|
|
170
194
|
throw "não implementado!";
|
171
195
|
}
|
172
196
|
|
173
|
-
|
174
|
-
|
197
|
+
tagDI(index: any, obj: any) {
|
198
|
+
if (this.#NFe.infNFe.det[index].DI === undefined) this.#NFe.infNFe.det[index].DI = {};
|
199
|
+
Object.keys(obj).forEach(key => {
|
200
|
+
this.#NFe.infNFe.det[index].DI[key] = obj[key];
|
201
|
+
});
|
202
|
+
|
203
|
+
//Adicionar ao imposto global
|
204
|
+
this.#calICMSTot(obj);
|
205
|
+
}
|
206
|
+
|
207
|
+
tagAdi(index: any, obj: any) {
|
208
|
+
if (this.#NFe.infNFe.det[index].DI === undefined) this.#NFe.infNFe.det[index].DI = {};
|
209
|
+
if (this.#NFe.infNFe.det[index].DI.adi === undefined) this.#NFe.infNFe.det[index].DI.adi = {};
|
210
|
+
|
211
|
+
Object.keys(obj).forEach(key => {
|
212
|
+
this.#NFe.infNFe.det[index].DI.adi[key] = obj[key];
|
213
|
+
});
|
214
|
+
|
215
|
+
//Adicionar ao imposto global
|
216
|
+
this.#calICMSTot(obj);
|
175
217
|
}
|
176
218
|
|
177
219
|
tagDetExport(obj: any) {
|
@@ -593,9 +635,8 @@ class Make {
|
|
593
635
|
throw "Ainda não configurado!";
|
594
636
|
}
|
595
637
|
|
596
|
-
|
638
|
+
//Sistema gera a chave da nota fiscal
|
597
639
|
#gerarChaveNFe() {
|
598
|
-
|
599
640
|
const chaveSemDV =
|
600
641
|
this.#NFe.infNFe.ide.cUF.padStart(2, '0') + // Código da UF (2 dígitos)
|
601
642
|
this.#NFe.infNFe.ide.dhEmi.substring(2, 4) + this.#NFe.infNFe.ide.dhEmi.substring(5, 7) + // Ano e Mês da emissão (AAMM, 4 dígitos)
|
@@ -640,9 +681,11 @@ class Make {
|
|
640
681
|
|
641
682
|
//Adicionar QrCode
|
642
683
|
if (this.#NFe.infNFe.ide.mod == 65) {
|
684
|
+
//Como ja temos cUF, vamos usar o extras.cUF2UF
|
685
|
+
let tempUF = urlEventos(cUF2UF[this.#NFe.infNFe.ide.cUF], this.#NFe.infNFe['@versao']);
|
643
686
|
this.#NFe.infNFeSupl = {
|
644
|
-
qrCode:
|
645
|
-
urlChave:
|
687
|
+
qrCode: tempUF.mod65[this.#NFe.infNFe.ide.tpAmb == 1 ? 'producao' : 'homologacao'].NFeConsultaQR, //Este não e o valor final, vamos utilizar apenas para carregar os dados que vão ser utlizados no make
|
688
|
+
urlChave: tempUF.mod65[this.#NFe.infNFe.ide.tpAmb == 1 ? 'producao' : 'homologacao'].urlChave
|
646
689
|
}
|
647
690
|
}
|
648
691
|
|
@@ -652,7 +695,8 @@ class Make {
|
|
652
695
|
});
|
653
696
|
return tempBuild.build({ NFe: this.#NFe });
|
654
697
|
}
|
655
|
-
|
698
|
+
|
699
|
+
//Obtem os dados de importo e soma no total, utlizado sempre que for setado algum imposto.
|
656
700
|
#calICMSTot(obj: any) {
|
657
701
|
Object.keys(obj).map(key => {
|
658
702
|
if (this.#ICMSTot[key] !== undefined) {
|
package/src/utils/tools.ts
CHANGED
@@ -3,7 +3,7 @@ import https from "https";
|
|
3
3
|
import { spawnSync, SpawnSyncReturns } from "child_process"
|
4
4
|
import tmp from "tmp"
|
5
5
|
import crypto from "crypto";
|
6
|
-
import {
|
6
|
+
import { urlEventos } from "./eventos.js"
|
7
7
|
import fs from "fs"
|
8
8
|
import path from 'path';
|
9
9
|
import { fileURLToPath } from 'url';
|
@@ -38,13 +38,14 @@ class Tools {
|
|
38
38
|
#config: {
|
39
39
|
mod: string;
|
40
40
|
xmllint: string;
|
41
|
-
|
41
|
+
UF: string;
|
42
42
|
tpAmb: number;
|
43
43
|
CSC: string;
|
44
44
|
CSCid: string;
|
45
|
+
versao: string;
|
45
46
|
};
|
46
47
|
|
47
|
-
constructor(config = { mod: "", xmllint: 'xmllint',
|
48
|
+
constructor(config = { mod: "", xmllint: 'xmllint', UF: '', tpAmb: 2, CSC: "", CSCid: "", versao: "4.00" }, certificado = { pfx: "", senha: "" }) {
|
48
49
|
//Configurar certificado
|
49
50
|
this.#config = config;
|
50
51
|
this.#cert = certificado;
|
@@ -89,7 +90,8 @@ class Tools {
|
|
89
90
|
}
|
90
91
|
let xmlLote = await this.json2xml(jsonXmlLote);
|
91
92
|
try {
|
92
|
-
|
93
|
+
let tempUF = urlEventos(this.#config.UF, this.#config.versao);
|
94
|
+
const req = https.request(tempUF[`mod${this.#config.mod}`][(this.#config.tpAmb == 1 ? "producao" : "homologacao")].NFeAutorizacao, {
|
93
95
|
...{
|
94
96
|
method: 'POST',
|
95
97
|
headers: {
|
@@ -181,7 +183,7 @@ class Tools {
|
|
181
183
|
}
|
182
184
|
|
183
185
|
this.json2xml(xml).then(async res => {
|
184
|
-
this.#xmlValido(res,
|
186
|
+
this.#xmlValido(res, `nfe_v${this.#config.versao}`);
|
185
187
|
resvol(res);
|
186
188
|
}).catch(err => {
|
187
189
|
reject(err)
|
@@ -189,7 +191,8 @@ class Tools {
|
|
189
191
|
})
|
190
192
|
}
|
191
193
|
|
192
|
-
|
194
|
+
//Gerar QRCode da NFCe
|
195
|
+
#gerarQRCodeNFCe(NFe: any, versaoQRCode: string = "2", idCSC: string, CSC: string): string {
|
193
196
|
let s = '|',
|
194
197
|
concat,
|
195
198
|
hash;
|
@@ -215,26 +218,99 @@ class Tools {
|
|
215
218
|
})
|
216
219
|
}
|
217
220
|
|
218
|
-
|
221
|
+
//Obter certificado
|
222
|
+
async getCertificado(): Promise<object> {
|
219
223
|
return new Promise(async (resvol, reject) => {
|
220
224
|
this.#certTools().then(resvol).catch(reject)
|
221
225
|
})
|
222
226
|
}
|
223
227
|
|
228
|
+
//Consulta NFe
|
229
|
+
consultarNFe(chNFe: string): Promise<string> {
|
230
|
+
return new Promise(async (resolve, reject) => {
|
231
|
+
if (!chNFe || chNFe.length !== 44) {
|
232
|
+
return reject("consultarNFe(chNFe) -> chave inválida!");
|
233
|
+
}
|
234
|
+
|
235
|
+
if (typeof this.#config.UF === "undefined") throw "consultarNFe({...UF}) -> não definido!";
|
236
|
+
if (typeof this.#config.tpAmb === "undefined") throw "consultarNFe({...tpAmb}) -> não definido!";
|
237
|
+
if (typeof this.#config.mod === "undefined") throw "consultarNFe({...mod}) -> não definido!";
|
238
|
+
|
239
|
+
let consSitNFe = {
|
240
|
+
"@xmlns": "http://www.portalfiscal.inf.br/nfe",
|
241
|
+
"@versao": "4.00",
|
242
|
+
"tpAmb": this.#config.tpAmb,
|
243
|
+
"xServ": "CONSULTAR",
|
244
|
+
"chNFe": chNFe
|
245
|
+
};
|
246
|
+
|
247
|
+
let xmlObj = {
|
248
|
+
"soap:Envelope": {
|
249
|
+
"@xmlns:soap": "http://www.w3.org/2003/05/soap-envelope",
|
250
|
+
"@xmlns:nfe": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4",
|
251
|
+
"soap:Body": {
|
252
|
+
"nfe:nfeDadosMsg": {
|
253
|
+
"consSitNFe": consSitNFe
|
254
|
+
}
|
255
|
+
}
|
256
|
+
}
|
257
|
+
};
|
258
|
+
|
259
|
+
try {
|
260
|
+
const builder = new XMLBuilder({
|
261
|
+
ignoreAttributes: false,
|
262
|
+
attributeNamePrefix: "@"
|
263
|
+
});
|
264
|
+
|
265
|
+
// Validação do XML interno (opcional)
|
266
|
+
this.#xmlValido(builder.build({ consSitNFe }), `consSitNFe_v${this.#config.versao}`);
|
267
|
+
|
268
|
+
const xml = builder.build(xmlObj);
|
269
|
+
|
270
|
+
let tempUF = urlEventos(this.#config.UF, this.#config.versao);
|
271
|
+
|
272
|
+
const url = tempUF[`mod${this.#config.mod}`][(this.#config.tpAmb == 1 ? "producao" : "homologacao")].NFeConsultaProtocolo;
|
273
|
+
|
274
|
+
const req = https.request(url, {
|
275
|
+
method: 'POST',
|
276
|
+
headers: {
|
277
|
+
'Content-Type': 'application/soap+xml; charset=utf-8',
|
278
|
+
'Content-Length': xml.length,
|
279
|
+
},
|
280
|
+
rejectUnauthorized: false,
|
281
|
+
...await this.#certTools()
|
282
|
+
}, (res) => {
|
283
|
+
let data = '';
|
284
|
+
res.on('data', (chunk) => data += chunk);
|
285
|
+
res.on('end', () => resolve(data));
|
286
|
+
});
|
287
|
+
|
288
|
+
req.on('error', (err) => reject(err));
|
289
|
+
|
290
|
+
req.write(xml);
|
291
|
+
req.end();
|
292
|
+
} catch (err) {
|
293
|
+
reject(err);
|
294
|
+
}
|
295
|
+
});
|
296
|
+
}
|
297
|
+
|
224
298
|
//Consulta status sefaz
|
225
299
|
async sefazStatus(): Promise<string> {
|
226
300
|
return new Promise(async (resvol, reject) => {
|
227
301
|
|
228
|
-
if (typeof this.#config.
|
302
|
+
if (typeof this.#config.UF == "undefined") throw "sefazStatus({...UF}) -> não definido!";
|
229
303
|
if (typeof this.#config.tpAmb == "undefined") throw "sefazStatus({...tpAmb}) -> não definido!";
|
230
304
|
if (typeof this.#config.mod == "undefined") throw "sefazStatus({...mod}) -> não definido!";
|
231
305
|
|
306
|
+
let tempUF = urlEventos(this.#config.UF, this.#config.versao);
|
307
|
+
|
232
308
|
//Separado para validar o corpo da consulta
|
233
309
|
let consStatServ = {
|
234
310
|
"@versao": "4.00",
|
235
311
|
"@xmlns": "http://www.portalfiscal.inf.br/nfe",
|
236
312
|
"tpAmb": this.#config.tpAmb,
|
237
|
-
"cUF":
|
313
|
+
"cUF": tempUF.cUF,
|
238
314
|
"xServ": "STATUS"
|
239
315
|
}
|
240
316
|
|
@@ -257,9 +333,10 @@ class Tools {
|
|
257
333
|
});
|
258
334
|
|
259
335
|
//Validação
|
260
|
-
this.#xmlValido(tempBuild.build({ consStatServ }),
|
336
|
+
this.#xmlValido(tempBuild.build({ consStatServ }), `consStatServ_v${this.#config.versao}`);
|
337
|
+
let tempUF = urlEventos(this.#config.UF, this.#config.versao);
|
261
338
|
let xml = tempBuild.build(xmlObj);
|
262
|
-
const req = https.request(
|
339
|
+
const req = https.request(tempUF[`mod${this.#config.mod}`][(this.#config.tpAmb == 1 ? "producao" : "homologacao")].NFeStatusServico, {
|
263
340
|
...{
|
264
341
|
method: 'POST',
|
265
342
|
headers: {
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
3
|
-
<xs:include schemaLocation="leiauteNFe_v4.00.xsd"/>
|
4
|
-
<xs:element name="consReciNFe" type="TConsReciNFe">
|
5
|
-
<xs:annotation>
|
6
|
-
<xs:documentation>Schema XML de validação do Pedido de Consulta do Recido do Lote de Notas Fiscais Eletrônicas</xs:documentation>
|
7
|
-
</xs:annotation>
|
8
|
-
</xs:element>
|
9
|
-
</xs:schema>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
3
|
-
<xs:include schemaLocation="leiauteConsSitNFe_v4.00.xsd"/>
|
4
|
-
<xs:element name="consSitNFe" type="TConsSitNFe">
|
5
|
-
<xs:annotation>
|
6
|
-
<xs:documentation>Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota Fiscal Eletrônica</xs:documentation>
|
7
|
-
</xs:annotation>
|
8
|
-
</xs:element>
|
9
|
-
</xs:schema>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
3
|
-
<xs:include schemaLocation="leiauteConsStatServ_v4.00.xsd"/>
|
4
|
-
<xs:element name="consStatServ" type="TConsStatServ">
|
5
|
-
<xs:annotation>
|
6
|
-
<xs:documentation>Schema XML de validação do Pedido de Consulta do Status do Serviço</xs:documentation>
|
7
|
-
</xs:annotation>
|
8
|
-
</xs:element>
|
9
|
-
</xs:schema>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
3
|
-
<xs:include schemaLocation="leiauteNFe_v4.00.xsd"/>
|
4
|
-
<xs:element name="enviNFe" type="TEnviNFe">
|
5
|
-
<xs:annotation>
|
6
|
-
<xs:documentation>Schema XML de validação do Pedido de Concessão de Autorização da Nota Fiscal Eletrônica</xs:documentation>
|
7
|
-
</xs:annotation>
|
8
|
-
</xs:element>
|
9
|
-
</xs:schema>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
3
|
-
<xs:include schemaLocation="leiauteInutNFe_v4.00.xsd"/>
|
4
|
-
<xs:element name="inutNFe" type="TInutNFe">
|
5
|
-
<xs:annotation>
|
6
|
-
<xs:documentation>Schema XML de validação do Pedido de Inutilização de Numeração da Nota Fiscal Eletrônica</xs:documentation>
|
7
|
-
</xs:annotation>
|
8
|
-
</xs:element>
|
9
|
-
</xs:schema>
|