node-sped-nfe 1.0.0

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 (37) hide show
  1. package/README.md +75 -0
  2. package/docs/README.md +49 -0
  3. package/docs/xml.md +1653 -0
  4. package/index.js +5 -0
  5. package/package.json +19 -0
  6. package/testes/assinar.js +16 -0
  7. package/testes/nfe.js +166 -0
  8. package/testes/nfe.json +194 -0
  9. package/testes/nfe.xml +292 -0
  10. package/testes/nfe_guara.xml +1 -0
  11. package/testes/nfe_guara_sign.xml +1 -0
  12. package/testes/nfe_guara_sign_lote.xml +1 -0
  13. package/testes/nfe_teste.json +45 -0
  14. package/utils/eventos.js +32 -0
  15. package/utils/make.js +798 -0
  16. package/utils/schemas/consReciNFe_v4.00.xsd +9 -0
  17. package/utils/schemas/consSitNFe_v4.00.xsd +9 -0
  18. package/utils/schemas/consStatServ_v4.00.xsd +9 -0
  19. package/utils/schemas/enviNFe_v4.00.xsd +9 -0
  20. package/utils/schemas/inutNFe_v4.00.xsd +9 -0
  21. package/utils/schemas/leiauteConsSitNFe_v4.00.xsd +502 -0
  22. package/utils/schemas/leiauteConsStatServ_v4.00.xsd +98 -0
  23. package/utils/schemas/leiauteInutNFe_v4.00.xsd +193 -0
  24. package/utils/schemas/leiauteNFe_v4.00.xsd +7412 -0
  25. package/utils/schemas/nfe_v4.00.xsd +9 -0
  26. package/utils/schemas/procInutNFe_v4.00.xsd +9 -0
  27. package/utils/schemas/procNFe_v4.00.xsd +9 -0
  28. package/utils/schemas/retConsReciNFe_v4.00.xsd +9 -0
  29. package/utils/schemas/retConsSitNFe_v4.00.xsd +9 -0
  30. package/utils/schemas/retConsStatServ_v4.00.xsd +9 -0
  31. package/utils/schemas/retEnviNFe_v4.00.xsd +9 -0
  32. package/utils/schemas/retInutNFe_v4.00.xsd +9 -0
  33. package/utils/schemas/tiposBasico_v4.00.xsd +598 -0
  34. package/utils/schemas/xmldsig-core-schema_v1.01.xsd +98 -0
  35. package/utils/sefaz.js +84 -0
  36. package/utils/tools.js +277 -0
  37. package/utils/xmllint.js +244195 -0
package/docs/xml.md ADDED
@@ -0,0 +1,1653 @@
1
+ # ATENÇÃO, A BIBLIOTECA NÃO ESTA COMPLETA!
2
+ O XML é estruturado em uma ordem específica, sendo indispensável que se observe a sequência de chamadas das funções mencionadas abaixo, bem como a ordem de seus atributos. Por exemplo:
3
+ ```javascript
4
+ var usuario = new Object();
5
+
6
+ // 1 OPÇÃO - CORRETO
7
+ usuario.nome = "Joao"
8
+ usuario.ultNome = "Silva"
9
+
10
+ // 2 OPÇÃO - CORRETO
11
+ usuario = {
12
+ nome: "Joao",
13
+ ultNome: "Silva"
14
+ }
15
+
16
+ // 3 OPÇÃO - INVALIDO
17
+ usuario.ultNome = "Silva"
18
+ usuario.nome = "Joao"
19
+
20
+ // 4 OPÇÃO - INVALIDO
21
+ usuario = {
22
+ ultNome: "Silva",
23
+ nome: "Joao"
24
+ }
25
+ ```
26
+
27
+ | Aonde | Motivo |
28
+ |-------|-------------------|
29
+ | 🔴 | Não implementado |
30
+ | 🟢 | Implementado |
31
+
32
+ # Iniciar biblioteca
33
+ ```javascript
34
+ import { Make, Tools } from "node-sped-nfe"
35
+ import fs from "fs";
36
+
37
+ let myTools = new Tools({ //Configuração de habiente e sistema
38
+ mod: 55,
39
+ tpAmb: 2,
40
+ cUF: 51,
41
+
42
+ /*
43
+ OPTATIVO!
44
+ LEIA Instalação do xmllint
45
+ */
46
+ xmllint: `../libxml2-2.9.3-win32-x86_64/bin/xmllint.exe`
47
+ }, { //Certificado digital
48
+ pfx: 'certificado.pfx',
49
+ senha: "senha-certificado",
50
+ });
51
+ ```
52
+
53
+ > NOTA: Muitos campos não são obrigatórios. Caso não haja nenhum valor a ser informado, devem ser criados como NULL.
54
+ > NOTA: Caso existam erros na passagem de parâmetros para a classe, será disparada uma Exception e esses erros poderão ser recuperados pelo método getErrors().
55
+
56
+
57
+ # Métodos
58
+
59
+ ### 🟢 function __construct()
60
+ Método construtor. Instancia a classe
61
+
62
+ ```Javascript
63
+ var nfe = new Make();
64
+ ```
65
+
66
+ ### 🟢 function taginfNFe(std)
67
+ Node principal
68
+
69
+ NOTA: **se o parametro std.Id não for passado a chave será criada e inclusa e poderá ser recuperada no parâmetro chNFe da classe,**
70
+ **De outra forma se a chave for passada no parâmetro std.Id e estiver incorreta, um erro será inserido na proriedade errors.**
71
+
72
+ | Parâmetro | Tipo | Descrição |
73
+ | :--- | :---: | :--- |
74
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
75
+
76
+ ```javascript
77
+ let std = new Object();
78
+ std.versao = '4.00'; //versão do layout (string)
79
+ std.Id = 'NFe35150271780456000160550010000000021800700082'; //se o Id de 44 digitos não for passado será gerado automaticamente
80
+ std.pk_nItem = null; //deixe essa variavel sempre como NULL
81
+
82
+ nfe.taginfNFe(std);
83
+
84
+ ```
85
+
86
+ ### 🟢 function tagide(std)
87
+ Node de identificação da NFe
88
+
89
+ | Parâmetro | Tipo | Descrição |
90
+ | :--- | :---: | :--- |
91
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
92
+
93
+ ```javascript
94
+ let std = new Object();
95
+ std.cUF = 35;
96
+ std.cNF = '80070008';
97
+ std.natOp = 'VENDA';
98
+
99
+ std.indPag = 0; //NÃO EXISTE MAIS NA VERSÃO 4.00
100
+
101
+ std.mod = 55;
102
+ std.serie = 1;
103
+ std.nNF = 2;
104
+ std.dhEmi = '2015-02-19T13:48:00-02:00';
105
+ std.dhSaiEnt = null;
106
+ std.tpNF = 1;
107
+ std.idDest = 1;
108
+ std.cMunFG = 3518800;
109
+ std.tpImp = 1;
110
+ std.tpEmis = 1;
111
+ std.cDV = 2;
112
+ std.tpAmb = 2;
113
+ std.finNFe = 1;
114
+ std.indFinal = 0;
115
+ std.indPres = 0;
116
+ std.indIntermed = null;
117
+ std.procEmi = 0;
118
+ std.verProc = '3.10.31';
119
+ std.dhCont = null;
120
+ std.xJust = null;
121
+
122
+ nfe.tagide(std);
123
+ ```
124
+
125
+
126
+ ### 🔴 function tagrefNFe(std)
127
+ Node referente a NFe referenciada
128
+
129
+ | Parâmetro | Tipo | Descrição |
130
+ | :--- | :---: | :--- |
131
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
132
+
133
+ ```javascript
134
+ let std = new Object();
135
+ std.refNFe = '35150271780456000160550010000253101000253101';
136
+
137
+ nfe.tagrefNFe(std);
138
+ ```
139
+
140
+ ### 🔴 function tagrefNF(std)
141
+ Node referente a Nota Fiscal referenciada modelo 1 ou 2
142
+
143
+ | Parâmetro | Tipo | Descrição |
144
+ | :--- | :---: | :--- |
145
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
146
+
147
+ ```javascript
148
+ let std = new Object();
149
+ std.cUF = 35;
150
+ std.AAMM = 1412;
151
+ std.CNPJ = '52297850000105';
152
+ std.mod = '01';
153
+ std.serie = 3;
154
+ std.nNF = 587878;
155
+
156
+ nfe.tagrefNF(std);
157
+ ```
158
+
159
+ ### 🔴 function tagrefNFP(std)
160
+ Node referente a Nota Fiscal referenciada de produtor rural
161
+
162
+ | Parâmetro | Tipo | Descrição |
163
+ | :--- | :---: | :--- |
164
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
165
+
166
+ ```javascript
167
+ let std = new Object();
168
+ std.cUF = 35;
169
+ std.AAMM = 1502;
170
+ std.CNPJ;
171
+ std.CPF;
172
+ std.IE = 'ISENTO';
173
+ std.mod = '04';
174
+ std.serie = 0;
175
+ std.nNF = 5578;
176
+
177
+ nfe.tagrefNFP(std);
178
+ ```
179
+ ### 🔴 function tagrefCTe(std)
180
+ Node referente aos CTe referenciados
181
+
182
+ | Parâmetro | Tipo | Descrição |
183
+ | :--- | :---: | :--- |
184
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
185
+ ```javascript
186
+ let std = new Object();
187
+ std.refCTe = '35150268252816000146570010000016161002008472';
188
+
189
+ nfe.tagrefCTe(std);
190
+ ```
191
+
192
+ ### 🔴 function tagrefECF(std)
193
+ Node referente aos ECF referenciados
194
+
195
+ | Parâmetro | Tipo | Descrição |
196
+ | :--- | :---: | :--- |
197
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
198
+ ```javascript
199
+ let std = new Object();
200
+ std.mod = '2C';
201
+ std.nECF = 788;
202
+ std.nCOO = 114;
203
+
204
+ nfe.tagrefECF(std);
205
+ ```
206
+
207
+ ### 🟢 function tagemit(std)
208
+ Node com os dados do emitente
209
+
210
+ | Parâmetro | Tipo | Descrição |
211
+ | :--- | :---: | :--- |
212
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
213
+
214
+ ```javascript
215
+ let std = new Object();
216
+ std.xNome;
217
+ std.xFant;
218
+ std.IE;
219
+ std.IEST;
220
+ std.IM;
221
+ std.CNAE;
222
+ std.CRT;
223
+ std.CNPJ; //indicar apenas um CNPJ ou CPF
224
+ std.CPF;
225
+
226
+ nfe.tagemit(std);
227
+ ```
228
+
229
+ ### 🟢 function tagenderEmit(std)
230
+ Node com o endereço do emitente
231
+
232
+ | Parâmetro | Tipo | Descrição |
233
+ | :--- | :---: | :--- |
234
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
235
+
236
+ ```javascript
237
+ let std = new Object();
238
+ std.xLgr;
239
+ std.nro;
240
+ std.xCpl;
241
+ std.xBairro;
242
+ std.cMun;
243
+ std.xMun;
244
+ std.UF;
245
+ std.CEP;
246
+ std.cPais;
247
+ std.xPais;
248
+ std.fone;
249
+
250
+ nfe.tagenderEmit(std);
251
+ ```
252
+
253
+ ### 🟢 function tagdest(std)
254
+ Node com os dados do destinatário
255
+
256
+ | Parâmetro | Tipo | Descrição |
257
+ | :--- | :---: | :--- |
258
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
259
+
260
+ ```javascript
261
+ let std = new Object();
262
+ std.xNome;
263
+ std.indIEDest;
264
+ std.IE;
265
+ std.ISUF;
266
+ std.IM;
267
+ std.email;
268
+ std.CNPJ; //indicar apenas um CNPJ ou CPF ou idEstrangeiro
269
+ std.CPF;
270
+ std.idEstrangeiro;
271
+
272
+ nfe.tagdest(std);
273
+ ```
274
+
275
+ ### 🟢 function tagenderDest(std)
276
+ Node de endereço do destinatário
277
+
278
+ | Parâmetro | Tipo | Descrição |
279
+ | :--- | :---: | :--- |
280
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
281
+
282
+ ```javascript
283
+ let std = new Object();
284
+ std.xLgr;
285
+ std.nro;
286
+ std.xCpl;
287
+ std.xBairro;
288
+ std.cMun;
289
+ std.xMun;
290
+ std.UF;
291
+ std.CEP;
292
+ std.cPais;
293
+ std.xPais;
294
+ std.fone;
295
+
296
+ nfe.tagenderDest(std);
297
+ ```
298
+
299
+ ### 🔴 function tagretirada(std)
300
+ > NOTA: Ajustado para NT 2018.005
301
+ Node indicativo de local de retirada diferente do endereço do emitente
302
+
303
+ | Parâmetro | Tipo | Descrição |
304
+ | :--- | :---: | :--- |
305
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
306
+
307
+ ```javascript
308
+ let std = new Object();
309
+ std.CNPJ = '12345678901234'; //indicar apenas um CNPJ ou CPF
310
+ std.CPF = null;
311
+ std.IE = '12345678901';
312
+ std.xNome = 'Beltrano e Cia Ltda';
313
+ std.xLgr = 'Rua Um';
314
+ std.nro = '123';
315
+ std.xCpl = 'sobreloja';
316
+ std.xBairro = 'centro';
317
+ std.cMun = '3550308';
318
+ std.xMun = 'Sao Paulo';
319
+ std.UF = 'SP';
320
+ std.CEP = '01023000';
321
+ std.cPais = '1058';
322
+ std.xPais = 'BRASIL';
323
+ std.fone = '1122225544';
324
+ std.email = 'contato@beltrano.com.br';
325
+
326
+ nfe.tagretirada(std);
327
+ ```
328
+
329
+
330
+ ### 🔴 function tagentrega(std)
331
+ > NOTA: Ajustado para NT 2018.005
332
+ Node indicativo de local de entrega diferente do endereço do destinatário
333
+
334
+ | Parâmetro | Tipo | Descrição |
335
+ | :--- | :---: | :--- |
336
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
337
+ ```javascript
338
+ let std = new Object();
339
+ std.CNPJ; //indicar um CNPJ ou CPF
340
+ std.CPF = null;
341
+ std.IE = '12345678901';
342
+ std.xNome = 'Beltrano e Cia Ltda';
343
+ std.xLgr = 'Rua Um';
344
+ std.nro = '123';
345
+ std.xCpl = 'sobreloja';
346
+ std.xBairro = 'centro';
347
+ std.cMun = '3550308';
348
+ std.xMun = 'Sao Paulo';
349
+ std.UF = 'SP';
350
+ std.CEP = '01023000';
351
+ std.cPais = '1058';
352
+ std.xPais = 'BRASIL';
353
+ std.fone = '1122225544';
354
+ std.email = 'contato@beltrano.com.br';
355
+
356
+ nfe.tagentrega(std);
357
+ ```
358
+
359
+ ### 🔴 function tagautXML(std)
360
+ Node de registro de pessoas autorizadas a acessar a NFe
361
+
362
+ | Parâmetro | Tipo | Descrição |
363
+ | :--- | :---: | :--- |
364
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
365
+ ```javascript
366
+ let std = new Object();
367
+ std.CNPJ = '12345678901234'; //indicar um CNPJ ou CPF
368
+ std.CPF = null;
369
+ nfe.tagautXML(std);
370
+ ```
371
+
372
+ ### 🟢 function tagprod(std)
373
+ Node de dados do produto/serviço
374
+
375
+ | Parâmetro | Tipo | Descrição |
376
+ | :--- | :---: | :--- |
377
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
378
+ ```javascript
379
+ let std = new Object();
380
+ std.item = 1; //item da NFe
381
+ std.cProd;
382
+ std.cEAN;
383
+ std.cBarra;
384
+ std.xProd;
385
+ std.NCM;
386
+ std.cBenef;
387
+ std.EXTIPI;
388
+ std.CFOP;
389
+ std.uCom;
390
+ std.qCom;
391
+ std.vUnCom;
392
+ std.vProd;
393
+ std.cEANTrib;
394
+ std.cBarraTrib;
395
+ std.uTrib;
396
+ std.qTrib;
397
+ std.vUnTrib;
398
+ std.vFrete;
399
+ std.vSeg;
400
+ std.vDesc;
401
+ std.vOutro;
402
+ std.indTot;
403
+ std.xPed;
404
+ std.nItemPed;
405
+ std.nFCI;
406
+
407
+ nfe.tagprod(std);
408
+ ```
409
+
410
+ ### 🔴 function tagCreditoPresumidoProd(std): void
411
+ Node opcional com dados de Crédito Presumido, são permitidos até 4 registros por item
412
+
413
+ | Parâmetro | Tipo | Descrição |
414
+ | :--- | :---: |:-----------------------------------------------------------------------|
415
+ |item|inteiro| Número do item da NFe |
416
+ |cCredPresumido|string|Código de Benefício Fiscal de Crédito Presumido na UF aplicado ao item |
417
+ |pCredPresumido|numerico|Percentual do Crédito Presumido |
418
+ |vCredPresumido|numerico|Valor do Crédito Presumido |
419
+
420
+ ```javascript
421
+ let std = new \Object();
422
+ std.item = 1;
423
+ std.cCredPresumido = '2222211234';
424
+ std.pCredPresumido = '4';
425
+ std.vCredPresumido = '4';
426
+
427
+ $make.tagCreditoPresumidoProd(std);
428
+ ```
429
+
430
+ ### 🔴 function taginfAdProd(std)
431
+ Node de informações adicionais do produto
432
+
433
+ | Parâmetro | Tipo | Descrição |
434
+ | :--- | :---: | :--- |
435
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
436
+ ```javascript
437
+ let std = new Object();
438
+ std.item = 1; //item da NFe
439
+
440
+ std.infAdProd = 'informacao adicional do item';
441
+
442
+ nfe.taginfAdProd(std);
443
+ ```
444
+
445
+ ### 🔴 function tagNVE(std)
446
+ Node com a Nomenclatura de Valor Aduaneiro e Estatística do item da NFe
447
+
448
+ | Parâmetro | Tipo | Descrição |
449
+ | :--- | :---: | :--- |
450
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
451
+ ```javascript
452
+ let std = new Object();
453
+ std.item = 1; //item da NFe
454
+ std.NVE = 'AA0001';
455
+
456
+ nfe.tagNVE(std);
457
+ ```
458
+
459
+ ### 🔴 function tagCEST(std)
460
+ Node de detalhamento do Especificador da Substituição Tributária do item da NFe
461
+
462
+ | Parâmetro | Tipo | Descrição |
463
+ | :--- | :---: | :--- |
464
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
465
+ ```javascript
466
+ let std = new Object();
467
+ std.item = 1; //item da NFe
468
+ std.CEST = '0200100';
469
+ std.indEscala = 'N'; //incluido no layout 4.00
470
+ std.CNPJFab = '12345678901234'; //incluido no layout 4.00
471
+
472
+ nfe.tagCEST(std);
473
+ ```
474
+
475
+ ### 🔴 function tagRECOPI(std)
476
+ Node com o número do RECOPI
477
+
478
+ | Parâmetro | Tipo | Descrição |
479
+ | :--- | :---: | :--- |
480
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
481
+ ```javascript
482
+ let std = new Object();
483
+ std.item = 1; //item da NFe
484
+ std.nRECOPI = '12345678901234567890';
485
+
486
+ nfe.tagRECOPI(std);
487
+ ```
488
+
489
+ ### 🔴 function tagDI(std)
490
+ Node com informações da Declaração de Importação do item da NFe
491
+
492
+ | Parâmetro | Tipo | Descrição |
493
+ | :--- | :---: | :--- |
494
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
495
+ ```javascript
496
+ let std = new Object();
497
+ std.item = 1; //item da NFe
498
+ std.nDI;
499
+ std.dDI;
500
+ std.xLocDesemb;
501
+ std.UFDesemb;
502
+ std.dDesemb;
503
+ std.tpViaTransp;
504
+ std.vAFRMM;
505
+ std.tpIntermedio;
506
+ std.CNPJ;
507
+ std.CPF; //NT 2023.004 v1.00
508
+ std.UFTerceiro;
509
+ std.cExportador;
510
+
511
+ nfe.tagDI(std);
512
+ ```
513
+
514
+ ### 🔴 function tagadi(std)
515
+ Node de Adições relativas as DI do item
516
+
517
+ | Parâmetro | Tipo | Descrição |
518
+ | :--- | :---: | :--- |
519
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
520
+ ```javascript
521
+ let std = new Object();
522
+ std.item = 1; //item da NFe
523
+ std.nDI; //número da DI
524
+ std.nAdicao;
525
+ std.nSeqAdic;
526
+ std.cFabricante;
527
+ std.vDescDI;
528
+ std.nDraw;
529
+
530
+ nfe.tagadi(std);
531
+ ```
532
+
533
+ ### 🔴 function tagdetExport(std)
534
+ Node com informações de exportação para o item
535
+
536
+ | Parâmetro | Tipo | Descrição |
537
+ | :--- | :---: | :--- |
538
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
539
+ ```javascript
540
+ let std = new Object();
541
+ std.item = 1; //item da NFe
542
+ std.nDraw = '82828';
543
+
544
+ nfe.tagdetExport(std);
545
+ ```
546
+
547
+ ### 🔴 function tagdetExportInd(std)
548
+ Node com Grupo sobre exportação indireta, deve ser indicado logo após
549
+ nfe.tagdetExport(std) pois pertence a essa tag
550
+
551
+ | Parâmetro | Tipo | Descrição |
552
+ | :--- | :---: | :--- |
553
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
554
+ ```javascript
555
+ let std = new Object();
556
+ std.item = 1; //item da NFe
557
+ std.nRE = '123456789012';
558
+ std.chNFe = '53170924915365000295550550000001951000001952';
559
+ std.qExport = 1234.123;
560
+
561
+ nfe.tagdetExportInd(std);
562
+ ```
563
+ ### 🔴 function tagRastro(std)
564
+ Node com os dados de rastreabilidade do item da NFe
565
+
566
+ *Método Incluso para atender layout 4.00*
567
+
568
+ | Parâmetro | Tipo | Descrição |
569
+ | :--- | :---: | :--- |
570
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
571
+ ```javascript
572
+ let std = new Object();
573
+ std.item = 1; //item da NFe
574
+ std.nLote = '11111';
575
+ std.qLote = 200;
576
+ std.dFab = '2018-01-01';
577
+ std.dVal = '2020-01-01';
578
+ std.cAgreg = '1234';
579
+
580
+ nfe.tagRastro(std);
581
+ ```
582
+
583
+ ### 🔴 function tagveicProd(std)
584
+ Node com o detalhamento de Veículos novos do item da NFe
585
+
586
+ | Parâmetro | Tipo | Descrição |
587
+ | :--- | :---: | :--- |
588
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
589
+ ```javascript
590
+ let std = new Object();
591
+ std.item = 1; //item da NFe
592
+ std.tpOp;
593
+ std.chassi;
594
+ std.cCor;
595
+ std.xCor;
596
+ std.pot;
597
+ std.cilin;
598
+ std.pesoL;
599
+ std.pesoB;
600
+ std.nSerie;
601
+ std.tpComb;
602
+ std.nMotor;
603
+ std.CMT;
604
+ std.dist;
605
+ std.anoMod;
606
+ std.anoFab;
607
+ std.tpPint;
608
+ std.tpVeic;
609
+ std.espVeic;
610
+ std.VIN;
611
+ std.condVeic;
612
+ std.cMod;
613
+ std.cCorDENATRAN;
614
+ std.lota;
615
+ std.tpRest;
616
+
617
+ nfe.tagveicProd(std);
618
+ ```
619
+
620
+ ### 🔴 function tagmed(std)
621
+ > NOTA: Ajustado conforme NT 2018.005
622
+ Node com o detalhamento de Medicamentos e de matérias-primas farmacêuticas
623
+
624
+ | Parâmetro | Tipo | Descrição |
625
+ | :--- | :---: | :--- |
626
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
627
+ ```javascript
628
+ let std = new Object();
629
+ std.item = 1; //item da NFe
630
+ std.cProdANVISA = '1234567890123'; //incluido no layout 4.00
631
+ std.xMotivoIsencao = 'RDC 238';
632
+ std.vPMC = 102.22;
633
+
634
+ nfe.tagmed(std);
635
+ ```
636
+
637
+ ### 🔴 function tagarma(std)
638
+ Node com informações e detalhamento de Armamento do item da NFe
639
+
640
+ | Parâmetro | Tipo | Descrição |
641
+ | :--- | :---: | :--- |
642
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
643
+ ```javascript
644
+ let std = new Object();
645
+ std.item = 1; //item da NFe
646
+ std.nAR; //Indicativo de número da arma
647
+ std.tpArma;
648
+ std.nSerie;
649
+ std.nCano;
650
+ std.descr;
651
+
652
+ nfe.tagarma(std);
653
+ ```
654
+
655
+ ### 🔴 function tagcomb(std)
656
+ Node das informações específicas para combustíveis líquidos e lubrificantes do item da NFe
657
+
658
+ | Parâmetro | Tipo | Descrição |
659
+ | :--- | :---: | :--- |
660
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
661
+ ```javascript
662
+ let std = new Object();
663
+ std.item = 1; //item da NFe
664
+ std.cProdANP;
665
+
666
+ std.pMixGN; //removido no layout 4.00
667
+
668
+ std.descANP; //incluido no layout 4.00
669
+ std.pGLP; //incluido no layout 4.00
670
+ std.pGNn; //incluido no layout 4.00
671
+ std.pGNi; //incluido no layout 4.00
672
+ std.vPart; //incluido no layout 4.00
673
+
674
+ std.CODIF;
675
+ std.qTemp;
676
+ std.UFCons;
677
+ std.qBCProd;
678
+ std.vAliqProd;
679
+ std.vCIDE;
680
+
681
+ nfe.tagcomb(std);
682
+ ```
683
+
684
+ ### 🔴 function tagencerrante(std)
685
+ Node das informações do grupo de “encerrante” disponibilizado por hardware específico acoplado à bomba de Combustível, definido no controle da venda do Posto Revendedor de Combustível.
686
+ Referente ao item da NFe
687
+
688
+ | Parâmetro | Tipo | Descrição |
689
+ | :--- | :---: | :--- |
690
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
691
+ ```javascript
692
+ let std = new Object();
693
+ std.item = 1; //item da NFe
694
+ std.nBico;
695
+ std.nBomba;
696
+ std.nTanque;
697
+ std.vEncIni;
698
+ std.vEncFin;
699
+ std.pBio; //NT 2022.001 v1.10
700
+
701
+
702
+ nfe.tagencerrante(std);
703
+ ```
704
+
705
+ ### 🔴 function tagorigComb(std)
706
+ Parte do grupo encerrante, podem haver de 0 até 30 tags desse tipo
707
+
708
+ | Parâmetro | Tipo | Descrição |
709
+ | :--- | :---: | :--- |
710
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
711
+ ```javascript
712
+ let std = new Object();
713
+ std.item = 1; //item da NFe
714
+ std.indImport= 0; //NT 2023.001 v1.00
715
+ std.cUFOrig = 35; //NT 2023.001 v1.00
716
+ std.Orig = 100; //NT 2023.001 v1.00
717
+
718
+ nfe.tagOrigComb(std);
719
+ ```
720
+
721
+
722
+ ### 🔴 function tagimposto(std)
723
+ Node inicial dos Tributos incidentes no Produto ou Serviço do item da NFe
724
+
725
+ | Parametro | Tipo | Descrição |
726
+ | :--- | :---: | :--- |
727
+ | std | stcClass | contêm os dados dos campos, nomeados conforme manual |
728
+ ```javascript
729
+ let std = new Object();
730
+ std.item = 1; //item da NFe
731
+ std.vTotTrib = 1000.00;
732
+
733
+ nfe.tagimposto(std);
734
+ ```
735
+
736
+ ### 🔴 function tagICMS(std)
737
+ > NOTA: Ajustado conforme NT 2018.005_1.10
738
+ Node com informações do ICMS do item da NFe
739
+
740
+ | Parâmetro | Tipo | Descrição |
741
+ | :--- | :---: | :--- |
742
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
743
+ ```javascript
744
+ let std = new Object();
745
+ std.item = 1; //item da NFe
746
+ std.orig;
747
+ std.CST;
748
+ std.modBC;
749
+ std.vBC;
750
+ std.pICMS;
751
+ std.vICMS;
752
+ std.pFCP;
753
+ std.vFCP;
754
+ std.vBCFCP;
755
+ std.modBCST;
756
+ std.pMVAST;
757
+ std.pRedBCST;
758
+ std.vBCST;
759
+ std.pICMSST;
760
+ std.vICMSST;
761
+ std.vBCFCPST;
762
+ std.pFCPST;
763
+ std.vFCPST;
764
+ std.vICMSDeson;
765
+ std.motDesICMS;
766
+ std.pRedBC;
767
+ std.vICMSOp;
768
+ std.pDif;
769
+ std.vICMSDif;
770
+ std.vBCSTRet;
771
+ std.pST;
772
+ std.vICMSSTRet;
773
+ std.vBCFCPSTRet;
774
+ std.pFCPSTRet;
775
+ std.vFCPSTRet;
776
+ std.pRedBCEfet;
777
+ std.vBCEfet;
778
+ std.pICMSEfet;
779
+ std.vICMSEfet;
780
+ std.vICMSSubstituto; //NT 2020.005 v1.20
781
+ std.vICMSSTDeson; //NT 2020.005 v1.20
782
+ std.motDesICMSST; //NT 2020.005 v1.20
783
+ std.pFCPDif; //NT 2020.005 v1.20
784
+ std.vFCPDif; //NT 2020.005 v1.20
785
+ std.vFCPEfet; //NT 2020.005 v1.20
786
+ std.pRedAdRem; //NT 2023.001-v1.10
787
+ std.qBCMono; //NT 2023.001-v1.10
788
+ std.adRemiICMS; //NT 2023.001-v1.10
789
+ std.vICMSMono; //NT 2023.001-v1.10
790
+ std.adRemICMSRet; //NT 2023.001-v1.10
791
+ std.vICMSMonoRet; //NT 2023.001-v1.10
792
+ std.vICMSMonoDif; //NT 2023.001-v1.10
793
+ std.cBenefRBC; //NT 2019.001 v1.61
794
+ std.indDeduzDeson; //NT 2023.004 v1.00
795
+ nfe.tagICMS(std);
796
+ ```
797
+
798
+ ### 🔴 function tagICMSPart(std)
799
+ Node com informações da partilha do ICMS entre a UF de origem e UF de destino ou a UF definida na legislação.
800
+
801
+ | Parâmetro | Tipo | Descrição |
802
+ | :--- | :---: | :--- |
803
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
804
+ ```javascript
805
+ let std = new Object();
806
+ std.item = 1; //item da NFe
807
+ std.orig = 0;
808
+ std.CST = '90';
809
+ std.modBC = 0;
810
+ std.vBC = 1000.00;
811
+ std.pRedBC = null;
812
+ std.pICMS = 18.00;
813
+ std.vICMS = 180.00;
814
+ std.modBCST = 1000.00;
815
+ std.pMVAST = 40.00;
816
+ std.pRedBCST = null;
817
+ std.vBCST = 1400.00;
818
+ std.pICMSST = 10.00;
819
+ std.vICMSST = 140.00;
820
+ std.pBCOp = 10.00;
821
+ std.UFST = 'RJ';
822
+
823
+ nfe.tagICMSPart(std);
824
+ ```
825
+
826
+ ### 🔴 function tagICMSST(std)
827
+ > NOTA: Ajustado conforme NT 2018.005 e NT 2018.005_1.10
828
+ Node Repasse de ICMS ST retido anteriormente em operações interestaduais com repasses através do Substituto Tributário
829
+
830
+ | Parametro | Tipo | Descrição |
831
+ | :--- | :---: | :--- |
832
+ | std | stcClass | contêm os dados dos campos, nomeados conforme manual |
833
+ ```javascript
834
+ let std = new Object();
835
+ std.item = 1; //item da NFe
836
+ std.orig = 0;
837
+ std.CST = '60';
838
+ std.vBCSTRet = 1000.00;
839
+ std.vICMSSTRet = 190.00;
840
+ std.vBCSTDest = 1000.00;
841
+ std.vICMSSTDest = 1.00;
842
+ std.vBCFCPSTRet = 1000.00;
843
+ std.pFCPSTRet = 1.00;
844
+ std.vFCPSTRet = 10.00;
845
+ std.pST = null;
846
+ std.vICMSSubstituto = null;
847
+ std.pRedBCEfet = null;
848
+ std.vBCEfet = null;
849
+ std.pICMSEfet = null;
850
+ std.vICMSEfet = null;
851
+
852
+ nfe.tagICMSST(std);
853
+ ```
854
+
855
+ ### 🟢 function tagProdICMSSN(std)
856
+ Node referente Tributação ICMS pelo Simples Nacional do item da NFe
857
+ > NOTA: Ajustado conforme NT 2018.005_1.10
858
+
859
+ | Parâmetro | Tipo | Descrição |
860
+ | :--- | :---: | :--- |
861
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
862
+ ```javascript
863
+ let std = new Object();
864
+ std.item = 1; //item da NFe
865
+ std.orig = 0;
866
+ std.CSOSN = '101';
867
+ std.pCredSN = 2.00;
868
+ std.vCredICMSSN = 20.00;
869
+ std.modBCST = null;
870
+ std.pMVAST = null;
871
+ std.pRedBCST = null;
872
+ std.vBCST = null;
873
+ std.pICMSST = null;
874
+ std.vICMSST = null;
875
+ std.vBCFCPST = null; //incluso no layout 4.00
876
+ std.pFCPST = null; //incluso no layout 4.00
877
+ std.vFCPST = null; //incluso no layout 4.00
878
+ std.vBCSTRet = null;
879
+ std.pST = null;
880
+ std.vICMSSTRet = null;
881
+ std.vBCFCPSTRet = null; //incluso no layout 4.00
882
+ std.pFCPSTRet = null; //incluso no layout 4.00
883
+ std.vFCPSTRet = null; //incluso no layout 4.00
884
+ std.modBC = null;
885
+ std.vBC = null;
886
+ std.pRedBC = null;
887
+ std.pICMS = null;
888
+ std.vICMS = null;
889
+ std.pRedBCEfet = null;
890
+ std.vBCEfet = null;
891
+ std.pICMSEfet = null;
892
+ std.vICMSEfet = null;
893
+ std.vICMSSubstituto = null;
894
+
895
+ nfe.tagICMSSN(std);
896
+ ```
897
+
898
+ ### 🔴 function tagICMSUFDest(std)
899
+ Node de informação do ICMS Interestadual do item na NFe
900
+
901
+ | Parâmetro | Tipo | Descrição |
902
+ | :--- | :---: | :--- |
903
+ | std | stcClass | contêm os dados dos campos, nomeados conforme manual |
904
+ ```javascript
905
+ let std = new Object();
906
+ std.item = 1; //item da NFe
907
+ std.vBCUFDest = 100.00;
908
+ std.vBCFCPUFDest = 100.00;
909
+ std.pFCPUFDest = 1.00;
910
+ std.pICMSUFDest = 18.00;
911
+ std.pICMSInter = 12.00;
912
+ std.pICMSInterPart = 80.00;
913
+ std.vFCPUFDest = 1.00;
914
+ std.vICMSUFDest = 14.44;
915
+ std.vICMSUFRemet = 3.56;
916
+
917
+ nfe.tagICMSUFDest(std);
918
+ ```
919
+
920
+ ### 🔴 function tagIPI(std)
921
+ Node referente ao IPI do item da NFe
922
+
923
+ > NOTA: clEnq foi removido do layout 4.00 na NT_2016_V1.40
924
+
925
+ | Parâmetro | Tipo | Descrição |
926
+ | :--- | :---: | :--- |
927
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
928
+ ```javascript
929
+ let std = new Object();
930
+ std.item = 1; //item da NFe
931
+ std.clEnq = null;
932
+ std.CNPJProd = null;
933
+ std.cSelo = null;
934
+ std.qSelo = null;
935
+ std.cEnq = '999';
936
+ std.CST = '50';
937
+ std.vIPI = 150.00;
938
+ std.vBC = 1000.00;
939
+ std.pIPI = 15.00;
940
+ std.qUnid = null;
941
+ std.vUnid = null;
942
+
943
+ nfe.tagIPI(std);
944
+ ```
945
+
946
+ ### 🔴 function tagII(std)
947
+ Node Imposto de Importação do item da NFe
948
+
949
+ | Parâmetro | Tipo | Descrição |
950
+ | :--- | :---: | :--- |
951
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
952
+ ```javascript
953
+ let std = new Object();
954
+ std.item = 1; //item da NFe
955
+ std.vBC = 1000.00;
956
+ std.vDespAdu = 100.00;
957
+ std.vII = 220.00;
958
+ std.vIOF = null;
959
+
960
+ nfe.tagII(std);
961
+ ```
962
+
963
+ ### 🟢 function tagProdPIS(std)
964
+ Node PIS do item da NFe
965
+
966
+ | Parâmetro | Tipo | Descrição |
967
+ | :--- | :---: | :--- |
968
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
969
+ ```javascript
970
+ let std = new Object();
971
+ std.item = 1; //item da NFe
972
+ std.CST = '07';
973
+ std.vBC = null;
974
+ std.pPIS = null;
975
+ std.vPIS = null;
976
+ std.qBCProd = null;
977
+ std.vAliqProd = null;
978
+
979
+ nfe.tagPIS(std);
980
+ ```
981
+
982
+ ### 🔴 function tagPISST(std)
983
+ Node PIS Substituição Tributária do item da NFe
984
+
985
+ | Parâmetro | Tipo | Descrição |
986
+ | :--- | :---: | :--- |
987
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
988
+ ```javascript
989
+ let std = new Object();
990
+ std.item = 1; //item da NFe
991
+ std.vPIS = 16.00;
992
+ std.vBC = 1000.00
993
+ std.pPIS = 1.60;
994
+ std.qBCProd = null;
995
+ std.vAliqProd = null;
996
+ std.indSomaPISST = 0; //0=Valor do PISST não compõe o valor total da NF-e
997
+ //1=Valor do PISST compõe o valor total da NF-e
998
+
999
+ nfe.tagPISST(std);
1000
+ ```
1001
+
1002
+ ### 🟢 function tagProdCOFINS(std)
1003
+ Node COFINS do item da NFe
1004
+
1005
+ | Parâmetro | Tipo | Descrição |
1006
+ | :--- | :---: | :--- |
1007
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1008
+ ```javascript
1009
+ let std = new Object();
1010
+ std.item = 1; //item da NFe
1011
+ std.CST = '07';
1012
+ std.vBC = null;
1013
+ std.pCOFINS = null;
1014
+ std.vCOFINS = null;
1015
+ std.qBCProd = null;
1016
+ std.vAliqProd = null;
1017
+
1018
+ nfe.tagCOFINS(std);
1019
+ ```
1020
+
1021
+ ### 🔴 function tagCOFINSST(std)
1022
+ Node COFINS Substituição Tributária do item da NFe
1023
+
1024
+ | Parâmetro | Tipo | Descrição |
1025
+ | :--- | :---: | :--- |
1026
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1027
+ ```javascript
1028
+ let std = new Object();
1029
+ std.item = 1; //item da NFe
1030
+ std.vCOFINS = 289.30;
1031
+ std.vBC = 2893.00;
1032
+ std.pCOFINS = 10.00;
1033
+ std.qBCProd = null;
1034
+ std.vAliqProd = null;
1035
+ std.indSomaCOFINSST = 0; //0=Valor do COFINS ST não compõe o valor total da NF-e
1036
+ //1=Valor do COFINS ST compõe o valor total da NF-e
1037
+
1038
+ nfe.tagCOFINSST(std);
1039
+ ```
1040
+
1041
+ ### 🔴 function tagISSQN(std)
1042
+ Node ISSQN do item da NFe
1043
+
1044
+ | Parâmetro | Tipo | Descrição |
1045
+ | :--- | :---: | :--- |
1046
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1047
+ ```javascript
1048
+ let std = new Object();
1049
+ std.item = 1; //item da NFe
1050
+ std.vBC = 1000.00;
1051
+ std.vAliq = 5.00;
1052
+ std.vISSQN = 50.00;
1053
+ std.cMunFG = '3518800';
1054
+ std.cListServ = '12.23';
1055
+ std.vDeducao = null;
1056
+ std.vOutro = null;
1057
+ std.vDescIncond = null;
1058
+ std.vDescCond = null;
1059
+ std.vISSRet = null;
1060
+ std.indISS = 2;
1061
+ std.cServico = '123';
1062
+ std.cMun = '3518800';
1063
+ std.cPais = '1058';
1064
+ std.nProcesso = null;
1065
+ std.indIncentivo = 2;
1066
+
1067
+ nfe.tagISSQN(std);
1068
+ ```
1069
+
1070
+ ### 🔴 function tagimpostoDevol(std)
1071
+ Node referente a informação do Imposto devolvido
1072
+
1073
+ > NOTA: O motivo da devolução deverá ser informado pela empresa no campo de Informações Adicionais do Produto (tag:infAdProd).
1074
+
1075
+ | Parâmetro | Tipo | Descrição |
1076
+ | :--- | :---: | :--- |
1077
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1078
+ ```javascript
1079
+ let std = new Object();
1080
+ std.item = 1; //item da NFe
1081
+ std.pDevol = 2.00;
1082
+ std.vIPIDevol = 123.36;
1083
+
1084
+ nfe.tagimpostoDevol(std);
1085
+ ```
1086
+
1087
+ ### 🟢 function tagICMSTot(std)
1088
+ Node dos totais referentes ao ICMS
1089
+
1090
+ > NOTA: Esta tag não necessita que sejam passados valores, pois a classe irá calcular esses totais e irá usar essa totalização para complementar e gerar esse node, caso nenhum valor seja passado como parâmetro.
1091
+
1092
+ | Parâmetro | Tipo | Descrição |
1093
+ | :--- | :---: | :--- |
1094
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1095
+ ```javascript
1096
+ let std = new Object();
1097
+ std.vBC;
1098
+ std.vICMS;
1099
+ std.vICMSDeson;
1100
+ std.vBCST;
1101
+ std.vST;
1102
+ std.vProd;
1103
+ std.vFrete;
1104
+ std.vSeg;
1105
+ std.vDesc;
1106
+ std.vII;
1107
+ std.vIPI;
1108
+ std.vPIS;
1109
+ std.vCOFINS;
1110
+ std.vOutro;
1111
+ std.vNF;
1112
+ std.vIPIDevol;
1113
+ std.vTotTrib;
1114
+ std.vFCP;
1115
+ std.vFCPST;
1116
+ std.vFCPSTRet;
1117
+ std.vFCPUFDest;
1118
+ std.vICMSUFDest;
1119
+ std.vICMSUFRemet;
1120
+ std.qBCMono;
1121
+ std.vICMSMono;
1122
+ std.qBCMonoReten;
1123
+ std.vICMSMonoReten;
1124
+ std.qBCMonoRet;
1125
+ std.vICMSMonoRet;
1126
+
1127
+
1128
+ nfe.tagICMSTot(std);
1129
+ ```
1130
+
1131
+ ### 🔴 function tagISSQNTot(std)
1132
+ Node de Totais referentes ao ISSQN
1133
+
1134
+ > NOTA: caso os valores não existam indique "null". Se for indicado 0.00 esse número será incluso no XML o que poderá causar sua rejeição.
1135
+
1136
+ | Parâmetro | Tipo | Descrição |
1137
+ | :--- | :---: | :--- |
1138
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1139
+ ```javascript
1140
+ let std = new Object();
1141
+ std.vServ = 1000.00;
1142
+ std.vBC = 1000.00;
1143
+ std.vISS = 10.00;
1144
+ std.vPIS = 2.00;
1145
+ std.vCOFINS = 6.00;
1146
+ std.dCompet = '2017-09-12';
1147
+ std.vDeducao = 10.00;
1148
+ std.vOutro = 10.00;
1149
+ std.vDescIncond = null;
1150
+ std.vDescCond = null;
1151
+ std.vISSRet = null;
1152
+ std.cRegTrib = 5;
1153
+
1154
+ nfe.tagISSQNTot(std);
1155
+ ```
1156
+
1157
+ ### 🔴 function tagretTrib(std)
1158
+ Node referente a retenções de tributos
1159
+
1160
+ > Exemplos de atos normativos que definem obrigatoriedade da retenção de contribuições:
1161
+
1162
+ > a) IRPJ/CSLL/PIS/COFINS - Fonte - Recebimentos de Órgão Público Federal, Lei no 9.430, de 27 de dezembro de 1996, art. 64, Lei no 10.833/2003, art. 34, como normas infralegais, temos como exemplo: IN SRF 480/2004 e IN 539, de 25/04/05.
1163
+
1164
+ > b) Retenção do Imposto de Renda pelas Fontes Pagadoras, REMUNERAÇÃO DE SERVIÇOS PROFISSIONAIS PRESTADOS POR PESSOA JURÍDICA, Lei no 7.450/85, art. 52
1165
+
1166
+ > c) IRPJ, CSLL, COFINS e PIS - Serviços Prestados por Pessoas Jurídicas - Retenção na Fonte, Lei no 10.833 de 29.12.2003, art. 30, 31, 32, 35 e 36
1167
+
1168
+ | Parâmetro | Tipo | Descrição |
1169
+ | :--- | :---: | :--- |
1170
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1171
+ ```javascript
1172
+ let std = new Object();
1173
+ std.vRetPIS = 100.00;
1174
+ std.vRetCOFINS = 100.00;
1175
+ std.vRetCSLL = 100.00;
1176
+ std.vBCIRRF = 100.00;
1177
+ std.vIRRF = 100.00;
1178
+ std.vBCRetPrev = 100.00;
1179
+ std.vRetPrev = 100.00;
1180
+
1181
+ nfe.tagretTrib(std);
1182
+ ```
1183
+
1184
+ ### 🟢 function tagtransp(std)
1185
+ Node indicativo da forma de frete
1186
+
1187
+ | Parâmetro | Tipo | Descrição |
1188
+ | :--- | :---: | :--- |
1189
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1190
+
1191
+ ```javascript
1192
+ let std = new Object();
1193
+ std.modFrete = 1;
1194
+
1195
+ nfe.tagtransp(std);
1196
+ ```
1197
+
1198
+ ### 🔴 function tagtransporta(std)
1199
+ Node com os dados da transportadora
1200
+
1201
+ | Parâmetro | Tipo | Descrição |
1202
+ | :--- | :---: | :--- |
1203
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1204
+ ```javascript
1205
+ let std = new Object();
1206
+ std.xNome = 'Rodo Fulano';
1207
+ std.IE = '12345678901';
1208
+ std.xEnder = 'Rua Um, sem numero';
1209
+ std.xMun = 'Cotia';
1210
+ std.UF = 'SP';
1211
+ std.CNPJ = '12345678901234';//só pode haver um ou CNPJ ou CPF, se um deles é especificado o outro deverá ser null
1212
+ std.CPF = null;
1213
+
1214
+ nfe.tagtransporta(std);
1215
+ ```
1216
+
1217
+ ### 🔴 function tagretTransp(std)
1218
+ Node referente a retenção de ICMS do serviço de transporte
1219
+
1220
+ | Parâmetro | Tipo | Descrição |
1221
+ | :--- | :---: | :--- |
1222
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1223
+ ```javascript
1224
+ let std = new Object();
1225
+ std.vServ = 240.00;
1226
+ std.vBCRet = 240.00;
1227
+ std.pICMSRet = 1.00;
1228
+ std.vICMSRet = 2.40;
1229
+ std.CFOP = '5353';
1230
+ std.cMunFG = '3518800';
1231
+
1232
+ nfe.tagretTransp(std);
1233
+ ```
1234
+
1235
+ ### 🔴 function tagveicTransp(std)
1236
+ Node para informação do veículo trator
1237
+
1238
+ | Parâmetro | Tipo | Descrição |
1239
+ | :--- | :---: | :--- |
1240
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1241
+ ```javascript
1242
+ let std = new Object();
1243
+ std.placa = 'ABC1111';
1244
+ std.UF = 'RJ';
1245
+ std.RNTC = '999999';
1246
+
1247
+ nfe.tagveicTransp(std);
1248
+ ```
1249
+
1250
+ ### 🔴 function tagreboque(std)
1251
+ Node para informar os reboques/Dolly
1252
+
1253
+ | Parâmetro | Tipo | Descrição |
1254
+ | :--- | :---: | :--- |
1255
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1256
+ ```javascript
1257
+ let std = new Object();
1258
+ std.placa = 'BCB0897';
1259
+ std.UF = 'SP';
1260
+ std.RNTC = '123456';
1261
+
1262
+ nfe.tagreboque(std);
1263
+ ```
1264
+
1265
+ ### 🔴 function tagvagao(std)
1266
+ Node para informar o vagão usado
1267
+
1268
+ | Parâmetro | Tipo | Descrição |
1269
+ | :--- | :---: | :--- |
1270
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1271
+
1272
+ ```javascript
1273
+ let std = new Object();
1274
+ std.vagao = 'YY452-19';
1275
+
1276
+ nfe.tagvagao(std);
1277
+ ```
1278
+
1279
+ ### 🔴 function tagbalsa(std)
1280
+ Node para informar a balsa usada
1281
+
1282
+ | Parâmetro | Tipo | Descrição |
1283
+ | :--- | :---: | :--- |
1284
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1285
+
1286
+ ```javascript
1287
+ let std = new Object();
1288
+ std.balsa = 'BNAV111';
1289
+
1290
+ nfe.tagbalsa(std);
1291
+ ```
1292
+
1293
+
1294
+ ### 🔴 function tagvol(std)
1295
+ Node com as informações dos volumes transportados
1296
+
1297
+ | Parâmetro | Tipo | Descrição |
1298
+ | :--- | :---: | :--- |
1299
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1300
+ ```javascript
1301
+ let std = new Object();
1302
+ std.item = 1; //indicativo do numero do volume
1303
+ std.qVol = 2;
1304
+ std.esp = 'caixa';
1305
+ std.marca = 'OLX';
1306
+ std.nVol = '11111';
1307
+ std.pesoL = 10.50;
1308
+ std.pesoB = 11.00;
1309
+
1310
+ nfe.tagvol(std);
1311
+ ```
1312
+
1313
+ ### 🔴 function taglacres(std)
1314
+ Node com a identificação dos lacres, referentes ao volume
1315
+
1316
+ | Parâmetro | Tipo | Descrição |
1317
+ | :--- | :---: | :--- |
1318
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1319
+ ```javascript
1320
+ let std = new Object();
1321
+ std.item = 1; //indicativo do numero do volume
1322
+ std.nLacre = 'ZZEX425365';
1323
+
1324
+ nfe.taglacres(std);
1325
+ ```
1326
+
1327
+ ### 🔴 function tagfat(std)
1328
+ Node com os dados da fatura
1329
+
1330
+ | Parâmetro | Tipo | Descrição |
1331
+ | :--- | :---: | :--- |
1332
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1333
+ ```javascript
1334
+ let std = new Object();
1335
+ std.nFat = '1233';
1336
+ std.vOrig = 1254.22;
1337
+ std.vDesc = null;
1338
+ std.vLiq = 1254.22;
1339
+
1340
+ nfe.tagfat(std);
1341
+ ```
1342
+ ### 🔴 function tagdup(std)
1343
+ Node de informações das duplicatas
1344
+
1345
+ | Parâmetro | Tipo | Descrição |
1346
+ | :--- | :---: | :--- |
1347
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1348
+ ```javascript
1349
+ let std = new Object();
1350
+ std.nDup = '1233-1';
1351
+ std.dVenc = '2017-08-22';
1352
+ std.vDup = 1254.22;
1353
+
1354
+ nfe.tagdup(std);
1355
+ ```
1356
+
1357
+ ### 🔴 function tagpag(std)
1358
+ Node referente as formas de pagamento **OBRIGATÓRIO para NFCe a partir do layout 3.10**
1359
+ e também **obrigatório para NFe (modelo 55)** a partir do layout 4.00
1360
+
1361
+ | Parâmetro | Tipo | Descrição |
1362
+ | :--- | :---: | :--- |
1363
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1364
+
1365
+
1366
+ ```javascript
1367
+ let std = new Object();
1368
+ std.vTroco = null; //incluso no layout 4.00, obrigatório informar para NFCe (65)
1369
+
1370
+ nfe.tagpag(std);
1371
+ ```
1372
+ >NOTA: usualmente para NFe modelo 55, vTroco é null.
1373
+
1374
+ ### 🟢 function tagdetPag(std)
1375
+ Node com o detalhamento da forma de pagamento **OBRIGATÓRIO para NFCe e NFe layout4.00**
1376
+
1377
+ > NOTA: indPag re-incluso no layout 4.00 NT_2016_V1.51
1378
+ > NOTA: tPag 14 - duplicata foi removido do layout 4.00 na NT_2016_V1.51
1379
+
1380
+ | Parâmetro | Tipo | Descrição |
1381
+ | :--- | :---: | :--- |
1382
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1383
+ ```javascript
1384
+ let std = new Object();
1385
+ std.indPag = '0'; //0= Pagamento à Vista 1= Pagamento à Prazo
1386
+ std.tPag = '03';
1387
+ std.vPag = 200.00; //Obs: deve ser informado o valor pago pelo cliente
1388
+ std.CNPJ = '12345678901234';
1389
+ std.tBand = '01';
1390
+ std.cAut = '3333333';
1391
+ std.tpIntegra = 1; //incluso na NT 2015/002
1392
+ std.CNPJPag; //NT 2023.004 v1.00
1393
+ std.UFPag; //NT 2023.004 v1.00
1394
+ std.CNPJReceb; //NT 2023.004 v1.00
1395
+ std.idTermPag; //NT 2023.004 v1.00
1396
+
1397
+ nfe.tagdetPag(std);
1398
+ ```
1399
+ >NOTA: para NFe (modelo 55), temos ...
1400
+ >
1401
+ > vPag=0.00 **mas pode ter valor se a venda for à vista**
1402
+ >
1403
+ > tPag é usualmente:
1404
+
1405
+ > - 15 = Boleto Bancário
1406
+ > - 16 = Depósito Bancário
1407
+ > - 17 = Pagamento Instantâneo (PIX)
1408
+ > - 18 = Transferência bancária, Carteira Digital
1409
+ > - 19 = Programa de fidelidade, Cashback, Crédito Virtual
1410
+ > - 90 = Sem pagamento
1411
+ > - 98 = Regime Especial NFF
1412
+ > - 99 = Outros
1413
+ >
1414
+ > *Porém podem haver casos que os outros nodes e valores tenham de ser usados.*
1415
+
1416
+
1417
+ ### 🔴 function tagIntermed(std)
1418
+ Node referente aos dados do Intermediador NT 2020.006
1419
+
1420
+ | Parâmetro | Tipo | Descrição |
1421
+ | :--- | :---: | :--- |
1422
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1423
+
1424
+ ```javascript
1425
+ let std = new Object();
1426
+ std.CNPJ = '12345678901234';
1427
+ std.idCadIntTran = 'fulano';
1428
+
1429
+ nfe.tagIntermed(std);
1430
+ ```
1431
+
1432
+
1433
+ ### 🔴 function taginfAdic(std)
1434
+ Node referente as informações adicionais da NFe
1435
+
1436
+ | Parâmetro | Tipo | Descrição |
1437
+ | :--- | :---: | :--- |
1438
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1439
+
1440
+ ```javascript
1441
+ let std = new Object();
1442
+ std.infAdFisco = 'informacoes para o fisco';
1443
+ std.infCpl = 'informacoes complementares';
1444
+
1445
+ nfe.taginfAdic(std);
1446
+ ```
1447
+
1448
+ ### 🔴 function tagobsCont(std)
1449
+ Campo de uso livre do contribuinte, Informar o nome do campo no atributo xCampo e o conteúdo do campo no xTexto
1450
+
1451
+ *NOTA: pode ser usado, por exemplo, para indicar outros destinatários de e-mail, além do próprio destinatário da NFe, como o contador, etc.*
1452
+
1453
+ | Parâmetro | Tipo | Descrição |
1454
+ | :--- | :---: | :--- |
1455
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1456
+ ```javascript
1457
+ let std = new Object();
1458
+ std.xCampo = 'email';
1459
+ std.xTexto = 'algum@mail.com';
1460
+
1461
+ nfe.tagobsCont(std);
1462
+ ```
1463
+
1464
+ ### 🔴 function tagobsFisco(std)
1465
+ Campo de uso livre do Fisco. Informar o nome do campo no atributo xCampo e o conteúdo do campo no xTexto
1466
+
1467
+ | Parametro | Tipo | Descrição |
1468
+ | :--- | :---: | :--- |
1469
+ | std | stcClass | contêm os dados dos campos, nomeados conforme manual |
1470
+
1471
+ ```javascript
1472
+ let std = new Object();
1473
+ std.xCampo = 'Info';
1474
+ std.xTexto = 'alguma coisa';
1475
+
1476
+ nfe.tagobsFisco(std);
1477
+ ```
1478
+
1479
+
1480
+ ### 🔴 function tagprocRef(std)
1481
+ Node com a identificação do processo ou ato concessório
1482
+
1483
+ | Parâmetro | Tipo | Descrição |
1484
+ | :--- | :---: | :--- |
1485
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1486
+ ```javascript
1487
+ let std = new Object();
1488
+ std.nProc 'ks7277272';
1489
+ std.indProc = 0;
1490
+
1491
+ nfe.tagprocRef(std);
1492
+ ```
1493
+
1494
+ ### 🔴 function tagexporta(std)
1495
+ Node com dados de exportação.
1496
+
1497
+ | Parâmetro | Tipo | Descrição |
1498
+ | :--- | :---: | :--- |
1499
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1500
+ ```javascript
1501
+ let std = new Object();
1502
+ std.UFSaidaPais = 'PR';
1503
+ std.xLocExporta = 'Paranagua';
1504
+ std.xLocDespacho = 'Informação do Recinto Alfandegado';
1505
+
1506
+ nfe.tagexporta(std);
1507
+ ```
1508
+ ### 🔴 function tagcompra(std)
1509
+ Node com a informação adicional de compra
1510
+
1511
+ | Parâmetro | Tipo | Descrição |
1512
+ | :--- | :---: | :--- |
1513
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1514
+
1515
+ ```javascript
1516
+ let std = new Object();
1517
+ std.xNEmp = 'ajhjs8282828';
1518
+ std.xPed = '828288jjshsjhjwj';
1519
+ std.xCont = 'contrato 1234';
1520
+
1521
+ nfe.tagcompra(std);
1522
+ ```
1523
+
1524
+ ### 🔴 function tagcana(std)
1525
+ Node com as informações de registro aquisições de cana
1526
+
1527
+ | Parâmetro | Tipo | Descrição |
1528
+ | :--- | :---: | :--- |
1529
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1530
+
1531
+ ```javascript
1532
+ let std = new Object();
1533
+ std.safra = '2017';
1534
+ std.ref = '09/2017';
1535
+ std.qTotMes = 20000;
1536
+ std.qTotAnt = 18000;
1537
+ std.qTotGer = 38000;
1538
+ std.vFor = 2500.00;
1539
+ std.vTotDed = 500.00;
1540
+ std.vLiqFor = 2000.00;
1541
+
1542
+ nfe.tagcana(std);
1543
+ ```
1544
+
1545
+ ### 🔴 function tagforDia(std)
1546
+ Node informativo do fornecimento diário de cana
1547
+
1548
+ | Parâmetro | Tipo | Descrição |
1549
+ | :--- | :---: | :--- |
1550
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1551
+
1552
+ ```javascript
1553
+ let std = new Object();
1554
+ std.dia = 1;
1555
+ std.qtde = 1000;
1556
+
1557
+ nfe.tagforDia(std);
1558
+ ```
1559
+
1560
+ ### 🔴 function tagdeduc(std)
1561
+ Node Grupo Deduções – Taxas e Contribuições da aquisição de cana
1562
+
1563
+ | Parâmetro | Tipo | Descrição |
1564
+ | :--- | :---: | :--- |
1565
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1566
+ ```javascript
1567
+ let std = new Object();
1568
+ std.xDed = 'deducao 1';
1569
+ std.vDed = 100.00;
1570
+
1571
+ nfe.tagdeduc(std);
1572
+ ```
1573
+ ### 🔴 function taginfNFeSupl(std)
1574
+ Node das informações suplementares da NFCe.
1575
+
1576
+ *Não é necessário informar será preenchido automaticamente após a assinatura da NFCe*
1577
+
1578
+ | Parâmetro | Tipo | Descrição |
1579
+ | :--- | :---: | :--- |
1580
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1581
+
1582
+ ```javascript
1583
+ let std = new Object();
1584
+ std.qrcode;
1585
+ std.urlChave;
1586
+
1587
+ nfe.taginfNFeSupl(std);
1588
+ ```
1589
+
1590
+ ### 🟢 function taginfRespTec(std)
1591
+ Node da informação referente ao Responsável Técnico NT 2018.005
1592
+ **Esta tag é OPCIONAL mas se for passada todos os campos devem ser passados para a função.**
1593
+
1594
+ | Parâmetro | Tipo | Descrição |
1595
+ | :--- | :---: | :--- |
1596
+ | std | Object | contêm os dados dos campos, nomeados conforme manual |
1597
+
1598
+ ```javascript
1599
+ let std = new Object();
1600
+ std.CNPJ = '99999999999999'; //CNPJ da pessoa jurídica responsável pelo sistema utilizado na emissão do documento fiscal eletrônico
1601
+ std.xContato= 'Fulano de Tal'; //Nome da pessoa a ser contatada
1602
+ std.email = 'fulano@soft.com.br'; //E-mail da pessoa jurídica a ser contatada
1603
+ std.fone = '1155551122'; //Telefone da pessoa jurídica/física a ser contatada
1604
+ std.CSRT = 'G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO'; //Código de Segurança do Responsável Técnico
1605
+ std.idCSRT = '01'; //Identificador do CSRT
1606
+
1607
+ nfe.taginfRespTec(std);
1608
+ ```
1609
+
1610
+ ### 🔴 function montaNFe():boolean
1611
+ Este método chama o metodo monta(), mantido apenas para compatibilidade.
1612
+
1613
+ ```javascript
1614
+ $xml = nfe.montaNFe();
1615
+ ```
1616
+
1617
+ ### 🔴 function monta()
1618
+ Este método executa a montagem do XML
1619
+
1620
+ > NOTA: irá retornar uma Exception caso existam erros na montagem OU retorna o XML montado caso não hajam erros.
1621
+
1622
+ ```javascript
1623
+ $xml = nfe.monta();
1624
+ ```
1625
+
1626
+ ### 🔴 function getXMl():string
1627
+ Este método retorna o XML em uma string, mesmo que existam erros.
1628
+
1629
+ ```javascript
1630
+ $xml = nfe.getXML();
1631
+ ```
1632
+
1633
+ ### 🔴 function getErrors(): array
1634
+ Este método retorna os erros identificados na passagem dos parâmetros para a classe.
1635
+
1636
+ ```javascript
1637
+ $erros = nfe.getErrors();
1638
+ ```
1639
+
1640
+
1641
+ ### 🔴 function getChave():string
1642
+ Este método retorna o numero da chave da NFe
1643
+
1644
+ ```javascript
1645
+ $chave = nfe.getChave();
1646
+ ```
1647
+
1648
+ ### 🔴 function getModelo():int
1649
+ Este método retorna o modelo de NFe 55 ou 65
1650
+
1651
+ ```javascript
1652
+ $modelo = nfe.getModelo();
1653
+ ```