@plasoft/boletos 1.0.37 → 1.0.39

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.d.mts CHANGED
@@ -481,6 +481,7 @@ interface IGerarBoletoSicoob {
481
481
  interface IDadosBancario$1 {
482
482
  agencia: string;
483
483
  codigo_cliente: string;
484
+ codigo_cliente_dv: string;
484
485
  modalidade: string;
485
486
  }
486
487
  interface IParcela$1 {
@@ -488,8 +489,6 @@ interface IParcela$1 {
488
489
  parcela: number;
489
490
  vencimento: string | Date;
490
491
  valor: number | string;
491
- pago: number | string;
492
- data_emissao: string | Date;
493
492
  }
494
493
  interface IGerarPDFSicoob {
495
494
  banco: Banco.SICOOB;
@@ -505,6 +504,10 @@ interface IDadosPDF$1 {
505
504
  agencia: string;
506
505
  codigo_cliente: string;
507
506
  carteira: string;
507
+ juros: number;
508
+ multa: number;
509
+ desconto: number;
510
+ protesto: number;
508
511
  };
509
512
  };
510
513
  pagador: {
@@ -535,7 +538,6 @@ interface IDadosPDF$1 {
535
538
  numeroDocumento: string;
536
539
  nossoNumero: string;
537
540
  especieDocumento: string;
538
- aceite: 'S' | 'N';
539
541
  moeda: string;
540
542
  usoDoBanco?: string;
541
543
  codigoBarra: string;
@@ -545,7 +547,9 @@ interface IDadosPDF$1 {
545
547
  instrucao1?: string;
546
548
  instrucao2?: string;
547
549
  instrucao3?: string;
548
- observacoes?: string;
550
+ instrucao4?: string;
551
+ observacoes?: string[];
552
+ nfs: string;
549
553
  };
550
554
  }
551
555
  interface IGerarRemessaSicoob {
@@ -562,15 +566,17 @@ interface IDadosRemessa$1 {
562
566
  dadosBancario: {
563
567
  carteira: string;
564
568
  agencia: string;
569
+ agenciaDigito: string;
565
570
  conta: string;
571
+ contaDigito: string;
566
572
  numeroRemessa: string;
567
573
  jurosMes: number;
568
574
  multaAtraso: number;
569
575
  diasProtesto: number;
570
576
  modalidade: string;
571
- aceite: string;
572
577
  };
573
578
  boletos: {
579
+ identificacaoTitulo: string;
574
580
  vencimento: string | Date;
575
581
  valor: number | string;
576
582
  nossoNumero: string;
package/build/index.d.ts CHANGED
@@ -481,6 +481,7 @@ interface IGerarBoletoSicoob {
481
481
  interface IDadosBancario$1 {
482
482
  agencia: string;
483
483
  codigo_cliente: string;
484
+ codigo_cliente_dv: string;
484
485
  modalidade: string;
485
486
  }
486
487
  interface IParcela$1 {
@@ -488,8 +489,6 @@ interface IParcela$1 {
488
489
  parcela: number;
489
490
  vencimento: string | Date;
490
491
  valor: number | string;
491
- pago: number | string;
492
- data_emissao: string | Date;
493
492
  }
494
493
  interface IGerarPDFSicoob {
495
494
  banco: Banco.SICOOB;
@@ -505,6 +504,10 @@ interface IDadosPDF$1 {
505
504
  agencia: string;
506
505
  codigo_cliente: string;
507
506
  carteira: string;
507
+ juros: number;
508
+ multa: number;
509
+ desconto: number;
510
+ protesto: number;
508
511
  };
509
512
  };
510
513
  pagador: {
@@ -535,7 +538,6 @@ interface IDadosPDF$1 {
535
538
  numeroDocumento: string;
536
539
  nossoNumero: string;
537
540
  especieDocumento: string;
538
- aceite: 'S' | 'N';
539
541
  moeda: string;
540
542
  usoDoBanco?: string;
541
543
  codigoBarra: string;
@@ -545,7 +547,9 @@ interface IDadosPDF$1 {
545
547
  instrucao1?: string;
546
548
  instrucao2?: string;
547
549
  instrucao3?: string;
548
- observacoes?: string;
550
+ instrucao4?: string;
551
+ observacoes?: string[];
552
+ nfs: string;
549
553
  };
550
554
  }
551
555
  interface IGerarRemessaSicoob {
@@ -562,15 +566,17 @@ interface IDadosRemessa$1 {
562
566
  dadosBancario: {
563
567
  carteira: string;
564
568
  agencia: string;
569
+ agenciaDigito: string;
565
570
  conta: string;
571
+ contaDigito: string;
566
572
  numeroRemessa: string;
567
573
  jurosMes: number;
568
574
  multaAtraso: number;
569
575
  diasProtesto: number;
570
576
  modalidade: string;
571
- aceite: string;
572
577
  };
573
578
  boletos: {
579
+ identificacaoTitulo: string;
574
580
  vencimento: string | Date;
575
581
  valor: number | string;
576
582
  nossoNumero: string;
package/build/index.js CHANGED
@@ -1408,9 +1408,7 @@ function gerarRemessa3({ dados }) {
1408
1408
  arquivo.add(multaAtraso.padStart(4, "0"));
1409
1409
  arquivo.add(" ".padEnd(12, " "));
1410
1410
  arquivo.add("01");
1411
- const tipo_documento = boleto.identificacaoTitulo.substring(0, 1);
1412
- const especie = tipo_documento === "F" ? "0" /* FATURA */ : tipo_documento === "N" ? "1" /* NOTA */ : "2" /* LANCAMENTO */;
1413
- arquivo.add((especie + boleto.numeroDocumento + "/" + boleto.parcela).padEnd(10, " "));
1411
+ arquivo.add(boleto.identificacaoTitulo.padEnd(10, " "));
1414
1412
  arquivo.add((0, import_date_fns4.format)(new Date(boleto.vencimento), "ddMMyy"));
1415
1413
  arquivo.add(Number(boleto.valor).toFixed(2).replace(".", "").padStart(13, "0"));
1416
1414
  arquivo.add(" ".padEnd(9, " "));
@@ -1480,10 +1478,17 @@ function gerarRetorno3({ dados }) {
1480
1478
  continue;
1481
1479
  }
1482
1480
  const meu_numero = linha.substring(116, 126).trim();
1483
- const [financeiro, _parcela] = meu_numero.split("/");
1484
- const numero_especie = financeiro[0];
1485
- const especie = numero_especie === "0" /* FATURA */ ? "FAT" : numero_especie === "1" /* NOTA */ ? "NFE" : numero_especie === "2" /* LANCAMENTO */ ? "LAN" : "INDEFINIDO";
1486
- const id_financeiro = financeiro.substring(1);
1481
+ let tipo_documento = "";
1482
+ let id_documento = "";
1483
+ if (meu_numero.includes("-")) {
1484
+ const [tipo, id] = meu_numero.split("-");
1485
+ tipo_documento = tipo;
1486
+ id_documento = id;
1487
+ }
1488
+ let especie = "INDEFINIDO";
1489
+ if (tipo_documento.length) {
1490
+ especie = tipo_documento === "N" ? "NFE" : tipo_documento === "F" ? "FAT" : tipo_documento === "L" ? "FIN" : "INDEFINIDO";
1491
+ }
1487
1492
  const valor_titulo = Number(linha.substring(152, 165)) / 100;
1488
1493
  const abatimento = Number(linha.substring(227, 240)) / 100;
1489
1494
  let valor_desconto = Number(linha.substring(240, 253)) / 100;
@@ -1499,7 +1504,7 @@ function gerarRetorno3({ dados }) {
1499
1504
  const descontos = abatimento + valor_desconto;
1500
1505
  const valor_total = valor_titulo + valor_multa + valor_juros - descontos;
1501
1506
  documentos.push({
1502
- id_documento: id_financeiro,
1507
+ id_documento,
1503
1508
  especie,
1504
1509
  valor: valor_pago,
1505
1510
  valor_multa,
@@ -1531,13 +1536,14 @@ function gerarDadosBoleto4({ dados }) {
1531
1536
  bancario.modalidade = "01";
1532
1537
  }
1533
1538
  bancario.modalidade = padLeft(bancario.modalidade, 2);
1534
- const nossoNumero = getNossoNumero2(bancario.agencia, bancario.codigo_cliente, parcela.id_boleto);
1539
+ const codigo_cliente = `${bancario.codigo_cliente}${bancario.codigo_cliente_dv}`;
1540
+ const nossoNumero = getNossoNumero2(bancario.agencia, codigo_cliente, String(parcela.id_boleto));
1535
1541
  const fatorVencimento = getFatorVencimento(parcela.vencimento);
1536
1542
  const valor = getValor4(Number(parcela.valor));
1537
- const campoLivre = "1" + padLeft(copy(bancario.agencia, 1, 4), 4) + bancario.modalidade + padLeft(bancario.codigo_cliente, 7) + nossoNumero + padLeft(parcela.parcela, 3);
1543
+ const campoLivre = "1" + bancario.agencia + bancario.modalidade + codigo_cliente + nossoNumero + padLeft(parcela.parcela, 3);
1538
1544
  const digitoGeral = getDigitoGeral4(`7569${fatorVencimento}${valor}${campoLivre}`);
1539
1545
  const codigoBarra2 = `7569${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
1540
- const campo1 = copy(codigoBarra2, 1, 4) + copy(codigoBarra2, 20, 24);
1546
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
1541
1547
  const campo2 = copy(codigoBarra2, 25, 34);
1542
1548
  const campo3 = copy(codigoBarra2, 35, 44);
1543
1549
  const campo4 = copy(codigoBarra2, 5, 5);
@@ -1561,15 +1567,24 @@ function gerarDadosBoleto4({ dados }) {
1561
1567
  return null;
1562
1568
  }
1563
1569
  }
1564
- function getNossoNumero2(numero_cooperativa, codigo_cliente, id_boleto) {
1565
- const constante_calculo = "3197";
1566
- numero_cooperativa = padLeft(copy(numero_cooperativa, 1, 4), 4);
1567
- codigo_cliente = padLeft(codigo_cliente, 10);
1568
- id_boleto = padLeft(`${id_boleto}2`, 7);
1569
- const sequencia_concatenada = numero_cooperativa + codigo_cliente + id_boleto;
1570
- let soma = 0;
1571
- for (let i = sequencia_concatenada.length - 1; i >= 0; i--) {
1572
- soma += Number(sequencia_concatenada[i]) * Number(constante_calculo[i % constante_calculo.length]);
1570
+ function getNossoNumero2(agencia, codigo_cliente, id_boleto) {
1571
+ codigo_cliente = codigo_cliente.padStart(10, "0");
1572
+ id_boleto = id_boleto.padStart(7, "0");
1573
+ const aux = `${agencia}${codigo_cliente}${id_boleto}`;
1574
+ let i = 22, m = 3, soma = 0;
1575
+ while (true) {
1576
+ i--;
1577
+ soma += m * Number(copy(aux, i, i));
1578
+ if (i === 1)
1579
+ break;
1580
+ if (m === 3)
1581
+ m = 7;
1582
+ if (m === 7)
1583
+ m = 9;
1584
+ if (m === 9)
1585
+ m = 1;
1586
+ if (m === 1)
1587
+ m = 3;
1573
1588
  }
1574
1589
  let dig = soma % 11;
1575
1590
  dig = dig === 1 ? dig = 0 : 11 - dig;
@@ -1640,10 +1655,12 @@ function gerarRemessa4({ dados }) {
1640
1655
  arquivo.add("2");
1641
1656
  arquivo.add(beneficiario.cnpj);
1642
1657
  arquivo.add(" ".padEnd(20, " "));
1643
- arquivo.add(dadosBancario.agencia.padStart(6, "0"));
1644
- arquivo.add(dadosBancario.conta.padStart(13, "0"));
1658
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1659
+ arquivo.add(dadosBancario.agenciaDigito);
1660
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1661
+ arquivo.add(dadosBancario.contaDigito);
1645
1662
  arquivo.add("0");
1646
- arquivo.add(beneficiario.nome.padEnd(30, " "));
1663
+ arquivo.add(removerAcentos(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1647
1664
  arquivo.add("SICOOB".padEnd(30, " "));
1648
1665
  arquivo.add(" ".padEnd(10, " "));
1649
1666
  arquivo.add("1");
@@ -1665,10 +1682,12 @@ function gerarRemessa4({ dados }) {
1665
1682
  arquivo.add("2");
1666
1683
  arquivo.add(beneficiario.cnpj.padStart(15, "0"));
1667
1684
  arquivo.add(" ".padEnd(20, " "));
1668
- arquivo.add(dadosBancario.agencia.padStart(6, "0"));
1669
- arquivo.add(dadosBancario.conta.padStart(13, "0"));
1685
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1686
+ arquivo.add(dadosBancario.agenciaDigito);
1687
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1688
+ arquivo.add(dadosBancario.contaDigito);
1670
1689
  arquivo.add(" ");
1671
- arquivo.add(beneficiario.nome.padEnd(30, " "));
1690
+ arquivo.add(removerAcentos(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1672
1691
  arquivo.add(" ".padEnd(80, " "));
1673
1692
  arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
1674
1693
  arquivo.add(data);
@@ -1683,21 +1702,19 @@ function gerarRemessa4({ dados }) {
1683
1702
  const vencimento = (0, import_date_fns5.format)(new Date(boleto.vencimento), "ddMMyyyy");
1684
1703
  const valor_juros_dia = Number(boleto.valor) * dadosBancario.jurosMes / 100 / 30;
1685
1704
  const protesto = dadosBancario.diasProtesto > 0 ? "1" : "3";
1686
- const diasProtesto = protesto === "1" ? dadosBancario.diasProtesto.toString() : "00";
1687
- if (dadosBancario.aceite === "S") {
1688
- dadosBancario.aceite = "A";
1689
- }
1705
+ const diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
1690
1706
  total += Number(boleto.valor);
1691
- sequencia++;
1692
1707
  arquivo.add("756");
1693
1708
  arquivo.add("0001");
1694
1709
  arquivo.add("3");
1695
- arquivo.add(sequencia.toString().padStart(5, "0"));
1710
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1696
1711
  arquivo.add("P");
1697
1712
  arquivo.add(" ");
1698
1713
  arquivo.add("01");
1699
- arquivo.add(dadosBancario.agencia.padStart(6, "0"));
1700
- arquivo.add(dadosBancario.conta.padStart(13, "0"));
1714
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1715
+ arquivo.add(dadosBancario.agenciaDigito);
1716
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1717
+ arquivo.add(dadosBancario.contaDigito);
1701
1718
  arquivo.add(" ");
1702
1719
  arquivo.add(boleto.nossoNumero.padStart(10, "0"));
1703
1720
  arquivo.add(boleto.parcela.toString().padStart(2, "0"));
@@ -1712,7 +1729,7 @@ function gerarRemessa4({ dados }) {
1712
1729
  arquivo.add("00000");
1713
1730
  arquivo.add(" ");
1714
1731
  arquivo.add("02");
1715
- arquivo.add(dadosBancario.aceite);
1732
+ arquivo.add("N");
1716
1733
  arquivo.add(data);
1717
1734
  arquivo.add("1");
1718
1735
  arquivo.add((0, import_date_fns5.format)((0, import_date_fns5.addDays)(new Date(boleto.vencimento), 1), "ddMMyyyy"));
@@ -1722,15 +1739,14 @@ function gerarRemessa4({ dados }) {
1722
1739
  arquivo.add("000000000000000");
1723
1740
  arquivo.add("000000000000000");
1724
1741
  arquivo.add("000000000000000");
1725
- arquivo.add(" ".padEnd(25, " "));
1742
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
1726
1743
  arquivo.add(protesto);
1727
- arquivo.add(diasProtesto.padStart(2, "0"));
1744
+ arquivo.add(diasProtesto);
1728
1745
  arquivo.add("0");
1729
1746
  arquivo.add(" ");
1730
1747
  arquivo.add("09");
1731
1748
  arquivo.add("0000000000");
1732
1749
  arquivo.add(" ");
1733
- sequencia++;
1734
1750
  arquivo.addLine();
1735
1751
  let tipoInscricao = "1";
1736
1752
  if (pagador.pessoa === "F") {
@@ -1738,26 +1754,18 @@ function gerarRemessa4({ dados }) {
1738
1754
  } else {
1739
1755
  tipoInscricao = "2";
1740
1756
  }
1741
- pagador.endereco.bairro = pagador.endereco.bairro.toUpperCase();
1742
- pagador.endereco.logradouro = pagador.endereco.logradouro.toUpperCase();
1743
- pagador.endereco.municipio = pagador.endereco.municipio.toUpperCase();
1744
- pagador.endereco.uf = pagador.endereco.uf.toUpperCase();
1745
- const { tipo_logradouro, logradouro } = getLogradouro(pagador.endereco.logradouro);
1757
+ pagador.endereco.logradouro = `${removerAcentos(pagador.endereco.logradouro).substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
1746
1758
  arquivo.add("756");
1747
1759
  arquivo.add("0001");
1748
1760
  arquivo.add("3");
1749
- arquivo.add(sequencia.toString().padStart(5, "0"));
1761
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1750
1762
  arquivo.add("Q");
1751
1763
  arquivo.add(" ");
1752
1764
  arquivo.add("01");
1753
1765
  arquivo.add(tipoInscricao);
1754
1766
  arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
1755
- arquivo.add(removerAcentos(pagador.nome.toUpperCase()).substring(0, 40).padEnd(40, " "));
1756
- arquivo.add(removerAcentos(tipo_logradouro).padEnd(3, " "));
1757
- arquivo.add(" ");
1758
- arquivo.add(removerAcentos(logradouro).substring(0, 29).padEnd(29, " "));
1759
- arquivo.add(" ");
1760
- arquivo.add(pagador.endereco.numero.padEnd(6, " "));
1767
+ arquivo.add(removerAcentos(pagador.nome).substring(0, 40).padEnd(40, " "));
1768
+ arquivo.add(removerAcentos(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
1761
1769
  arquivo.add(removerAcentos(pagador.endereco.bairro).substring(0, 15).padEnd(15, " "));
1762
1770
  arquivo.add(pagador.endereco.cep.padEnd(8, " "));
1763
1771
  arquivo.add(removerAcentos(pagador.endereco.municipio).substring(0, 15).padEnd(15, " "));
@@ -1767,22 +1775,21 @@ function gerarRemessa4({ dados }) {
1767
1775
  arquivo.add(" ".padEnd(40, " "));
1768
1776
  arquivo.add("000");
1769
1777
  arquivo.add(" ".padEnd(28, " "));
1770
- sequencia++;
1771
1778
  arquivo.addLine();
1772
1779
  let multa = "0";
1773
1780
  let data_multa = "00000000";
1774
- let percentual_multa = "000000000000000";
1781
+ let valor_multa = "000000000000000";
1775
1782
  dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
1776
1783
  if (dadosBancario.multaAtraso > 0) {
1777
1784
  multa = "2";
1778
1785
  data_multa = (0, import_date_fns5.format)((0, import_date_fns5.addDays)(new Date(boleto.vencimento), 1), "ddMMyyyy");
1779
- percentual_multa = (dadosBancario.multaAtraso * 100).toString().padStart(15, "0");
1786
+ valor_multa = dadosBancario.multaAtraso.toFixed(2).replace(".", "").padStart(15, "0");
1780
1787
  }
1781
1788
  arquivo.add("756");
1782
1789
  arquivo.add("0001");
1783
1790
  arquivo.add("3");
1784
1791
  arquivo.add("");
1785
- arquivo.add(sequencia.toString().padStart(5, "0"));
1792
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1786
1793
  arquivo.add("R");
1787
1794
  arquivo.add(" ");
1788
1795
  arquivo.add("01");
@@ -1794,7 +1801,7 @@ function gerarRemessa4({ dados }) {
1794
1801
  arquivo.add("000000000000000");
1795
1802
  arquivo.add(multa);
1796
1803
  arquivo.add(data_multa);
1797
- arquivo.add(percentual_multa);
1804
+ arquivo.add(valor_multa);
1798
1805
  arquivo.add(" ".padEnd(10, " "));
1799
1806
  arquivo.add(" ".padEnd(40, " "));
1800
1807
  arquivo.add(" ".padEnd(40, " "));
@@ -1838,47 +1845,6 @@ function gerarRemessa4({ dados }) {
1838
1845
  return null;
1839
1846
  }
1840
1847
  }
1841
- function getLogradouro(logradouro) {
1842
- const logradouro_split = logradouro.split(" ");
1843
- let tipo_logradouro = "RUA";
1844
- if (/^R(\.|UA)?\b/i.test(logradouro_split[0])) {
1845
- logradouro = logradouro_split.slice(1).join(" ");
1846
- } else if (/^AV(\.|ENIDA)?\b/i.test(logradouro_split[0])) {
1847
- tipo_logradouro = "AV";
1848
- logradouro = logradouro_split.slice(1).join(" ");
1849
- } else if (/^SERVIDAO\b/i.test(logradouro_split[0])) {
1850
- tipo_logradouro = "SEV";
1851
- logradouro = logradouro_split.slice(1).join(" ");
1852
- } else if (/^SEV(\.)?\b/i.test(logradouro_split[0])) {
1853
- tipo_logradouro = "SEV";
1854
- logradouro = logradouro_split.slice(1).join(" ");
1855
- } else if (/^ROD(\.|OVIA)?\b/i.test(logradouro_split[0])) {
1856
- tipo_logradouro = "ROD";
1857
- logradouro = logradouro_split.slice(1).join(" ");
1858
- } else if (/^FAZ(\.|ENDA)?\b/i.test(logradouro_split[0])) {
1859
- tipo_logradouro = "FAZ";
1860
- logradouro = logradouro_split.slice(1).join(" ");
1861
- } else if (/^EST(\.|RADA)?\b/i.test(logradouro_split[0])) {
1862
- tipo_logradouro = "EST";
1863
- logradouro = logradouro_split.slice(1).join(" ");
1864
- } else if (/^ALA(\.|MEDA)?\b/i.test(logradouro_split[0])) {
1865
- tipo_logradouro = "ALA";
1866
- logradouro = logradouro_split.slice(1).join(" ");
1867
- } else if (/^ENC(\.|RUZILHADA)?\b/i.test(logradouro_split[0])) {
1868
- tipo_logradouro = "ENC";
1869
- logradouro = logradouro_split.slice(1).join(" ");
1870
- } else if (/^PR(\.|ACA)?\b/i.test(logradouro_split[0])) {
1871
- tipo_logradouro = "PR";
1872
- logradouro = logradouro_split.slice(1).join(" ");
1873
- } else if (/^TRAVESSA\b/i.test(logradouro_split[0])) {
1874
- tipo_logradouro = "TV";
1875
- logradouro = logradouro_split.slice(1).join(" ");
1876
- } else if (/^TV(\.)?\b/i.test(logradouro_split[0])) {
1877
- tipo_logradouro = "TV";
1878
- logradouro = logradouro_split.slice(1).join(" ");
1879
- }
1880
- return { tipo_logradouro, logradouro };
1881
- }
1882
1848
 
1883
1849
  // src/banks/sicoob/gerarPDF.ts
1884
1850
  var import_bwip_js4 = __toESM(require("bwip-js"));
@@ -1892,14 +1858,11 @@ function gerarPDF4(_0) {
1892
1858
  text: dadosPDF.boleto.codigoBarra,
1893
1859
  height: 20
1894
1860
  });
1895
- dadosPDF.boleto.numeroDocumento = formatNumeroDocumento(
1896
- dadosPDF.boleto.numeroDocumento,
1897
- dadosPDF.boleto.parcela
1898
- );
1899
1861
  dadosPDF.beneficiario.dadosBancario.agencia = formatAgenciaCodigoCedente(
1900
1862
  dadosPDF.beneficiario.dadosBancario.agencia,
1901
1863
  dadosPDF.beneficiario.dadosBancario.codigo_cliente
1902
1864
  );
1865
+ dadosPDF.beneficiario.dadosBancario.carteira = dadosPDF.beneficiario.dadosBancario.carteira.padStart(2, "0");
1903
1866
  dadosPDF.boleto.nossoNumero = formatNossoNumero(
1904
1867
  dadosPDF.boleto.parcela,
1905
1868
  dadosPDF.boleto.nossoNumero
@@ -1920,6 +1883,7 @@ function gerarPDF4(_0) {
1920
1883
  dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
1921
1884
  dadosPDF.boleto.valorDescontoAbatimento
1922
1885
  );
1886
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
1923
1887
  dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
1924
1888
  dadosPDF.boleto.valorDocumento
1925
1889
  );
@@ -1930,6 +1894,23 @@ function gerarPDF4(_0) {
1930
1894
  if (dadosPDF.boleto.quantidade) {
1931
1895
  dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
1932
1896
  }
1897
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
1898
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
1899
+ if (jurosDia > 0) {
1900
+ dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
1901
+ }
1902
+ const descontoVencimento = dadosPDF.beneficiario.dadosBancario.desconto || 0;
1903
+ if (descontoVencimento > 0) {
1904
+ dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
1905
+ }
1906
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
1907
+ if (multaAtraso > 0) {
1908
+ dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
1909
+ }
1910
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
1911
+ if (protestoDias > 0) {
1912
+ dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
1913
+ }
1933
1914
  dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
1934
1915
  const content = compileHbs(getPathTemplates("sicoob-boleto.hbs"), dadosPDF);
1935
1916
  const config = {
@@ -1970,21 +1951,75 @@ function formatAgenciaCodigoCedente(agencia, conta) {
1970
1951
  function formatNossoNumero(parcela, nossoNumero) {
1971
1952
  parcela = String(parcela).padStart(2, "0");
1972
1953
  nossoNumero = nossoNumero.padStart(8, "0");
1973
- const nossoNumeroFmt = new import_string_mask2.default("00/0000000-0");
1974
- return nossoNumeroFmt.apply(parcela + nossoNumero);
1954
+ return `${parcela}/${nossoNumero.slice(0, 7)}-${nossoNumero.slice(7, 8)}`;
1975
1955
  }
1976
- function formatNumeroDocumento(numeroDocumento, parcela) {
1977
- parcela = String(parcela).padStart(2, "0");
1978
- numeroDocumento = numeroDocumento.padStart(6, "0");
1979
- const numeroDoctoFmt = new import_string_mask2.default("000000-00");
1980
- return numeroDoctoFmt.apply(numeroDocumento + parcela);
1956
+
1957
+ // src/banks/sicoob/gerarRetorno.ts
1958
+ function gerarRetorno4({ dados }) {
1959
+ try {
1960
+ const { arquivo } = dados;
1961
+ const documentos = [];
1962
+ for (let i = 0; i < arquivo.length; i++) {
1963
+ let linha = arquivo[i];
1964
+ const banco = linha.substring(0, 3);
1965
+ if (banco !== "756" /* SICOOB */) {
1966
+ continue;
1967
+ }
1968
+ const ocorrencia = linha.substring(15, 17);
1969
+ if (ocorrencia !== "06" && ocorrencia !== "17") {
1970
+ continue;
1971
+ }
1972
+ let segmento = linha.substring(13, 14);
1973
+ if (segmento === "T") {
1974
+ const meu_numero = linha.substring(105, 130).trimEnd();
1975
+ let tipo_documento = "INDEFINIDO";
1976
+ let id_documento = meu_numero;
1977
+ if (meu_numero.includes("-")) {
1978
+ const [tipo, id] = meu_numero.split("-");
1979
+ tipo_documento = tipo;
1980
+ id_documento = id;
1981
+ }
1982
+ const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
1983
+ linha = arquivo[++i];
1984
+ segmento = linha.substring(13, 14);
1985
+ if (segmento === "U") {
1986
+ const valorAbatimentoString = linha.substring(47, 62);
1987
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
1988
+ const valorDescontoString = linha.substring(32, 47);
1989
+ const valorDesconto = Number(valorDescontoString) / 100;
1990
+ const valorPagoString = linha.substring(77, 92);
1991
+ const valorPago = Number(valorPagoString) / 100;
1992
+ const valorJurosString = linha.substring(17, 32);
1993
+ const valorJuros = Number(valorJurosString) / 100;
1994
+ const valorMulta = 0;
1995
+ const descontos = valorAbatimento + valorDesconto;
1996
+ const valorTotal = valorPago - valorJuros + descontos;
1997
+ const documento = {
1998
+ id_documento,
1999
+ especie,
2000
+ valor: valorPago,
2001
+ valor_multa: valorMulta,
2002
+ valor_juros: valorJuros,
2003
+ valor_desconto: valorDesconto,
2004
+ valor_total: valorTotal
2005
+ };
2006
+ documentos.push(documento);
2007
+ }
2008
+ }
2009
+ }
2010
+ return documentos;
2011
+ } catch (error) {
2012
+ console.log(error);
2013
+ return null;
2014
+ }
1981
2015
  }
1982
2016
 
1983
2017
  // src/banks/sicoob/index.ts
1984
2018
  var sicoob = {
1985
2019
  gerarDadosBoleto: gerarDadosBoleto4,
1986
2020
  gerarRemessa: gerarRemessa4,
1987
- gerarPDF: gerarPDF4
2021
+ gerarPDF: gerarPDF4,
2022
+ gerarRetorno: gerarRetorno4
1988
2023
  };
1989
2024
 
1990
2025
  // src/banks/banco-brasil/gerarDadosBoleto.ts
@@ -2347,7 +2382,7 @@ function gerarRemessa5({ dados }) {
2347
2382
  arquivo.add("000000000000000");
2348
2383
  arquivo.add("000000000000000");
2349
2384
  arquivo.add("000000000000000");
2350
- arquivo.add(" ".padEnd(25, " "));
2385
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
2351
2386
  arquivo.add(protesto);
2352
2387
  arquivo.add(diasProtesto);
2353
2388
  arquivo.add(baixarDevolver);
@@ -2444,7 +2479,63 @@ function gerarRemessa5({ dados }) {
2444
2479
  }
2445
2480
 
2446
2481
  // src/banks/banco-brasil/gerarRetorno.ts
2447
- function gerarRetorno4() {
2482
+ function gerarRetorno5({ dados }) {
2483
+ try {
2484
+ const { arquivo } = dados;
2485
+ const documentos = [];
2486
+ for (let i = 0; i < arquivo.length; i++) {
2487
+ let linha = arquivo[i];
2488
+ const banco = linha.substring(0, 3);
2489
+ if (banco !== "001" /* BANCO_BRASIL */) {
2490
+ continue;
2491
+ }
2492
+ const ocorrencia = linha.substring(15, 17);
2493
+ if (ocorrencia !== "06" && ocorrencia !== "17") {
2494
+ continue;
2495
+ }
2496
+ let segmento = linha.substring(13, 14);
2497
+ if (segmento === "T") {
2498
+ const meu_numero = linha.substring(105, 130).trimEnd();
2499
+ let tipo_documento = "INDEFINIDO";
2500
+ let id_documento = meu_numero;
2501
+ if (meu_numero.includes("-")) {
2502
+ const [tipo, id] = meu_numero.split("-");
2503
+ tipo_documento = tipo;
2504
+ id_documento = id;
2505
+ }
2506
+ const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
2507
+ linha = arquivo[++i];
2508
+ segmento = linha.substring(13, 14);
2509
+ if (segmento === "U") {
2510
+ const valorAbatimentoString = linha.substring(47, 62);
2511
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
2512
+ const valorDescontoString = linha.substring(32, 47);
2513
+ const valorDesconto = Number(valorDescontoString) / 100;
2514
+ const valorPagoString = linha.substring(77, 92);
2515
+ const valorPago = Number(valorPagoString) / 100;
2516
+ const valorJurosString = linha.substring(17, 32);
2517
+ const valorJuros = Number(valorJurosString) / 100;
2518
+ const valorMulta = 0;
2519
+ const descontos = valorAbatimento + valorDesconto;
2520
+ const valorTotal = valorPago - valorJuros + descontos;
2521
+ const documento = {
2522
+ id_documento,
2523
+ especie,
2524
+ valor: valorPago,
2525
+ valor_multa: valorMulta,
2526
+ valor_juros: valorJuros,
2527
+ valor_desconto: valorDesconto,
2528
+ valor_total: valorTotal
2529
+ };
2530
+ documentos.push(documento);
2531
+ }
2532
+ }
2533
+ }
2534
+ return documentos;
2535
+ } catch (error) {
2536
+ console.log(error);
2537
+ return null;
2538
+ }
2448
2539
  }
2449
2540
 
2450
2541
  // src/banks/banco-brasil/index.ts
@@ -2452,7 +2543,7 @@ var bancoBrasil = {
2452
2543
  gerarDadosBoleto: gerarDadosBoleto5,
2453
2544
  gerarPDF: gerarPDF5,
2454
2545
  gerarRemessa: gerarRemessa5,
2455
- gerarRetorno: gerarRetorno4
2546
+ gerarRetorno: gerarRetorno5
2456
2547
  };
2457
2548
 
2458
2549
  // src/gerar.ts
@@ -2523,6 +2614,12 @@ function retorno({ banco, dados }) {
2523
2614
  if (banco === "748" /* SICREDI */) {
2524
2615
  return sicredi.gerarRetorno({ banco, dados });
2525
2616
  }
2617
+ if (banco === "001" /* BANCO_BRASIL */) {
2618
+ return bancoBrasil.gerarRetorno({ banco, dados });
2619
+ }
2620
+ if (banco === "756" /* SICOOB */) {
2621
+ return sicoob.gerarRetorno({ banco, dados });
2622
+ }
2526
2623
  }
2527
2624
 
2528
2625
  // src/config/index.ts