@plasoft/boletos 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/build/index.mjs CHANGED
@@ -19,12 +19,19 @@ var __async = (__this, __arguments, generator) => {
19
19
  });
20
20
  };
21
21
 
22
+ // src/types/Boletos.ts
23
+ var Banco = /* @__PURE__ */ ((Banco2) => {
24
+ Banco2["AILOS"] = "085";
25
+ Banco2["BRADESCO"] = "005";
26
+ return Banco2;
27
+ })(Banco || {});
28
+
22
29
  // src/ailos/gerarDadosBoleto.ts
23
30
  import { differenceInDays } from "date-fns";
24
31
 
25
32
  // src/utils/copy.ts
26
33
  function copy(texto, startPosition, endPosition) {
27
- let retorno = "";
34
+ let retorno2 = "";
28
35
  if (typeof texto === "number")
29
36
  texto = String(texto);
30
37
  if (!endPosition)
@@ -33,10 +40,10 @@ function copy(texto, startPosition, endPosition) {
33
40
  const index = i + 1;
34
41
  if (index >= startPosition && index <= endPosition) {
35
42
  const letra = texto[i];
36
- retorno += letra;
43
+ retorno2 += letra;
37
44
  }
38
45
  }
39
- return retorno;
46
+ return retorno2;
40
47
  }
41
48
 
42
49
  // src/utils/pafLeft.ts
@@ -48,52 +55,51 @@ function padLeft(numero, size) {
48
55
  }
49
56
 
50
57
  // src/ailos/gerarDadosBoleto.ts
51
- function gerarDadosBoleto(cedente, parcela) {
52
- return __async(this, null, function* () {
53
- try {
54
- parcela.valor = Number(parcela.valor);
55
- const fatorVencimento = getFatorVencimento(parcela.vencimento);
56
- const valor = getValor(parcela.valor);
57
- const convenio = padLeft(cedente.convenio, 6);
58
- const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
59
- const nossoNumero = padLeft(cedente.numero + cedente.numero_dv, 8) + numeroDocumento;
60
- const campoLivre = convenio + nossoNumero + padLeft(cedente.carteira, 2);
61
- const digitoGeral = getDigitoGeral(`0859${fatorVencimento}${valor}${campoLivre}`);
62
- const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
63
- const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
64
- const campo2 = copy(codigoBarra2, 25, 34);
65
- const campo3 = copy(codigoBarra2, 35, 44);
66
- const campo4 = copy(codigoBarra2, 5, 5);
67
- const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
68
- const digito1 = getDigito(campo1);
69
- const digito2 = getDigito(campo2);
70
- const digito3 = getDigito(campo3);
71
- const digito4 = getDigito(campo4);
72
- const dados = {
73
- fatorVencimento,
74
- valor,
75
- convenio,
76
- nossoNumero,
77
- campoLivre,
78
- digitoGeral,
79
- codigoBarra: codigoBarra2,
80
- numeroDocumento,
81
- campo1,
82
- campo2,
83
- campo3,
84
- campo4,
85
- campo5,
86
- digito1,
87
- digito2,
88
- digito3,
89
- digito4
90
- };
91
- return dados;
92
- } catch (error) {
93
- console.log("Falha ao gerar dados do boleto", error);
94
- return null;
95
- }
96
- });
58
+ function gerarDadosBoleto({ dados }) {
59
+ try {
60
+ const { bancario, parcela } = dados;
61
+ parcela.valor = Number(parcela.valor);
62
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
63
+ const valor = getValor(parcela.valor);
64
+ const convenio = padLeft(bancario.convenio, 6);
65
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
66
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
67
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
68
+ const digitoGeral = getDigitoGeral(`0859${fatorVencimento}${valor}${campoLivre}`);
69
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
70
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
71
+ const campo2 = copy(codigoBarra2, 25, 34);
72
+ const campo3 = copy(codigoBarra2, 35, 44);
73
+ const campo4 = copy(codigoBarra2, 5, 5);
74
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
75
+ const digito1 = getDigito(campo1);
76
+ const digito2 = getDigito(campo2);
77
+ const digito3 = getDigito(campo3);
78
+ const digito4 = getDigito(campo4);
79
+ const dadosBoleto = {
80
+ fatorVencimento,
81
+ valor,
82
+ convenio,
83
+ nossoNumero,
84
+ campoLivre,
85
+ digitoGeral,
86
+ codigoBarra: codigoBarra2,
87
+ numeroDocumento,
88
+ campo1,
89
+ campo2,
90
+ campo3,
91
+ campo4,
92
+ campo5,
93
+ digito1,
94
+ digito2,
95
+ digito3,
96
+ digito4
97
+ };
98
+ return dadosBoleto;
99
+ } catch (error) {
100
+ console.log("Falha ao gerar dados do boleto", error);
101
+ return null;
102
+ }
97
103
  }
98
104
  function getFatorVencimento(vencimento) {
99
105
  const data = new Date(1997, 9, 7);
@@ -148,7 +154,6 @@ function getDigito(texto) {
148
154
  }
149
155
 
150
156
  // src/ailos/gerarPDF.ts
151
- import path from "path";
152
157
  import BwipJs from "bwip-js";
153
158
 
154
159
  // src/utils/compileHbs.ts
@@ -183,64 +188,91 @@ var maskFormat_default = {
183
188
  codigoBarra
184
189
  };
185
190
 
191
+ // src/services/api.ts
192
+ import "dotenv/config";
193
+ import axios from "axios";
194
+ var api = axios.create({
195
+ baseURL: process.env.API_URL
196
+ });
197
+
198
+ // src/utils/getPathTemplates.ts
199
+ import path from "path";
200
+ function getPathTemplates(template) {
201
+ if (process.env.NODE_ENV === "dev") {
202
+ return path.resolve(process.cwd(), "views", template);
203
+ }
204
+ return path.resolve(__dirname, template);
205
+ }
206
+
186
207
  // src/ailos/gerarPDF.ts
187
- function gerarPDF(dados) {
188
- return __async(this, null, function* () {
208
+ function gerarPDF(_0) {
209
+ return __async(this, arguments, function* ({ dados }) {
189
210
  try {
211
+ const { generatePDF, dadosPDF } = dados;
190
212
  const codigoBarra2 = yield BwipJs.toBuffer({
191
213
  bcid: "interleaved2of5",
192
- text: dados.boleto.codigoBarra,
214
+ text: dadosPDF.boleto.codigoBarra,
193
215
  height: 20
194
216
  });
195
- dados.beneficiario.dadosBancarios.agencia = dados.beneficiario.dadosBancarios.agencia.padStart(4, "0");
196
- dados.beneficiario.dadosBancarios.conta = dados.beneficiario.dadosBancarios.conta.padStart(7, "0");
197
- dados.boleto.codigoBarra = maskFormat_default.codigoBarra(dados.boleto.codigoBarra);
198
- dados.boleto.codigoBarraImage = codigoBarra2.toString("base64");
199
- dados.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
200
- dados.beneficiario.cnpj
217
+ dadosPDF.beneficiario.dadosBancarios.agencia = dadosPDF.beneficiario.dadosBancarios.agencia.padStart(4, "0");
218
+ dadosPDF.beneficiario.dadosBancarios.conta = dadosPDF.beneficiario.dadosBancarios.conta.padStart(7, "0");
219
+ dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
220
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
221
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
222
+ dadosPDF.beneficiario.cnpj
201
223
  );
202
- dados.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
203
- dados.beneficiario.endereco.cep
224
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
225
+ dadosPDF.beneficiario.endereco.cep
204
226
  );
205
- dados.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
206
- dados.pagador.endereco.cep
227
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
228
+ dadosPDF.pagador.endereco.cep
207
229
  );
208
- dados.boleto.valorAcrescimo = maskFormat_default.numberToReal(
209
- dados.boleto.valorAcrescimo
230
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
231
+ dadosPDF.boleto.valorAcrescimo
210
232
  );
211
- dados.boleto.valorCobrado = maskFormat_default.numberToReal(
212
- dados.boleto.valorCobrado
233
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
234
+ dadosPDF.boleto.valorCobrado
213
235
  );
214
- dados.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
215
- dados.boleto.valorDescontoAbatimento
236
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
237
+ dadosPDF.boleto.valorDescontoAbatimento
216
238
  );
217
- dados.boleto.valorDocumento = maskFormat_default.numberToReal(
218
- dados.boleto.valorDocumento
239
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
240
+ dadosPDF.boleto.valorDocumento
219
241
  );
220
- dados.boleto.valorMulta = maskFormat_default.numberToReal(dados.boleto.valorMulta);
221
- dados.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
222
- dados.boleto.valorOutrasDeducoes
242
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
243
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
244
+ dadosPDF.boleto.valorOutrasDeducoes
223
245
  );
224
- if (dados.boleto.quantidade) {
225
- dados.boleto.quantidade = maskFormat_default.numberToReal(dados.boleto.quantidade);
246
+ if (dadosPDF.boleto.quantidade) {
247
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
226
248
  }
227
- dados.boleto.valor = maskFormat_default.numberToReal(dados.boleto.valor);
228
- const filePath = path.join(__dirname, "views", "boleto.hbs");
229
- const content = compileHbs(filePath, dados);
249
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
250
+ const content = compileHbs(getPathTemplates("ailos-boleto.hbs"), dadosPDF);
230
251
  const config = {
231
252
  displayHeaderFooter: false,
232
253
  path: "./boleto.pdf",
233
254
  format: "a4",
234
255
  printBackground: true
235
256
  };
257
+ let pdfBase64 = null;
258
+ if (generatePDF) {
259
+ pdfBase64 = yield generatePDF(content, config);
260
+ } else {
261
+ if (!api.defaults.baseURL) {
262
+ throw new Error("BaseURL api not found");
263
+ }
264
+ const response = yield api.post("/", { content, config });
265
+ pdfBase64 = response.data;
266
+ }
236
267
  return {
237
- erro: false
238
- // dados: response.data,
268
+ erro: false,
269
+ dados: pdfBase64
239
270
  };
240
271
  } catch (error) {
272
+ console.log(error);
241
273
  return {
242
274
  erro: true,
243
- dados: null
275
+ dados: error
244
276
  };
245
277
  }
246
278
  });
@@ -267,17 +299,482 @@ var Arquivo = class {
267
299
  };
268
300
 
269
301
  // src/ailos/gerarRemessa.ts
270
- function gerarRemessa(dados) {
271
- return __async(this, null, function* () {
302
+ function gerarRemessa({ dados }) {
303
+ try {
304
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
305
+ const arquivo = new Arquivo();
306
+ const dataAtual = /* @__PURE__ */ new Date();
307
+ const data = format(dataAtual, "ddMMyyyy");
308
+ const hora = format(dataAtual, "HHmmss");
309
+ const convenio = dadosBancario.convenio.padStart(7, "0");
310
+ const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
311
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
312
+ arquivo.add("085");
313
+ arquivo.add("0000");
314
+ arquivo.add("0");
315
+ arquivo.add(" ");
316
+ arquivo.add("2");
317
+ arquivo.add(beneficiario.cnpj);
318
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
319
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
320
+ arquivo.add(dadosBancario.agenciaDigito);
321
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
322
+ arquivo.add(dadosBancario.contaDigito);
323
+ arquivo.add(" ");
324
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
325
+ arquivo.add("AILOS".padEnd(30, " "));
326
+ arquivo.add(" ");
327
+ arquivo.add("1");
328
+ arquivo.add(data);
329
+ arquivo.add(hora);
330
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
331
+ arquivo.add("087");
332
+ arquivo.add("00000");
333
+ arquivo.add(" ".padEnd(20, " "));
334
+ arquivo.add(" ".padEnd(20, " "));
335
+ arquivo.add(" ".padEnd(29, " "));
336
+ arquivo.addLine();
337
+ arquivo.add("085");
338
+ arquivo.add("0001");
339
+ arquivo.add("1");
340
+ arquivo.add("R");
341
+ arquivo.add("01");
342
+ arquivo.add(" ");
343
+ arquivo.add("045");
344
+ arquivo.add(" ");
345
+ arquivo.add("2");
346
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
347
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
348
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
349
+ arquivo.add(dadosBancario.agenciaDigito);
350
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
351
+ arquivo.add(dadosBancario.contaDigito);
352
+ arquivo.add(" ");
353
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
354
+ arquivo.add(" ".padEnd(40, " "));
355
+ arquivo.add(" ".padEnd(40, " "));
356
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
357
+ arquivo.add(data);
358
+ arquivo.add("00000000");
359
+ arquivo.add(" ".padEnd(33, " "));
360
+ arquivo.addLine();
361
+ let sequencia = 1;
362
+ let quantidadeRegistro = 1;
363
+ let total = 0;
364
+ for (const boleto of boletos) {
365
+ const { pagador } = boleto;
366
+ const vencimento = format(new Date(boleto.vencimento), "ddMMyyyy");
367
+ total += Number(boleto.valor);
368
+ const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
369
+ const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
370
+ const jurosVencimento = format(
371
+ addDays(new Date(boleto.vencimento), 1),
372
+ "ddMMyyyy"
373
+ );
374
+ const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
375
+ const desconto = dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
376
+ const protesto = dadosBancario.diasProtesto > 0 ? "1" : "3";
377
+ const diasProtesto = protesto === "1" ? dadosBancario.diasProtesto.toString() : "00";
378
+ arquivo.add("085");
379
+ arquivo.add("0001");
380
+ arquivo.add("3");
381
+ arquivo.add(sequencia.toString().padStart(5, "0"));
382
+ arquivo.add("P");
383
+ arquivo.add(" ");
384
+ arquivo.add("01");
385
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
386
+ arquivo.add(dadosBancario.agenciaDigito);
387
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
388
+ arquivo.add(dadosBancario.contaDigito);
389
+ arquivo.add(" ");
390
+ arquivo.add(boleto.nossoNumero.padEnd(20, " "));
391
+ arquivo.add("1");
392
+ arquivo.add("1");
393
+ arquivo.add("1");
394
+ arquivo.add("2");
395
+ arquivo.add("2");
396
+ arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
397
+ arquivo.add(vencimento);
398
+ arquivo.add(
399
+ Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
400
+ );
401
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
402
+ arquivo.add(dadosBancario.agenciaDigito);
403
+ arquivo.add("02");
404
+ arquivo.add("A");
405
+ arquivo.add(data);
406
+ arquivo.add(codigoJuro);
407
+ arquivo.add(jurosVencimento);
408
+ arquivo.add(juros.replace(".", "").padStart(15, "0"));
409
+ arquivo.add(codigoDesconto);
410
+ arquivo.add(vencimento);
411
+ arquivo.add(desconto.replace(".", "").padStart(15, "0"));
412
+ arquivo.add("000000000000000");
413
+ arquivo.add("000000000000000");
414
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
415
+ arquivo.add(protesto);
416
+ arquivo.add(diasProtesto.padStart(1, "0"));
417
+ arquivo.add("2");
418
+ arquivo.add(" ");
419
+ arquivo.add("09");
420
+ arquivo.add("0000000000");
421
+ arquivo.add(" ");
422
+ sequencia++;
423
+ arquivo.addLine();
424
+ let tipoInscricao = "1";
425
+ if (pagador.pessoa === "F") {
426
+ tipoInscricao = "1";
427
+ } else {
428
+ tipoInscricao = "2";
429
+ }
430
+ pagador.endereco.logradouro = `${pagador.endereco.logradouro.substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
431
+ arquivo.add("085");
432
+ arquivo.add("0001");
433
+ arquivo.add("3");
434
+ arquivo.add(sequencia.toString().padStart(5, "0"));
435
+ arquivo.add("Q");
436
+ arquivo.add(" ");
437
+ arquivo.add("01");
438
+ arquivo.add(tipoInscricao);
439
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
440
+ arquivo.add(pagador.nome.substring(0, 40).padEnd(40, " "));
441
+ arquivo.add(pagador.endereco.logradouro.substring(0, 40).padEnd(40, " "));
442
+ arquivo.add(pagador.endereco.bairro.substring(0, 15).padEnd(15, " "));
443
+ arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
444
+ arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
445
+ arquivo.add(pagador.endereco.municipio.substring(0, 15).padEnd(15, " "));
446
+ arquivo.add(pagador.endereco.uf.padEnd(2, " "));
447
+ arquivo.add("0");
448
+ arquivo.add("000000000000000");
449
+ arquivo.add(" ".padEnd(40, " "));
450
+ arquivo.add("000");
451
+ arquivo.add(" ".padEnd(20, " "));
452
+ arquivo.add(" ".padEnd(8, " "));
453
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
454
+ if (dadosBancario.multaAtraso > 0) {
455
+ arquivo.addLine();
456
+ const multa = dadosBancario.multaAtraso.toFixed(2);
457
+ sequencia++;
458
+ arquivo.add("085");
459
+ arquivo.add("0001");
460
+ arquivo.add("3");
461
+ arquivo.add(sequencia.toString().padStart(5, "0"));
462
+ arquivo.add("R");
463
+ arquivo.add(" ");
464
+ arquivo.add("01");
465
+ arquivo.add("0");
466
+ arquivo.add("00000000");
467
+ arquivo.add("000000000000000");
468
+ arquivo.add("0");
469
+ arquivo.add("00000000");
470
+ arquivo.add("000000000000000");
471
+ arquivo.add("2");
472
+ arquivo.add(vencimento);
473
+ arquivo.add(multa.replace(".", "").padStart(15, "0"));
474
+ arquivo.add(" ".padEnd(10, " "));
475
+ arquivo.add(" ".padEnd(40, " "));
476
+ arquivo.add(" ".padEnd(40, " "));
477
+ arquivo.add(" ".padEnd(20, " "));
478
+ arquivo.add("00000000");
479
+ arquivo.add("000");
480
+ arquivo.add("00000");
481
+ arquivo.add(" ");
482
+ arquivo.add("000000000000");
483
+ arquivo.add(" ");
484
+ arquivo.add(" ");
485
+ arquivo.add("0");
486
+ arquivo.add("000000000");
487
+ }
488
+ arquivo.addLine();
489
+ quantidadeRegistro++;
490
+ }
491
+ arquivo.add("085");
492
+ arquivo.add("0001");
493
+ arquivo.add("5");
494
+ arquivo.add(" ".padEnd(9, " "));
495
+ arquivo.add((sequencia + 3).toString().padStart(6, "0"));
496
+ arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
497
+ arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
498
+ arquivo.add("0".padStart(6, "0"));
499
+ arquivo.add("0".padStart(17, "0"));
500
+ arquivo.add("0".padStart(6, "0"));
501
+ arquivo.add("0".padStart(17, "0"));
502
+ arquivo.add("0".padStart(6, "0"));
503
+ arquivo.add("0".padStart(17, "0"));
504
+ arquivo.add(" ".padStart(8, " "));
505
+ arquivo.add(" ".padStart(117, " "));
506
+ arquivo.addLine();
507
+ arquivo.add("085");
508
+ arquivo.add("9999");
509
+ arquivo.add("9");
510
+ arquivo.add(" ".padEnd(9, " "));
511
+ arquivo.add("000001");
512
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
513
+ arquivo.add("000000");
514
+ arquivo.add(" ".padEnd(205, " "));
515
+ return {
516
+ download: remessa2,
517
+ arquivo: arquivo.getArquivo()
518
+ };
519
+ } catch (error) {
520
+ console.log(error);
521
+ return null;
522
+ }
523
+ }
524
+
525
+ // src/ailos/gerarRetorno.ts
526
+ function gerarRetorno({ dados }) {
527
+ try {
528
+ const { arquivo } = dados;
529
+ const documentos = [];
530
+ let index = 0;
531
+ for (const item of arquivo) {
532
+ let linha = item;
533
+ const banco = linha.substring(0, 3);
534
+ const codigoRetorno = linha.substring(15, 17);
535
+ if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
536
+ let segmento = linha.substring(13, 14);
537
+ if (segmento === "T") {
538
+ const linhaDoc = linha.substring(105, 130).trimEnd();
539
+ let tipoDocumento = "INDEFINIDO";
540
+ let idDocumento = linhaDoc;
541
+ if (linhaDoc.includes("-")) {
542
+ const [tipoDoc, idDoc] = linhaDoc.split("-");
543
+ tipoDocumento = tipoDoc;
544
+ idDocumento = idDoc;
545
+ }
546
+ const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
547
+ linha = arquivo[index + 1];
548
+ segmento = linha.substring(13, 14);
549
+ if (segmento === "U") {
550
+ const valorAbatimentoString = linha.substring(47, 62);
551
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
552
+ const valorDescontoString = linha.substring(32, 47);
553
+ const valorDesconto = Number(valorDescontoString) / 100;
554
+ const valorPagoString = linha.substring(77, 92);
555
+ const valorPago = Number(valorPagoString) / 100;
556
+ const valorJurosString = linha.substring(17, 32);
557
+ const valorJuros = Number(valorJurosString) / 100;
558
+ const valorMulta = 0;
559
+ const descontos = valorAbatimento + valorDesconto;
560
+ const valorTotal = valorPago - valorJuros + descontos;
561
+ const documento = {
562
+ id_documento: idDocumento,
563
+ especie,
564
+ valor: valorPago,
565
+ valor_multa: valorMulta,
566
+ valor_juros: valorJuros,
567
+ valor_desconto: valorDesconto,
568
+ valor_total: valorTotal
569
+ };
570
+ documentos.push(documento);
571
+ }
572
+ }
573
+ }
574
+ index++;
575
+ }
576
+ return documentos;
577
+ } catch (error) {
578
+ console.log(error);
579
+ return null;
580
+ }
581
+ }
582
+
583
+ // src/ailos/index.ts
584
+ var ailos = {
585
+ gerarDadosBoleto,
586
+ gerarPDF,
587
+ gerarRemessa,
588
+ gerarRetorno
589
+ };
590
+
591
+ // src/bradesco/gerarDadosBoleto.ts
592
+ import { differenceInDays as differenceInDays2 } from "date-fns";
593
+ function gerarDadosBoleto2({ dados }) {
594
+ try {
595
+ const { bancario, parcela } = dados;
596
+ parcela.valor = Number(parcela.valor);
597
+ const fatorVencimento = getFatorVencimento2(parcela.vencimento);
598
+ const valor = getValor2(parcela.valor);
599
+ const convenio = padLeft(bancario.convenio, 6);
600
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
601
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
602
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
603
+ const digitoGeral = getDigitoGeral2(`0859${fatorVencimento}${valor}${campoLivre}`);
604
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
605
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
606
+ const campo2 = copy(codigoBarra2, 25, 34);
607
+ const campo3 = copy(codigoBarra2, 35, 44);
608
+ const campo4 = copy(codigoBarra2, 5, 5);
609
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
610
+ const digito1 = getDigito2(campo1);
611
+ const digito2 = getDigito2(campo2);
612
+ const digito3 = getDigito2(campo3);
613
+ const digito4 = getDigito2(campo4);
614
+ const dadosBoleto = {
615
+ fatorVencimento,
616
+ valor,
617
+ convenio,
618
+ nossoNumero,
619
+ campoLivre,
620
+ digitoGeral,
621
+ codigoBarra: codigoBarra2,
622
+ numeroDocumento,
623
+ campo1,
624
+ campo2,
625
+ campo3,
626
+ campo4,
627
+ campo5,
628
+ digito1,
629
+ digito2,
630
+ digito3,
631
+ digito4
632
+ };
633
+ return dadosBoleto;
634
+ } catch (error) {
635
+ console.log("Falha ao gerar dados do boleto", error);
636
+ return null;
637
+ }
638
+ }
639
+ function getFatorVencimento2(vencimento) {
640
+ const data = new Date(1997, 9, 7);
641
+ return differenceInDays2(new Date(vencimento), data).toString();
642
+ }
643
+ function getValor2(valor) {
644
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
645
+ return padLeft(valorFormatado, 10);
646
+ }
647
+ function getDigitoGeral2(texto) {
648
+ let i = 43;
649
+ let j = 1;
650
+ let soma = 0;
651
+ let digito = 0;
652
+ while (i >= 1) {
653
+ j++;
654
+ if (j === 10)
655
+ j = 2;
656
+ const valor = Number(copy(texto, i, i));
657
+ soma += j * valor;
658
+ i--;
659
+ }
660
+ const restoDivisao = soma % 11;
661
+ digito = 11 - restoDivisao;
662
+ if (digito === 0 || digito === 1 || digito > 9)
663
+ digito = 1;
664
+ return String(digito);
665
+ }
666
+ function getDigito2(texto) {
667
+ let i = texto.length;
668
+ let j = 1;
669
+ let total = 0;
670
+ let soma = 0;
671
+ let digito = 0;
672
+ while (i >= 1) {
673
+ j = j === 1 ? 2 : 1;
674
+ let valor = Number(copy(texto, i, i));
675
+ total = valor * j;
676
+ if (total >= 10) {
677
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
678
+ } else {
679
+ valor = total;
680
+ }
681
+ soma += valor;
682
+ i--;
683
+ }
684
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
685
+ digito = 10 - uni;
686
+ if (digito === 10)
687
+ digito = 0;
688
+ return String(digito);
689
+ }
690
+
691
+ // src/bradesco/gerarPDF.ts
692
+ import BwipJs2 from "bwip-js";
693
+ function gerarPDF2(_0) {
694
+ return __async(this, arguments, function* ({ dados }) {
695
+ try {
696
+ const { dadosPDF, generatePDF } = dados;
697
+ const codigoBarra2 = yield BwipJs2.toBuffer({
698
+ bcid: "interleaved2of5",
699
+ text: dadosPDF.boleto.codigoBarra,
700
+ height: 20
701
+ });
702
+ dadosPDF.beneficiario.dadosBancarios.agencia = dadosPDF.beneficiario.dadosBancarios.agencia.padStart(4, "0");
703
+ dadosPDF.beneficiario.dadosBancarios.conta = dadosPDF.beneficiario.dadosBancarios.conta.padStart(7, "0");
704
+ dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
705
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
706
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
707
+ dadosPDF.beneficiario.cnpj
708
+ );
709
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
710
+ dadosPDF.beneficiario.endereco.cep
711
+ );
712
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
713
+ dadosPDF.pagador.endereco.cep
714
+ );
715
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
716
+ dadosPDF.boleto.valorAcrescimo
717
+ );
718
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
719
+ dadosPDF.boleto.valorCobrado
720
+ );
721
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
722
+ dadosPDF.boleto.valorDescontoAbatimento
723
+ );
724
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
725
+ dadosPDF.boleto.valorDocumento
726
+ );
727
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
728
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
729
+ dadosPDF.boleto.valorOutrasDeducoes
730
+ );
731
+ if (dadosPDF.boleto.quantidade) {
732
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
733
+ }
734
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
735
+ const content = compileHbs(getPathTemplates("bradesco-boleto.hbs"), dados);
736
+ const config = {
737
+ displayHeaderFooter: false,
738
+ path: "./boleto.pdf",
739
+ format: "a4",
740
+ printBackground: true
741
+ };
742
+ let pdfBase64 = null;
743
+ if (generatePDF) {
744
+ pdfBase64 = yield generatePDF(content, config);
745
+ } else {
746
+ if (!api.defaults.baseURL) {
747
+ throw new Error("BaseURL api not found");
748
+ }
749
+ const response = yield api.post("/", { content, config });
750
+ pdfBase64 = response.data;
751
+ }
752
+ return {
753
+ erro: false,
754
+ dados: pdfBase64
755
+ };
756
+ } catch (error) {
757
+ return {
758
+ erro: true,
759
+ dados: null
760
+ };
761
+ }
762
+ });
763
+ }
764
+
765
+ // src/bradesco/gerarRemessa.ts
766
+ import { addDays as addDays2, format as format2 } from "date-fns";
767
+ function gerarRemessa2(_0) {
768
+ return __async(this, arguments, function* ({ dados }) {
272
769
  try {
273
- const { dadosBancario, beneficiario, boletos, pagador } = dados;
770
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
274
771
  const arquivo = new Arquivo();
275
772
  const dataAtual = /* @__PURE__ */ new Date();
276
- const data = format(dataAtual, "ddMMyyyy");
277
- const hora = format(dataAtual, "HHmmss");
773
+ const data = format2(dataAtual, "ddMMyyyy");
774
+ const hora = format2(dataAtual, "HHmmss");
278
775
  const convenio = dadosBancario.convenio.padStart(7, "0");
279
776
  const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
280
- const remessa = `REM${convenio}-${numero}-${data}.REM`;
777
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
281
778
  arquivo.add("085");
282
779
  arquivo.add("0000");
283
780
  arquivo.add("0");
@@ -319,7 +816,7 @@ function gerarRemessa(dados) {
319
816
  arquivo.add(dadosBancario.conta.padStart(12, "0"));
320
817
  arquivo.add(dadosBancario.contaDigito);
321
818
  arquivo.add(" ");
322
- arquivo.add(pagador.nome.substring(0, 30).padEnd(30, " "));
819
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
323
820
  arquivo.add(" ".padEnd(40, " "));
324
821
  arquivo.add(" ".padEnd(40, " "));
325
822
  arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
@@ -331,12 +828,13 @@ function gerarRemessa(dados) {
331
828
  let quantidadeRegistro = 1;
332
829
  let total = 0;
333
830
  for (const boleto of boletos) {
334
- const vencimento = format(new Date(boleto.vencimento), "ddMMyyyy");
831
+ const { pagador } = boleto;
832
+ const vencimento = format2(new Date(boleto.vencimento), "ddMMyyyy");
335
833
  total += Number(boleto.valor);
336
834
  const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
337
835
  const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
338
- const jurosVencimento = format(
339
- addDays(new Date(boleto.vencimento), 1),
836
+ const jurosVencimento = format2(
837
+ addDays2(new Date(boleto.vencimento), 1),
340
838
  "ddMMyyyy"
341
839
  );
342
840
  const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
@@ -481,7 +979,7 @@ function gerarRemessa(dados) {
481
979
  arquivo.add("000000");
482
980
  arquivo.add(" ".padEnd(205, " "));
483
981
  return {
484
- download: remessa,
982
+ download: remessa2,
485
983
  arquivo: arquivo.getArquivo()
486
984
  };
487
985
  } catch (error) {
@@ -491,18 +989,130 @@ function gerarRemessa(dados) {
491
989
  });
492
990
  }
493
991
 
494
- // src/ailos/index.ts
495
- var ailos = {
496
- gerarDadosBoleto,
497
- gerarPDF,
498
- gerarRemessa
499
- };
992
+ // src/bradesco/gerarRetorno.ts
993
+ function gerarRetorno2({ dados }) {
994
+ try {
995
+ const { arquivo } = dados;
996
+ const documentos = [];
997
+ let index = 0;
998
+ for (const item of arquivo) {
999
+ let linha = item;
1000
+ const banco = linha.substring(0, 3);
1001
+ const codigoRetorno = linha.substring(15, 17);
1002
+ if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
1003
+ let segmento = linha.substring(13, 14);
1004
+ if (segmento === "T") {
1005
+ let tipoDocumento = "";
1006
+ let idDocumento = "";
1007
+ const linhaDoc = linha.substring(105, 130).trimEnd();
1008
+ if (linhaDoc.includes("-")) {
1009
+ [tipoDocumento, idDocumento] = linha.split("-");
1010
+ } else {
1011
+ idDocumento = linhaDoc;
1012
+ }
1013
+ const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
1014
+ linha = arquivo[index + 1];
1015
+ segmento = linha.substring(13, 14);
1016
+ if (segmento === "U") {
1017
+ const valorAbatimentoString = linha.substring(47, 62);
1018
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
1019
+ const valorDescontoString = linha.substring(32, 47);
1020
+ const valorDesconto = Number(valorDescontoString) / 100;
1021
+ const valorPagoString = linha.substring(77, 92);
1022
+ const valorPago = Number(valorPagoString) / 100;
1023
+ const valorJurosString = linha.substring(17, 32);
1024
+ const valorJuros = Number(valorJurosString) / 100;
1025
+ const valorMulta = 0;
1026
+ const descontos = valorAbatimento + valorDesconto;
1027
+ const valorTotal = valorPago - valorJuros + descontos;
1028
+ const documento = {
1029
+ id_documento: idDocumento,
1030
+ especie,
1031
+ valor: valorTotal,
1032
+ acrescimo: valorMulta,
1033
+ desconto: valorDesconto
1034
+ };
1035
+ documentos.push(documento);
1036
+ }
1037
+ }
1038
+ }
1039
+ index++;
1040
+ }
1041
+ return documentos;
1042
+ } catch (error) {
1043
+ console.log(error);
1044
+ return null;
1045
+ }
1046
+ }
500
1047
 
501
1048
  // src/bradesco/index.ts
502
- function bradesco() {
503
- console.log("bradesco");
1049
+ var bradesco = {
1050
+ gerarDadosBoleto: gerarDadosBoleto2,
1051
+ gerarPDF: gerarPDF2,
1052
+ gerarRemessa: gerarRemessa2,
1053
+ gerarRetorno: gerarRetorno2
1054
+ };
1055
+
1056
+ // src/gerar.ts
1057
+ function gerar({ banco, dados }) {
1058
+ if (banco === "085" /* AILOS */) {
1059
+ return ailos.gerarDadosBoleto({ banco, dados });
1060
+ }
1061
+ if (banco === "005" /* BRADESCO */) {
1062
+ return bradesco.gerarDadosBoleto({ banco, dados });
1063
+ }
1064
+ }
1065
+
1066
+ // src/pdf.ts
1067
+ function pdf({ banco, dados }) {
1068
+ if (banco === "085" /* AILOS */) {
1069
+ return ailos.gerarPDF({ banco, dados });
1070
+ }
1071
+ if (banco === "005" /* BRADESCO */) {
1072
+ return bradesco.gerarPDF({ banco, dados });
1073
+ }
504
1074
  }
1075
+
1076
+ // src/remessa.ts
1077
+ function remessa({ banco, dados }) {
1078
+ if (banco === "085" /* AILOS */) {
1079
+ return ailos.gerarRemessa({ banco, dados });
1080
+ }
1081
+ if (banco === "005" /* BRADESCO */) {
1082
+ return bradesco.gerarRemessa({ banco, dados });
1083
+ }
1084
+ }
1085
+
1086
+ // src/retorno.ts
1087
+ function retorno({ banco, dados }) {
1088
+ if (banco === "085" /* AILOS */) {
1089
+ return ailos.gerarRetorno({ banco, dados });
1090
+ }
1091
+ if (banco === "005" /* BRADESCO */) {
1092
+ return bradesco.gerarRetorno({ banco, dados });
1093
+ }
1094
+ }
1095
+
1096
+ // src/config/index.ts
1097
+ function defineConfig({ apiClient }) {
1098
+ if (apiClient) {
1099
+ const { authorization, url } = apiClient;
1100
+ if (url)
1101
+ api.defaults.baseURL = url;
1102
+ if (authorization)
1103
+ api.defaults.headers.common.Authorization = authorization;
1104
+ }
1105
+ }
1106
+
1107
+ // src/index.ts
1108
+ var src_default = {
1109
+ gerar,
1110
+ pdf,
1111
+ remessa,
1112
+ retorno
1113
+ };
505
1114
  export {
506
- ailos,
507
- bradesco
1115
+ Banco,
1116
+ src_default as default,
1117
+ defineConfig
508
1118
  };