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