@plasoft/boletos 1.0.6 → 1.0.8

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