Skip to content

Commit 8e4ac9c

Browse files
committed
criado c100 e c170 importacao xml
1 parent 1675917 commit 8e4ac9c

File tree

9 files changed

+283
-34
lines changed

9 files changed

+283
-34
lines changed

src/app/blocos/blocoC.js

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ const {
22
convertToFloat,
33
convertStringToDateSped
44
} = require("../util/conversores");
5+
const NFe = require("djf-nfe");
6+
const { lerXml } = require("../util/utilidades");
7+
const RegC100 = require("../models/classes/ClassRegC100");
8+
const RegC170 = require("../models/classes/ClassRegC170");
59

610
const regC001 = (line, reg0000) => {
711
const ln = line.split("|");
@@ -15,7 +19,50 @@ const regC001 = (line, reg0000) => {
1519
}
1620
};
1721

18-
const regC100 = (line, reg0000) => {
22+
const regC100Xml = file => {
23+
let nfe = NFe(lerXml(file).toString());
24+
let info = nfe.identificacaoNFe();
25+
let emitente = nfe.emitente();
26+
let destinatario = nfe.destinatario();
27+
let protocolo = nfe.informacoesProtocolo();
28+
let total = nfe.total();
29+
let regC100 = new RegC100(
30+
(reg = "C100"),
31+
(indOper = info.tipoOperacao()),
32+
(indEmit = info.dataEmissao()),
33+
(codPart = emitente.cpf() || emitente.cnpj()),
34+
(codDest = destinatario.cpf() || destinatario.cnpj()),
35+
(codMod = "55"),
36+
(codSit = "00"),
37+
(ser = info.serie()),
38+
(numDoc = info.nrNota()),
39+
(chvNfe = protocolo.chave() || "nfe sem protocolo"),
40+
(dtDoc = info.dataEmissao()),
41+
(dtES = info.dataEmissao()),
42+
(vlDoc = total.valorNota()),
43+
(indPgto = "0"),
44+
(vlDesc = total.valorDesconto()),
45+
(vlAbatNt = 0),
46+
(vlMerc = total.valorProdutos()),
47+
(indFrt = "0"),
48+
(vlFrt = total.valorFrete()),
49+
(vlSeg = total.valorSeguro()),
50+
(vlOutDa = total.valorOutrasDespesas()),
51+
(vlBcIcms = total.baseCalculoIcms()),
52+
(vlIcms = total.valorIcms()),
53+
(vlBcIcmsSt = total.baseCalculoIcmsST()),
54+
(vlIcmsSt = total.valorIcmsST()),
55+
(vlIpi = total.valorIPI()),
56+
(vlPis = total.valorPIS()),
57+
(vlCofins = total.valorCOFINS()),
58+
(vlPisSt = "0.00"),
59+
(vlCofinsSt = "0.00"),
60+
(flag = "xml")
61+
);
62+
return regC100;
63+
};
64+
65+
const regC100Sped = (line, reg0000) => {
1966
const ln = line.split("|");
2067
if (line[0] == "|" && ln[1] == "C100") {
2168
return {
@@ -302,6 +349,82 @@ const regC165 = (line, reg0000) => {
302349
}
303350
};
304351

352+
const regC170Xml = file => {
353+
const regsC170 = [];
354+
const nfe = NFe(lerXml(file).toString());
355+
const info = nfe.identificacaoNFe();
356+
const emitente = nfe.emitente();
357+
const destinatario = nfe.destinatario();
358+
const protocolo = nfe.informacoesProtocolo();
359+
const total = nfe.total();
360+
const regC100xmlok = regC100Xml(file);
361+
const totalItens = nfe.nrItens();
362+
363+
for (let i = 1; i <= totalItens; i++) {
364+
let item = nfe.item(i);
365+
let icms = item.imposto().icms();
366+
let ipi = item.imposto().ipi();
367+
let pis = item.imposto().pis();
368+
369+
let _cstIpi = "";
370+
let _aliqIpi = "";
371+
let _vlIpi = "";
372+
let _BcIpi = "";
373+
374+
if (item.imposto().ipi()) {
375+
_cstIpi = ipi.cst();
376+
_aliqIpi = ipi.porcentagemIPI();
377+
_vlIpi = ipi.valorIPI();
378+
_BcIpi = ipi.baseCalculo();
379+
}
380+
381+
let cofins = item.imposto().cofins();
382+
const regC170 = new RegC170(
383+
(reg = "C170"),
384+
(numItem = i),
385+
(codItem = item.codigo()),
386+
(descrCompl = item.descricao()),
387+
(qtd = item.quantidadeComercial()),
388+
(unid = item.unidadeComercial()),
389+
(vlItem = item.valorUnitario() * qtd),
390+
(vlDesc = item.valorDesconto()),
391+
(indMov = "0"),
392+
(cstIcms = `${icms.origem()}${icms.cst()}`),
393+
(cfop = item.cfop()),
394+
(codNat = ""),
395+
(vlBcIcms = icms.baseCalculo()),
396+
(aliqIcms = icms.porcetagemIcms()),
397+
(vlIcms = icms.valorIcms()),
398+
(vlBcIcmsSt = icms.baseCalculoIcmsST()),
399+
(aliqSt = icms.porcetagemIcmsST()),
400+
(vlIcmsSt = icms.valorIcmsST()),
401+
(indApur = ""),
402+
(cstIpi = _cstIpi),
403+
(codEnq = ""),
404+
(vlBcIpi = _BcIpi),
405+
(aliIpi = _aliqIpi),
406+
(vlIpi = _vlIpi),
407+
(cstPis = pis.cst()),
408+
(vlBcPis = pis.baseCalculo()),
409+
(aliqPis = pis.porcentagemPIS()),
410+
(quantBcPis = ""),
411+
(aliqPis2 = ""),
412+
(vlPis = pis.valorPIS()),
413+
(cstCofins = cofins.cst()),
414+
(vlBcCofins = cofins.baseCalculo()),
415+
(aliCofins = cofins.porcentagemCOFINS()),
416+
(quantBcCofins = ""),
417+
(aliCofins2 = ""),
418+
(vlCofins = cofins.valorCOFINS()),
419+
(codCta = ""),
420+
(flag = "xml"),
421+
(regC100 = regC100xmlok)
422+
);
423+
regsC170.push(regC170);
424+
}
425+
return regsC170;
426+
};
427+
305428
const regC170 = (line, regC100, reg0000) => {
306429
const ln = line.split("|");
307430
if (line[0] == "|" && ln[1] == "C170") {
@@ -1189,7 +1312,8 @@ const regC990 = (line, reg0000) => {
11891312

11901313
module.exports = {
11911314
regC001,
1192-
regC100,
1315+
regC100Sped,
1316+
regC100Xml,
11931317
regC101,
11941318
regC105,
11951319
regC110,
@@ -1206,6 +1330,7 @@ module.exports = {
12061330
regC160,
12071331
regC165,
12081332
regC170,
1333+
regC170Xml,
12091334
regC171,
12101335
regC172,
12111336
regC173,

src/app/models/BlocoC/RegC100.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ const RegSchema = new mongoose.Schema({
1616
codPart: {
1717
type: String
1818
},
19+
codDest: {
20+
type: String
21+
},
1922
codMod: {
2023
type: String,
2124
required: true

src/app/models/BlocoC/RegC170.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,7 @@ const RegSchema = new mongoose.Schema({
133133
required: true
134134
},
135135
reg0000: {
136-
type: Object,
137-
required: true
136+
type: Object
138137
}
139138
});
140139

src/app/models/classes/ClassRegC100.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class RegC100 {
44
indOper,
55
indEmit,
66
codPart,
7+
codDest,
78
codMod,
89
codSit,
910
ser,
@@ -35,6 +36,7 @@ class RegC100 {
3536
this.indOper = indOper;
3637
this.indEmit = indEmit;
3738
this.codPart = codPart;
39+
this.codDest = codDest;
3840
this.codMod = codMod;
3941
this.codSit = codSit;
4042
this.ser = ser;
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
class RegC170 {
2+
constructor(
3+
reg,
4+
numItem,
5+
codItem,
6+
descrCompl,
7+
qtd,
8+
unid,
9+
vlItem,
10+
vlDesc,
11+
indMov,
12+
cstIcms,
13+
cfop,
14+
codNat,
15+
vlBcIcms,
16+
aliqIcms,
17+
vlIcms,
18+
vlBcIcmsSt,
19+
aliqSt,
20+
vlIcmsSt,
21+
indApur,
22+
cstIpi,
23+
codEnq,
24+
vlBcIpi,
25+
aliqIpi,
26+
vlIpi,
27+
cstPis,
28+
vlBcPis,
29+
aliqPis,
30+
quantBcPis,
31+
aliqPis2,
32+
vlPis,
33+
cstCofins,
34+
vlBcCofins,
35+
aliqCofins,
36+
quantBcCofins,
37+
aliqCofins2,
38+
vlCofins,
39+
codCta,
40+
flag,
41+
regC100,
42+
reg0000
43+
) {
44+
this.reg = reg;
45+
this.numItem = numItem;
46+
this.codItem = codItem;
47+
this.descrCompl = descrCompl;
48+
this.qtd = qtd;
49+
this.unid = unid;
50+
this.vlItem = vlItem;
51+
this.vlDesc = vlDesc;
52+
this.indMov = indMov;
53+
this.cstIcms = cstIcms;
54+
this.cfop = cfop;
55+
this.codNat = codNat;
56+
this.vlBcIcms = vlBcIcms;
57+
this.aliqIcms = aliqIcms;
58+
this.vlIcms = vlIcms;
59+
this.vlBcIcmsSt = vlBcIcmsSt;
60+
this.aliqSt = aliqSt;
61+
this.vlIcmsSt = vlIcmsSt;
62+
this.indApur = indApur;
63+
this.cstIpi = cstIpi;
64+
this.codEnq = codEnq;
65+
this.vlBcIpi = vlBcIpi;
66+
this.aliqIpi = aliqIpi;
67+
this.vlIpi = vlIpi;
68+
this.cstPis = cstPis;
69+
this.vlBcPis = vlBcPis;
70+
this.aliqPis = aliqPis;
71+
this.quantBcPis = quantBcPis;
72+
this.aliqPis2 = aliqPis2;
73+
this.vlPis = vlPis;
74+
this.cstCofins = cstCofins;
75+
this.vlBcCofins = vlBcCofins;
76+
this.aliqCofins = aliqCofins;
77+
this.quantBcCofins = quantBcCofins;
78+
this.aliqCofins2 = aliqCofins2;
79+
this.vlCofins = vlCofins;
80+
this.codCta = codCta;
81+
this.flag = flag;
82+
this.regC100 = regC100;
83+
this.reg0000 = reg0000;
84+
}
85+
}
86+
87+
module.exports = RegC170;

src/app/util/utilidades.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const fs = require("fs");
2+
const path = require("path");
3+
4+
const lerXml = file => {
5+
return fs.readFileSync(path.resolve("uploads", "xmls", file), "utf-8");
6+
};
7+
8+
module.exports = { lerXml };

src/varios_testes/importa_arquivos_sped.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const {
88
reg0200,
99
reg0220
1010
} = require("../app/blocos/bloco0");
11-
const { regC100, regC170 } = require("../app/blocos/blocoC");
11+
const { regC100Sped, regC170 } = require("../app/blocos/blocoC");
1212
const { regH010 } = require("../app/blocos/blocoH");
1313
const { reg9999 } = require("../app/blocos/bloco9");
1414
const path = require("path");
@@ -105,9 +105,9 @@ const readSped = file => {
105105
});
106106
}
107107

108-
if (regC100(line, r0000)) {
109-
regC100p = regC100(line, r0000);
110-
RegC100Model.create(regC100(line, r0000), (err, result) => {
108+
if (regC100Sped(line, r0000)) {
109+
regC100p = regC100Sped(line, r0000);
110+
RegC100Model.create(regC100Sped(line, r0000), (err, result) => {
111111
if (err) {
112112
console.log(err);
113113
} else {
Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,39 @@
11
const fs = require("fs");
22
const path = require("path");
3-
const NFe = require("djf-nfe");
4-
const RegC100 = require("../app/models/classes/ClassRegC100");
53

6-
const files = fs.readdirSync(path.resolve("uploads", "xmls"));
7-
8-
const lerXml = file => {
9-
return fs.readFileSync(path.resolve("uploads", "xmls", file), "utf-8");
4+
const RegC100Model = require("../app/models/BlocoC/RegC100");
5+
const RegC170Model = require("../app/models/BlocoC/RegC170");
6+
const { regC100Xml, regC170Xml } = require("../app/blocos/blocoC");
7+
const mongoose = require("mongoose");
8+
const { mongodb } = require("../config/database");
9+
const database = uri => {
10+
mongoose.connect(uri, {
11+
useCreateIndex: true,
12+
useNewUrlParser: true
13+
});
1014
};
15+
database(mongodb.uri);
1116

12-
let regC100 = new RegC100((reg = "C100"));
17+
const files = fs.readdirSync(path.resolve("uploads", "xmls"));
1318

1419
files.forEach(file => {
15-
let nfe = NFe(lerXml(file).toString());
16-
let info = nfe.identificacaoNFe();
17-
let emitente = nfe.emitente();
18-
let protocolo = nfe.informacoesProtocolo();
19-
let regC100 = new RegC100(
20-
(reg = "C100"),
21-
(indOper = info.tipoOperacao()),
22-
(indEmit = info.dataEmissao()),
23-
(codPart = emitente.cpf() || emitente.cnpj()),
24-
(codMod = "55"),
25-
(codSit = "00"),
26-
(ser = info.serie()),
27-
(numDoc = info.nrNota()),
28-
(chvNfe = protocolo.chave() || "nfe sem protocolo")
29-
);
30-
// console.log(lerXml(file).toString());
31-
console.log(regC100);
20+
let regC100 = regC100Xml(file);
21+
RegC100Model.create(regC100, (err, result) => {
22+
if (err) {
23+
console.log(err);
24+
} else {
25+
console.log(`Inseriu ${regC100.chvNfe}`);
26+
}
27+
});
28+
29+
let regC170 = regC170Xml(file);
30+
regC170.forEach(itemRegC170 => {
31+
RegC170Model.create(itemRegC170, (err, result) => {
32+
if (err) {
33+
console.log(err);
34+
} else {
35+
console.log(`Inseriu ${regC100.chvNfe}`);
36+
}
37+
});
38+
});
3239
});

0 commit comments

Comments
 (0)