@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.js CHANGED
@@ -50,17 +50,25 @@ var __async = (__this, __arguments, generator) => {
50
50
  // src/index.ts
51
51
  var src_exports = {};
52
52
  __export(src_exports, {
53
- ailos: () => ailos,
54
- bradesco: () => bradesco
53
+ Banco: () => Banco,
54
+ default: () => src_default,
55
+ defineConfig: () => defineConfig
55
56
  });
56
57
  module.exports = __toCommonJS(src_exports);
57
58
 
59
+ // src/types/Boletos.ts
60
+ var Banco = /* @__PURE__ */ ((Banco2) => {
61
+ Banco2["AILOS"] = "085";
62
+ Banco2["BRADESCO"] = "005";
63
+ return Banco2;
64
+ })(Banco || {});
65
+
58
66
  // src/ailos/gerarDadosBoleto.ts
59
67
  var import_date_fns = require("date-fns");
60
68
 
61
69
  // src/utils/copy.ts
62
70
  function copy(texto, startPosition, endPosition) {
63
- let retorno = "";
71
+ let retorno2 = "";
64
72
  if (typeof texto === "number")
65
73
  texto = String(texto);
66
74
  if (!endPosition)
@@ -69,10 +77,10 @@ function copy(texto, startPosition, endPosition) {
69
77
  const index = i + 1;
70
78
  if (index >= startPosition && index <= endPosition) {
71
79
  const letra = texto[i];
72
- retorno += letra;
80
+ retorno2 += letra;
73
81
  }
74
82
  }
75
- return retorno;
83
+ return retorno2;
76
84
  }
77
85
 
78
86
  // src/utils/pafLeft.ts
@@ -84,52 +92,51 @@ function padLeft(numero, size) {
84
92
  }
85
93
 
86
94
  // src/ailos/gerarDadosBoleto.ts
87
- function gerarDadosBoleto(cedente, parcela) {
88
- return __async(this, null, function* () {
89
- try {
90
- parcela.valor = Number(parcela.valor);
91
- const fatorVencimento = getFatorVencimento(parcela.vencimento);
92
- const valor = getValor(parcela.valor);
93
- const convenio = padLeft(cedente.convenio, 6);
94
- const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
95
- const nossoNumero = padLeft(cedente.numero + cedente.numero_dv, 8) + numeroDocumento;
96
- const campoLivre = convenio + nossoNumero + padLeft(cedente.carteira, 2);
97
- const digitoGeral = getDigitoGeral(`0859${fatorVencimento}${valor}${campoLivre}`);
98
- const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
99
- const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
100
- const campo2 = copy(codigoBarra2, 25, 34);
101
- const campo3 = copy(codigoBarra2, 35, 44);
102
- const campo4 = copy(codigoBarra2, 5, 5);
103
- const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
104
- const digito1 = getDigito(campo1);
105
- const digito2 = getDigito(campo2);
106
- const digito3 = getDigito(campo3);
107
- const digito4 = getDigito(campo4);
108
- const dados = {
109
- fatorVencimento,
110
- valor,
111
- convenio,
112
- nossoNumero,
113
- campoLivre,
114
- digitoGeral,
115
- codigoBarra: codigoBarra2,
116
- numeroDocumento,
117
- campo1,
118
- campo2,
119
- campo3,
120
- campo4,
121
- campo5,
122
- digito1,
123
- digito2,
124
- digito3,
125
- digito4
126
- };
127
- return dados;
128
- } catch (error) {
129
- console.log("Falha ao gerar dados do boleto", error);
130
- return null;
131
- }
132
- });
95
+ function gerarDadosBoleto({ dados }) {
96
+ try {
97
+ const { bancario, parcela } = dados;
98
+ parcela.valor = Number(parcela.valor);
99
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
100
+ const valor = getValor(parcela.valor);
101
+ const convenio = padLeft(bancario.convenio, 6);
102
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
103
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
104
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
105
+ const digitoGeral = getDigitoGeral(`0859${fatorVencimento}${valor}${campoLivre}`);
106
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
107
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
108
+ const campo2 = copy(codigoBarra2, 25, 34);
109
+ const campo3 = copy(codigoBarra2, 35, 44);
110
+ const campo4 = copy(codigoBarra2, 5, 5);
111
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
112
+ const digito1 = getDigito(campo1);
113
+ const digito2 = getDigito(campo2);
114
+ const digito3 = getDigito(campo3);
115
+ const digito4 = getDigito(campo4);
116
+ const dadosBoleto = {
117
+ fatorVencimento,
118
+ valor,
119
+ convenio,
120
+ nossoNumero,
121
+ campoLivre,
122
+ digitoGeral,
123
+ codigoBarra: codigoBarra2,
124
+ numeroDocumento,
125
+ campo1,
126
+ campo2,
127
+ campo3,
128
+ campo4,
129
+ campo5,
130
+ digito1,
131
+ digito2,
132
+ digito3,
133
+ digito4
134
+ };
135
+ return dadosBoleto;
136
+ } catch (error) {
137
+ console.log("Falha ao gerar dados do boleto", error);
138
+ return null;
139
+ }
133
140
  }
134
141
  function getFatorVencimento(vencimento) {
135
142
  const data = new Date(1997, 9, 7);
@@ -184,7 +191,6 @@ function getDigito(texto) {
184
191
  }
185
192
 
186
193
  // src/ailos/gerarPDF.ts
187
- var import_path = __toESM(require("path"));
188
194
  var import_bwip_js = __toESM(require("bwip-js"));
189
195
 
190
196
  // src/utils/compileHbs.ts
@@ -219,64 +225,91 @@ var maskFormat_default = {
219
225
  codigoBarra
220
226
  };
221
227
 
228
+ // src/services/api.ts
229
+ var import_config = require("dotenv/config");
230
+ var import_axios = __toESM(require("axios"));
231
+ var api = import_axios.default.create({
232
+ baseURL: process.env.API_URL
233
+ });
234
+
235
+ // src/utils/getPathTemplates.ts
236
+ var import_path = __toESM(require("path"));
237
+ function getPathTemplates(template) {
238
+ if (process.env.NODE_ENV === "dev") {
239
+ return import_path.default.resolve(process.cwd(), "views", template);
240
+ }
241
+ return import_path.default.resolve(__dirname, template);
242
+ }
243
+
222
244
  // src/ailos/gerarPDF.ts
223
- function gerarPDF(dados) {
224
- return __async(this, null, function* () {
245
+ function gerarPDF(_0) {
246
+ return __async(this, arguments, function* ({ dados }) {
225
247
  try {
248
+ const { generatePDF, dadosPDF } = dados;
226
249
  const codigoBarra2 = yield import_bwip_js.default.toBuffer({
227
250
  bcid: "interleaved2of5",
228
- text: dados.boleto.codigoBarra,
251
+ text: dadosPDF.boleto.codigoBarra,
229
252
  height: 20
230
253
  });
231
- dados.beneficiario.dadosBancarios.agencia = dados.beneficiario.dadosBancarios.agencia.padStart(4, "0");
232
- dados.beneficiario.dadosBancarios.conta = dados.beneficiario.dadosBancarios.conta.padStart(7, "0");
233
- dados.boleto.codigoBarra = maskFormat_default.codigoBarra(dados.boleto.codigoBarra);
234
- dados.boleto.codigoBarraImage = codigoBarra2.toString("base64");
235
- dados.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
236
- dados.beneficiario.cnpj
254
+ dadosPDF.beneficiario.dadosBancarios.agencia = dadosPDF.beneficiario.dadosBancarios.agencia.padStart(4, "0");
255
+ dadosPDF.beneficiario.dadosBancarios.conta = dadosPDF.beneficiario.dadosBancarios.conta.padStart(7, "0");
256
+ dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
257
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
258
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
259
+ dadosPDF.beneficiario.cnpj
237
260
  );
238
- dados.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
239
- dados.beneficiario.endereco.cep
261
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
262
+ dadosPDF.beneficiario.endereco.cep
240
263
  );
241
- dados.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
242
- dados.pagador.endereco.cep
264
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
265
+ dadosPDF.pagador.endereco.cep
243
266
  );
244
- dados.boleto.valorAcrescimo = maskFormat_default.numberToReal(
245
- dados.boleto.valorAcrescimo
267
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
268
+ dadosPDF.boleto.valorAcrescimo
246
269
  );
247
- dados.boleto.valorCobrado = maskFormat_default.numberToReal(
248
- dados.boleto.valorCobrado
270
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
271
+ dadosPDF.boleto.valorCobrado
249
272
  );
250
- dados.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
251
- dados.boleto.valorDescontoAbatimento
273
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
274
+ dadosPDF.boleto.valorDescontoAbatimento
252
275
  );
253
- dados.boleto.valorDocumento = maskFormat_default.numberToReal(
254
- dados.boleto.valorDocumento
276
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
277
+ dadosPDF.boleto.valorDocumento
255
278
  );
256
- dados.boleto.valorMulta = maskFormat_default.numberToReal(dados.boleto.valorMulta);
257
- dados.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
258
- dados.boleto.valorOutrasDeducoes
279
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
280
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
281
+ dadosPDF.boleto.valorOutrasDeducoes
259
282
  );
260
- if (dados.boleto.quantidade) {
261
- dados.boleto.quantidade = maskFormat_default.numberToReal(dados.boleto.quantidade);
283
+ if (dadosPDF.boleto.quantidade) {
284
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
262
285
  }
263
- dados.boleto.valor = maskFormat_default.numberToReal(dados.boleto.valor);
264
- const filePath = import_path.default.join(__dirname, "views", "boleto.hbs");
265
- const content = compileHbs(filePath, dados);
286
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
287
+ const content = compileHbs(getPathTemplates("ailos-boleto.hbs"), dadosPDF);
266
288
  const config = {
267
289
  displayHeaderFooter: false,
268
290
  path: "./boleto.pdf",
269
291
  format: "a4",
270
292
  printBackground: true
271
293
  };
294
+ let pdfBase64 = null;
295
+ if (generatePDF) {
296
+ pdfBase64 = yield generatePDF(content, config);
297
+ } else {
298
+ if (!api.defaults.baseURL) {
299
+ throw new Error("BaseURL api not found");
300
+ }
301
+ const response = yield api.post("/", { content, config });
302
+ pdfBase64 = response.data;
303
+ }
272
304
  return {
273
- erro: false
274
- // dados: response.data,
305
+ erro: false,
306
+ dados: pdfBase64
275
307
  };
276
308
  } catch (error) {
309
+ console.log(error);
277
310
  return {
278
311
  erro: true,
279
- dados: null
312
+ dados: error
280
313
  };
281
314
  }
282
315
  });
@@ -303,17 +336,482 @@ var Arquivo = class {
303
336
  };
304
337
 
305
338
  // src/ailos/gerarRemessa.ts
306
- function gerarRemessa(dados) {
307
- return __async(this, null, function* () {
339
+ function gerarRemessa({ dados }) {
340
+ try {
341
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
342
+ const arquivo = new Arquivo();
343
+ const dataAtual = /* @__PURE__ */ new Date();
344
+ const data = (0, import_date_fns2.format)(dataAtual, "ddMMyyyy");
345
+ const hora = (0, import_date_fns2.format)(dataAtual, "HHmmss");
346
+ const convenio = dadosBancario.convenio.padStart(7, "0");
347
+ const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
348
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
349
+ arquivo.add("085");
350
+ arquivo.add("0000");
351
+ arquivo.add("0");
352
+ arquivo.add(" ");
353
+ arquivo.add("2");
354
+ arquivo.add(beneficiario.cnpj);
355
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
356
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
357
+ arquivo.add(dadosBancario.agenciaDigito);
358
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
359
+ arquivo.add(dadosBancario.contaDigito);
360
+ arquivo.add(" ");
361
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
362
+ arquivo.add("AILOS".padEnd(30, " "));
363
+ arquivo.add(" ");
364
+ arquivo.add("1");
365
+ arquivo.add(data);
366
+ arquivo.add(hora);
367
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
368
+ arquivo.add("087");
369
+ arquivo.add("00000");
370
+ arquivo.add(" ".padEnd(20, " "));
371
+ arquivo.add(" ".padEnd(20, " "));
372
+ arquivo.add(" ".padEnd(29, " "));
373
+ arquivo.addLine();
374
+ arquivo.add("085");
375
+ arquivo.add("0001");
376
+ arquivo.add("1");
377
+ arquivo.add("R");
378
+ arquivo.add("01");
379
+ arquivo.add(" ");
380
+ arquivo.add("045");
381
+ arquivo.add(" ");
382
+ arquivo.add("2");
383
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
384
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
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(beneficiario.nome.substring(0, 30).padEnd(30, " "));
391
+ arquivo.add(" ".padEnd(40, " "));
392
+ arquivo.add(" ".padEnd(40, " "));
393
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
394
+ arquivo.add(data);
395
+ arquivo.add("00000000");
396
+ arquivo.add(" ".padEnd(33, " "));
397
+ arquivo.addLine();
398
+ let sequencia = 1;
399
+ let quantidadeRegistro = 1;
400
+ let total = 0;
401
+ for (const boleto of boletos) {
402
+ const { pagador } = boleto;
403
+ const vencimento = (0, import_date_fns2.format)(new Date(boleto.vencimento), "ddMMyyyy");
404
+ total += Number(boleto.valor);
405
+ const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
406
+ const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
407
+ const jurosVencimento = (0, import_date_fns2.format)(
408
+ (0, import_date_fns2.addDays)(new Date(boleto.vencimento), 1),
409
+ "ddMMyyyy"
410
+ );
411
+ const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
412
+ const desconto = dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
413
+ const protesto = dadosBancario.diasProtesto > 0 ? "1" : "3";
414
+ const diasProtesto = protesto === "1" ? dadosBancario.diasProtesto.toString() : "00";
415
+ arquivo.add("085");
416
+ arquivo.add("0001");
417
+ arquivo.add("3");
418
+ arquivo.add(sequencia.toString().padStart(5, "0"));
419
+ arquivo.add("P");
420
+ arquivo.add(" ");
421
+ arquivo.add("01");
422
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
423
+ arquivo.add(dadosBancario.agenciaDigito);
424
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
425
+ arquivo.add(dadosBancario.contaDigito);
426
+ arquivo.add(" ");
427
+ arquivo.add(boleto.nossoNumero.padEnd(20, " "));
428
+ arquivo.add("1");
429
+ arquivo.add("1");
430
+ arquivo.add("1");
431
+ arquivo.add("2");
432
+ arquivo.add("2");
433
+ arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
434
+ arquivo.add(vencimento);
435
+ arquivo.add(
436
+ Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
437
+ );
438
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
439
+ arquivo.add(dadosBancario.agenciaDigito);
440
+ arquivo.add("02");
441
+ arquivo.add("A");
442
+ arquivo.add(data);
443
+ arquivo.add(codigoJuro);
444
+ arquivo.add(jurosVencimento);
445
+ arquivo.add(juros.replace(".", "").padStart(15, "0"));
446
+ arquivo.add(codigoDesconto);
447
+ arquivo.add(vencimento);
448
+ arquivo.add(desconto.replace(".", "").padStart(15, "0"));
449
+ arquivo.add("000000000000000");
450
+ arquivo.add("000000000000000");
451
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
452
+ arquivo.add(protesto);
453
+ arquivo.add(diasProtesto.padStart(1, "0"));
454
+ arquivo.add("2");
455
+ arquivo.add(" ");
456
+ arquivo.add("09");
457
+ arquivo.add("0000000000");
458
+ arquivo.add(" ");
459
+ sequencia++;
460
+ arquivo.addLine();
461
+ let tipoInscricao = "1";
462
+ if (pagador.pessoa === "F") {
463
+ tipoInscricao = "1";
464
+ } else {
465
+ tipoInscricao = "2";
466
+ }
467
+ pagador.endereco.logradouro = `${pagador.endereco.logradouro.substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
468
+ arquivo.add("085");
469
+ arquivo.add("0001");
470
+ arquivo.add("3");
471
+ arquivo.add(sequencia.toString().padStart(5, "0"));
472
+ arquivo.add("Q");
473
+ arquivo.add(" ");
474
+ arquivo.add("01");
475
+ arquivo.add(tipoInscricao);
476
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
477
+ arquivo.add(pagador.nome.substring(0, 40).padEnd(40, " "));
478
+ arquivo.add(pagador.endereco.logradouro.substring(0, 40).padEnd(40, " "));
479
+ arquivo.add(pagador.endereco.bairro.substring(0, 15).padEnd(15, " "));
480
+ arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
481
+ arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
482
+ arquivo.add(pagador.endereco.municipio.substring(0, 15).padEnd(15, " "));
483
+ arquivo.add(pagador.endereco.uf.padEnd(2, " "));
484
+ arquivo.add("0");
485
+ arquivo.add("000000000000000");
486
+ arquivo.add(" ".padEnd(40, " "));
487
+ arquivo.add("000");
488
+ arquivo.add(" ".padEnd(20, " "));
489
+ arquivo.add(" ".padEnd(8, " "));
490
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
491
+ if (dadosBancario.multaAtraso > 0) {
492
+ arquivo.addLine();
493
+ const multa = dadosBancario.multaAtraso.toFixed(2);
494
+ sequencia++;
495
+ arquivo.add("085");
496
+ arquivo.add("0001");
497
+ arquivo.add("3");
498
+ arquivo.add(sequencia.toString().padStart(5, "0"));
499
+ arquivo.add("R");
500
+ arquivo.add(" ");
501
+ arquivo.add("01");
502
+ arquivo.add("0");
503
+ arquivo.add("00000000");
504
+ arquivo.add("000000000000000");
505
+ arquivo.add("0");
506
+ arquivo.add("00000000");
507
+ arquivo.add("000000000000000");
508
+ arquivo.add("2");
509
+ arquivo.add(vencimento);
510
+ arquivo.add(multa.replace(".", "").padStart(15, "0"));
511
+ arquivo.add(" ".padEnd(10, " "));
512
+ arquivo.add(" ".padEnd(40, " "));
513
+ arquivo.add(" ".padEnd(40, " "));
514
+ arquivo.add(" ".padEnd(20, " "));
515
+ arquivo.add("00000000");
516
+ arquivo.add("000");
517
+ arquivo.add("00000");
518
+ arquivo.add(" ");
519
+ arquivo.add("000000000000");
520
+ arquivo.add(" ");
521
+ arquivo.add(" ");
522
+ arquivo.add("0");
523
+ arquivo.add("000000000");
524
+ }
525
+ arquivo.addLine();
526
+ quantidadeRegistro++;
527
+ }
528
+ arquivo.add("085");
529
+ arquivo.add("0001");
530
+ arquivo.add("5");
531
+ arquivo.add(" ".padEnd(9, " "));
532
+ arquivo.add((sequencia + 3).toString().padStart(6, "0"));
533
+ arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
534
+ arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
535
+ arquivo.add("0".padStart(6, "0"));
536
+ arquivo.add("0".padStart(17, "0"));
537
+ arquivo.add("0".padStart(6, "0"));
538
+ arquivo.add("0".padStart(17, "0"));
539
+ arquivo.add("0".padStart(6, "0"));
540
+ arquivo.add("0".padStart(17, "0"));
541
+ arquivo.add(" ".padStart(8, " "));
542
+ arquivo.add(" ".padStart(117, " "));
543
+ arquivo.addLine();
544
+ arquivo.add("085");
545
+ arquivo.add("9999");
546
+ arquivo.add("9");
547
+ arquivo.add(" ".padEnd(9, " "));
548
+ arquivo.add("000001");
549
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
550
+ arquivo.add("000000");
551
+ arquivo.add(" ".padEnd(205, " "));
552
+ return {
553
+ download: remessa2,
554
+ arquivo: arquivo.getArquivo()
555
+ };
556
+ } catch (error) {
557
+ console.log(error);
558
+ return null;
559
+ }
560
+ }
561
+
562
+ // src/ailos/gerarRetorno.ts
563
+ function gerarRetorno({ dados }) {
564
+ try {
565
+ const { arquivo } = dados;
566
+ const documentos = [];
567
+ let index = 0;
568
+ for (const item of arquivo) {
569
+ let linha = item;
570
+ const banco = linha.substring(0, 3);
571
+ const codigoRetorno = linha.substring(15, 17);
572
+ if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
573
+ let segmento = linha.substring(13, 14);
574
+ if (segmento === "T") {
575
+ const linhaDoc = linha.substring(105, 130).trimEnd();
576
+ let tipoDocumento = "INDEFINIDO";
577
+ let idDocumento = linhaDoc;
578
+ if (linhaDoc.includes("-")) {
579
+ const [tipoDoc, idDoc] = linhaDoc.split("-");
580
+ tipoDocumento = tipoDoc;
581
+ idDocumento = idDoc;
582
+ }
583
+ const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
584
+ linha = arquivo[index + 1];
585
+ segmento = linha.substring(13, 14);
586
+ if (segmento === "U") {
587
+ const valorAbatimentoString = linha.substring(47, 62);
588
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
589
+ const valorDescontoString = linha.substring(32, 47);
590
+ const valorDesconto = Number(valorDescontoString) / 100;
591
+ const valorPagoString = linha.substring(77, 92);
592
+ const valorPago = Number(valorPagoString) / 100;
593
+ const valorJurosString = linha.substring(17, 32);
594
+ const valorJuros = Number(valorJurosString) / 100;
595
+ const valorMulta = 0;
596
+ const descontos = valorAbatimento + valorDesconto;
597
+ const valorTotal = valorPago - valorJuros + descontos;
598
+ const documento = {
599
+ id_documento: idDocumento,
600
+ especie,
601
+ valor: valorPago,
602
+ valor_multa: valorMulta,
603
+ valor_juros: valorJuros,
604
+ valor_desconto: valorDesconto,
605
+ valor_total: valorTotal
606
+ };
607
+ documentos.push(documento);
608
+ }
609
+ }
610
+ }
611
+ index++;
612
+ }
613
+ return documentos;
614
+ } catch (error) {
615
+ console.log(error);
616
+ return null;
617
+ }
618
+ }
619
+
620
+ // src/ailos/index.ts
621
+ var ailos = {
622
+ gerarDadosBoleto,
623
+ gerarPDF,
624
+ gerarRemessa,
625
+ gerarRetorno
626
+ };
627
+
628
+ // src/bradesco/gerarDadosBoleto.ts
629
+ var import_date_fns3 = require("date-fns");
630
+ function gerarDadosBoleto2({ dados }) {
631
+ try {
632
+ const { bancario, parcela } = dados;
633
+ parcela.valor = Number(parcela.valor);
634
+ const fatorVencimento = getFatorVencimento2(parcela.vencimento);
635
+ const valor = getValor2(parcela.valor);
636
+ const convenio = padLeft(bancario.convenio, 6);
637
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
638
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
639
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
640
+ const digitoGeral = getDigitoGeral2(`0859${fatorVencimento}${valor}${campoLivre}`);
641
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
642
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
643
+ const campo2 = copy(codigoBarra2, 25, 34);
644
+ const campo3 = copy(codigoBarra2, 35, 44);
645
+ const campo4 = copy(codigoBarra2, 5, 5);
646
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
647
+ const digito1 = getDigito2(campo1);
648
+ const digito2 = getDigito2(campo2);
649
+ const digito3 = getDigito2(campo3);
650
+ const digito4 = getDigito2(campo4);
651
+ const dadosBoleto = {
652
+ fatorVencimento,
653
+ valor,
654
+ convenio,
655
+ nossoNumero,
656
+ campoLivre,
657
+ digitoGeral,
658
+ codigoBarra: codigoBarra2,
659
+ numeroDocumento,
660
+ campo1,
661
+ campo2,
662
+ campo3,
663
+ campo4,
664
+ campo5,
665
+ digito1,
666
+ digito2,
667
+ digito3,
668
+ digito4
669
+ };
670
+ return dadosBoleto;
671
+ } catch (error) {
672
+ console.log("Falha ao gerar dados do boleto", error);
673
+ return null;
674
+ }
675
+ }
676
+ function getFatorVencimento2(vencimento) {
677
+ const data = new Date(1997, 9, 7);
678
+ return (0, import_date_fns3.differenceInDays)(new Date(vencimento), data).toString();
679
+ }
680
+ function getValor2(valor) {
681
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
682
+ return padLeft(valorFormatado, 10);
683
+ }
684
+ function getDigitoGeral2(texto) {
685
+ let i = 43;
686
+ let j = 1;
687
+ let soma = 0;
688
+ let digito = 0;
689
+ while (i >= 1) {
690
+ j++;
691
+ if (j === 10)
692
+ j = 2;
693
+ const valor = Number(copy(texto, i, i));
694
+ soma += j * valor;
695
+ i--;
696
+ }
697
+ const restoDivisao = soma % 11;
698
+ digito = 11 - restoDivisao;
699
+ if (digito === 0 || digito === 1 || digito > 9)
700
+ digito = 1;
701
+ return String(digito);
702
+ }
703
+ function getDigito2(texto) {
704
+ let i = texto.length;
705
+ let j = 1;
706
+ let total = 0;
707
+ let soma = 0;
708
+ let digito = 0;
709
+ while (i >= 1) {
710
+ j = j === 1 ? 2 : 1;
711
+ let valor = Number(copy(texto, i, i));
712
+ total = valor * j;
713
+ if (total >= 10) {
714
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
715
+ } else {
716
+ valor = total;
717
+ }
718
+ soma += valor;
719
+ i--;
720
+ }
721
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
722
+ digito = 10 - uni;
723
+ if (digito === 10)
724
+ digito = 0;
725
+ return String(digito);
726
+ }
727
+
728
+ // src/bradesco/gerarPDF.ts
729
+ var import_bwip_js2 = __toESM(require("bwip-js"));
730
+ function gerarPDF2(_0) {
731
+ return __async(this, arguments, function* ({ dados }) {
308
732
  try {
309
- const { dadosBancario, beneficiario, boletos, pagador } = dados;
733
+ const { dadosPDF, generatePDF } = dados;
734
+ const codigoBarra2 = yield import_bwip_js2.default.toBuffer({
735
+ bcid: "interleaved2of5",
736
+ text: dadosPDF.boleto.codigoBarra,
737
+ height: 20
738
+ });
739
+ dadosPDF.beneficiario.dadosBancarios.agencia = dadosPDF.beneficiario.dadosBancarios.agencia.padStart(4, "0");
740
+ dadosPDF.beneficiario.dadosBancarios.conta = dadosPDF.beneficiario.dadosBancarios.conta.padStart(7, "0");
741
+ dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
742
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
743
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
744
+ dadosPDF.beneficiario.cnpj
745
+ );
746
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
747
+ dadosPDF.beneficiario.endereco.cep
748
+ );
749
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
750
+ dadosPDF.pagador.endereco.cep
751
+ );
752
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
753
+ dadosPDF.boleto.valorAcrescimo
754
+ );
755
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
756
+ dadosPDF.boleto.valorCobrado
757
+ );
758
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
759
+ dadosPDF.boleto.valorDescontoAbatimento
760
+ );
761
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
762
+ dadosPDF.boleto.valorDocumento
763
+ );
764
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
765
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
766
+ dadosPDF.boleto.valorOutrasDeducoes
767
+ );
768
+ if (dadosPDF.boleto.quantidade) {
769
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
770
+ }
771
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
772
+ const content = compileHbs(getPathTemplates("bradesco-boleto.hbs"), dados);
773
+ const config = {
774
+ displayHeaderFooter: false,
775
+ path: "./boleto.pdf",
776
+ format: "a4",
777
+ printBackground: true
778
+ };
779
+ let pdfBase64 = null;
780
+ if (generatePDF) {
781
+ pdfBase64 = yield generatePDF(content, config);
782
+ } else {
783
+ if (!api.defaults.baseURL) {
784
+ throw new Error("BaseURL api not found");
785
+ }
786
+ const response = yield api.post("/", { content, config });
787
+ pdfBase64 = response.data;
788
+ }
789
+ return {
790
+ erro: false,
791
+ dados: pdfBase64
792
+ };
793
+ } catch (error) {
794
+ return {
795
+ erro: true,
796
+ dados: null
797
+ };
798
+ }
799
+ });
800
+ }
801
+
802
+ // src/bradesco/gerarRemessa.ts
803
+ var import_date_fns4 = require("date-fns");
804
+ function gerarRemessa2(_0) {
805
+ return __async(this, arguments, function* ({ dados }) {
806
+ try {
807
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
310
808
  const arquivo = new Arquivo();
311
809
  const dataAtual = /* @__PURE__ */ new Date();
312
- const data = (0, import_date_fns2.format)(dataAtual, "ddMMyyyy");
313
- const hora = (0, import_date_fns2.format)(dataAtual, "HHmmss");
810
+ const data = (0, import_date_fns4.format)(dataAtual, "ddMMyyyy");
811
+ const hora = (0, import_date_fns4.format)(dataAtual, "HHmmss");
314
812
  const convenio = dadosBancario.convenio.padStart(7, "0");
315
813
  const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
316
- const remessa = `REM${convenio}-${numero}-${data}.REM`;
814
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
317
815
  arquivo.add("085");
318
816
  arquivo.add("0000");
319
817
  arquivo.add("0");
@@ -355,7 +853,7 @@ function gerarRemessa(dados) {
355
853
  arquivo.add(dadosBancario.conta.padStart(12, "0"));
356
854
  arquivo.add(dadosBancario.contaDigito);
357
855
  arquivo.add(" ");
358
- arquivo.add(pagador.nome.substring(0, 30).padEnd(30, " "));
856
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
359
857
  arquivo.add(" ".padEnd(40, " "));
360
858
  arquivo.add(" ".padEnd(40, " "));
361
859
  arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
@@ -367,12 +865,13 @@ function gerarRemessa(dados) {
367
865
  let quantidadeRegistro = 1;
368
866
  let total = 0;
369
867
  for (const boleto of boletos) {
370
- const vencimento = (0, import_date_fns2.format)(new Date(boleto.vencimento), "ddMMyyyy");
868
+ const { pagador } = boleto;
869
+ const vencimento = (0, import_date_fns4.format)(new Date(boleto.vencimento), "ddMMyyyy");
371
870
  total += Number(boleto.valor);
372
871
  const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
373
872
  const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
374
- const jurosVencimento = (0, import_date_fns2.format)(
375
- (0, import_date_fns2.addDays)(new Date(boleto.vencimento), 1),
873
+ const jurosVencimento = (0, import_date_fns4.format)(
874
+ (0, import_date_fns4.addDays)(new Date(boleto.vencimento), 1),
376
875
  "ddMMyyyy"
377
876
  );
378
877
  const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
@@ -517,7 +1016,7 @@ function gerarRemessa(dados) {
517
1016
  arquivo.add("000000");
518
1017
  arquivo.add(" ".padEnd(205, " "));
519
1018
  return {
520
- download: remessa,
1019
+ download: remessa2,
521
1020
  arquivo: arquivo.getArquivo()
522
1021
  };
523
1022
  } catch (error) {
@@ -527,19 +1026,130 @@ function gerarRemessa(dados) {
527
1026
  });
528
1027
  }
529
1028
 
530
- // src/ailos/index.ts
531
- var ailos = {
532
- gerarDadosBoleto,
533
- gerarPDF,
534
- gerarRemessa
535
- };
1029
+ // src/bradesco/gerarRetorno.ts
1030
+ function gerarRetorno2({ dados }) {
1031
+ try {
1032
+ const { arquivo } = dados;
1033
+ const documentos = [];
1034
+ let index = 0;
1035
+ for (const item of arquivo) {
1036
+ let linha = item;
1037
+ const banco = linha.substring(0, 3);
1038
+ const codigoRetorno = linha.substring(15, 17);
1039
+ if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
1040
+ let segmento = linha.substring(13, 14);
1041
+ if (segmento === "T") {
1042
+ let tipoDocumento = "";
1043
+ let idDocumento = "";
1044
+ const linhaDoc = linha.substring(105, 130).trimEnd();
1045
+ if (linhaDoc.includes("-")) {
1046
+ [tipoDocumento, idDocumento] = linha.split("-");
1047
+ } else {
1048
+ idDocumento = linhaDoc;
1049
+ }
1050
+ const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
1051
+ linha = arquivo[index + 1];
1052
+ segmento = linha.substring(13, 14);
1053
+ if (segmento === "U") {
1054
+ const valorAbatimentoString = linha.substring(47, 62);
1055
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
1056
+ const valorDescontoString = linha.substring(32, 47);
1057
+ const valorDesconto = Number(valorDescontoString) / 100;
1058
+ const valorPagoString = linha.substring(77, 92);
1059
+ const valorPago = Number(valorPagoString) / 100;
1060
+ const valorJurosString = linha.substring(17, 32);
1061
+ const valorJuros = Number(valorJurosString) / 100;
1062
+ const valorMulta = 0;
1063
+ const descontos = valorAbatimento + valorDesconto;
1064
+ const valorTotal = valorPago - valorJuros + descontos;
1065
+ const documento = {
1066
+ id_documento: idDocumento,
1067
+ especie,
1068
+ valor: valorTotal,
1069
+ acrescimo: valorMulta,
1070
+ desconto: valorDesconto
1071
+ };
1072
+ documentos.push(documento);
1073
+ }
1074
+ }
1075
+ }
1076
+ index++;
1077
+ }
1078
+ return documentos;
1079
+ } catch (error) {
1080
+ console.log(error);
1081
+ return null;
1082
+ }
1083
+ }
536
1084
 
537
1085
  // src/bradesco/index.ts
538
- function bradesco() {
539
- console.log("bradesco");
1086
+ var bradesco = {
1087
+ gerarDadosBoleto: gerarDadosBoleto2,
1088
+ gerarPDF: gerarPDF2,
1089
+ gerarRemessa: gerarRemessa2,
1090
+ gerarRetorno: gerarRetorno2
1091
+ };
1092
+
1093
+ // src/gerar.ts
1094
+ function gerar({ banco, dados }) {
1095
+ if (banco === "085" /* AILOS */) {
1096
+ return ailos.gerarDadosBoleto({ banco, dados });
1097
+ }
1098
+ if (banco === "005" /* BRADESCO */) {
1099
+ return bradesco.gerarDadosBoleto({ banco, dados });
1100
+ }
540
1101
  }
1102
+
1103
+ // src/pdf.ts
1104
+ function pdf({ banco, dados }) {
1105
+ if (banco === "085" /* AILOS */) {
1106
+ return ailos.gerarPDF({ banco, dados });
1107
+ }
1108
+ if (banco === "005" /* BRADESCO */) {
1109
+ return bradesco.gerarPDF({ banco, dados });
1110
+ }
1111
+ }
1112
+
1113
+ // src/remessa.ts
1114
+ function remessa({ banco, dados }) {
1115
+ if (banco === "085" /* AILOS */) {
1116
+ return ailos.gerarRemessa({ banco, dados });
1117
+ }
1118
+ if (banco === "005" /* BRADESCO */) {
1119
+ return bradesco.gerarRemessa({ banco, dados });
1120
+ }
1121
+ }
1122
+
1123
+ // src/retorno.ts
1124
+ function retorno({ banco, dados }) {
1125
+ if (banco === "085" /* AILOS */) {
1126
+ return ailos.gerarRetorno({ banco, dados });
1127
+ }
1128
+ if (banco === "005" /* BRADESCO */) {
1129
+ return bradesco.gerarRetorno({ banco, dados });
1130
+ }
1131
+ }
1132
+
1133
+ // src/config/index.ts
1134
+ function defineConfig({ apiClient }) {
1135
+ if (apiClient) {
1136
+ const { authorization, url } = apiClient;
1137
+ if (url)
1138
+ api.defaults.baseURL = url;
1139
+ if (authorization)
1140
+ api.defaults.headers.common.Authorization = authorization;
1141
+ }
1142
+ }
1143
+
1144
+ // src/index.ts
1145
+ var src_default = {
1146
+ gerar,
1147
+ pdf,
1148
+ remessa,
1149
+ retorno
1150
+ };
541
1151
  // Annotate the CommonJS export names for ESM import in node:
542
1152
  0 && (module.exports = {
543
- ailos,
544
- bradesco
1153
+ Banco,
1154
+ defineConfig
545
1155
  });