@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.mjs CHANGED
@@ -1371,9 +1371,7 @@ function gerarRemessa3({ dados }) {
1371
1371
  arquivo.add(multaAtraso.padStart(4, "0"));
1372
1372
  arquivo.add(" ".padEnd(12, " "));
1373
1373
  arquivo.add("01");
1374
- const tipo_documento = boleto.identificacaoTitulo.substring(0, 1);
1375
- const especie = tipo_documento === "F" ? "0" /* FATURA */ : tipo_documento === "N" ? "1" /* NOTA */ : "2" /* LANCAMENTO */;
1376
- arquivo.add((especie + boleto.numeroDocumento + "/" + boleto.parcela).padEnd(10, " "));
1374
+ arquivo.add(boleto.identificacaoTitulo.padEnd(10, " "));
1377
1375
  arquivo.add(format3(new Date(boleto.vencimento), "ddMMyy"));
1378
1376
  arquivo.add(Number(boleto.valor).toFixed(2).replace(".", "").padStart(13, "0"));
1379
1377
  arquivo.add(" ".padEnd(9, " "));
@@ -1443,10 +1441,17 @@ function gerarRetorno3({ dados }) {
1443
1441
  continue;
1444
1442
  }
1445
1443
  const meu_numero = linha.substring(116, 126).trim();
1446
- const [financeiro, _parcela] = meu_numero.split("/");
1447
- const numero_especie = financeiro[0];
1448
- const especie = numero_especie === "0" /* FATURA */ ? "FAT" : numero_especie === "1" /* NOTA */ ? "NFE" : numero_especie === "2" /* LANCAMENTO */ ? "LAN" : "INDEFINIDO";
1449
- const id_financeiro = financeiro.substring(1);
1444
+ let tipo_documento = "";
1445
+ let id_documento = "";
1446
+ if (meu_numero.includes("-")) {
1447
+ const [tipo, id] = meu_numero.split("-");
1448
+ tipo_documento = tipo;
1449
+ id_documento = id;
1450
+ }
1451
+ let especie = "INDEFINIDO";
1452
+ if (tipo_documento.length) {
1453
+ especie = tipo_documento === "N" ? "NFE" : tipo_documento === "F" ? "FAT" : tipo_documento === "L" ? "FIN" : "INDEFINIDO";
1454
+ }
1450
1455
  const valor_titulo = Number(linha.substring(152, 165)) / 100;
1451
1456
  const abatimento = Number(linha.substring(227, 240)) / 100;
1452
1457
  let valor_desconto = Number(linha.substring(240, 253)) / 100;
@@ -1462,7 +1467,7 @@ function gerarRetorno3({ dados }) {
1462
1467
  const descontos = abatimento + valor_desconto;
1463
1468
  const valor_total = valor_titulo + valor_multa + valor_juros - descontos;
1464
1469
  documentos.push({
1465
- id_documento: id_financeiro,
1470
+ id_documento,
1466
1471
  especie,
1467
1472
  valor: valor_pago,
1468
1473
  valor_multa,
@@ -1494,13 +1499,14 @@ function gerarDadosBoleto4({ dados }) {
1494
1499
  bancario.modalidade = "01";
1495
1500
  }
1496
1501
  bancario.modalidade = padLeft(bancario.modalidade, 2);
1497
- const nossoNumero = getNossoNumero2(bancario.agencia, bancario.codigo_cliente, parcela.id_boleto);
1502
+ const codigo_cliente = `${bancario.codigo_cliente}${bancario.codigo_cliente_dv}`;
1503
+ const nossoNumero = getNossoNumero2(bancario.agencia, codigo_cliente, String(parcela.id_boleto));
1498
1504
  const fatorVencimento = getFatorVencimento(parcela.vencimento);
1499
1505
  const valor = getValor4(Number(parcela.valor));
1500
- const campoLivre = "1" + padLeft(copy(bancario.agencia, 1, 4), 4) + bancario.modalidade + padLeft(bancario.codigo_cliente, 7) + nossoNumero + padLeft(parcela.parcela, 3);
1506
+ const campoLivre = "1" + bancario.agencia + bancario.modalidade + codigo_cliente + nossoNumero + padLeft(parcela.parcela, 3);
1501
1507
  const digitoGeral = getDigitoGeral4(`7569${fatorVencimento}${valor}${campoLivre}`);
1502
1508
  const codigoBarra2 = `7569${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
1503
- const campo1 = copy(codigoBarra2, 1, 4) + copy(codigoBarra2, 20, 24);
1509
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
1504
1510
  const campo2 = copy(codigoBarra2, 25, 34);
1505
1511
  const campo3 = copy(codigoBarra2, 35, 44);
1506
1512
  const campo4 = copy(codigoBarra2, 5, 5);
@@ -1524,15 +1530,24 @@ function gerarDadosBoleto4({ dados }) {
1524
1530
  return null;
1525
1531
  }
1526
1532
  }
1527
- function getNossoNumero2(numero_cooperativa, codigo_cliente, id_boleto) {
1528
- const constante_calculo = "3197";
1529
- numero_cooperativa = padLeft(copy(numero_cooperativa, 1, 4), 4);
1530
- codigo_cliente = padLeft(codigo_cliente, 10);
1531
- id_boleto = padLeft(`${id_boleto}2`, 7);
1532
- const sequencia_concatenada = numero_cooperativa + codigo_cliente + id_boleto;
1533
- let soma = 0;
1534
- for (let i = sequencia_concatenada.length - 1; i >= 0; i--) {
1535
- soma += Number(sequencia_concatenada[i]) * Number(constante_calculo[i % constante_calculo.length]);
1533
+ function getNossoNumero2(agencia, codigo_cliente, id_boleto) {
1534
+ codigo_cliente = codigo_cliente.padStart(10, "0");
1535
+ id_boleto = id_boleto.padStart(7, "0");
1536
+ const aux = `${agencia}${codigo_cliente}${id_boleto}`;
1537
+ let i = 22, m = 3, soma = 0;
1538
+ while (true) {
1539
+ i--;
1540
+ soma += m * Number(copy(aux, i, i));
1541
+ if (i === 1)
1542
+ break;
1543
+ if (m === 3)
1544
+ m = 7;
1545
+ if (m === 7)
1546
+ m = 9;
1547
+ if (m === 9)
1548
+ m = 1;
1549
+ if (m === 1)
1550
+ m = 3;
1536
1551
  }
1537
1552
  let dig = soma % 11;
1538
1553
  dig = dig === 1 ? dig = 0 : 11 - dig;
@@ -1603,10 +1618,12 @@ function gerarRemessa4({ dados }) {
1603
1618
  arquivo.add("2");
1604
1619
  arquivo.add(beneficiario.cnpj);
1605
1620
  arquivo.add(" ".padEnd(20, " "));
1606
- arquivo.add(dadosBancario.agencia.padStart(6, "0"));
1607
- arquivo.add(dadosBancario.conta.padStart(13, "0"));
1621
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1622
+ arquivo.add(dadosBancario.agenciaDigito);
1623
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1624
+ arquivo.add(dadosBancario.contaDigito);
1608
1625
  arquivo.add("0");
1609
- arquivo.add(beneficiario.nome.padEnd(30, " "));
1626
+ arquivo.add(removerAcentos(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1610
1627
  arquivo.add("SICOOB".padEnd(30, " "));
1611
1628
  arquivo.add(" ".padEnd(10, " "));
1612
1629
  arquivo.add("1");
@@ -1628,10 +1645,12 @@ function gerarRemessa4({ dados }) {
1628
1645
  arquivo.add("2");
1629
1646
  arquivo.add(beneficiario.cnpj.padStart(15, "0"));
1630
1647
  arquivo.add(" ".padEnd(20, " "));
1631
- arquivo.add(dadosBancario.agencia.padStart(6, "0"));
1632
- arquivo.add(dadosBancario.conta.padStart(13, "0"));
1648
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1649
+ arquivo.add(dadosBancario.agenciaDigito);
1650
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1651
+ arquivo.add(dadosBancario.contaDigito);
1633
1652
  arquivo.add(" ");
1634
- arquivo.add(beneficiario.nome.padEnd(30, " "));
1653
+ arquivo.add(removerAcentos(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1635
1654
  arquivo.add(" ".padEnd(80, " "));
1636
1655
  arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
1637
1656
  arquivo.add(data);
@@ -1646,21 +1665,19 @@ function gerarRemessa4({ dados }) {
1646
1665
  const vencimento = format4(new Date(boleto.vencimento), "ddMMyyyy");
1647
1666
  const valor_juros_dia = Number(boleto.valor) * dadosBancario.jurosMes / 100 / 30;
1648
1667
  const protesto = dadosBancario.diasProtesto > 0 ? "1" : "3";
1649
- const diasProtesto = protesto === "1" ? dadosBancario.diasProtesto.toString() : "00";
1650
- if (dadosBancario.aceite === "S") {
1651
- dadosBancario.aceite = "A";
1652
- }
1668
+ const diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
1653
1669
  total += Number(boleto.valor);
1654
- sequencia++;
1655
1670
  arquivo.add("756");
1656
1671
  arquivo.add("0001");
1657
1672
  arquivo.add("3");
1658
- arquivo.add(sequencia.toString().padStart(5, "0"));
1673
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1659
1674
  arquivo.add("P");
1660
1675
  arquivo.add(" ");
1661
1676
  arquivo.add("01");
1662
- arquivo.add(dadosBancario.agencia.padStart(6, "0"));
1663
- arquivo.add(dadosBancario.conta.padStart(13, "0"));
1677
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1678
+ arquivo.add(dadosBancario.agenciaDigito);
1679
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1680
+ arquivo.add(dadosBancario.contaDigito);
1664
1681
  arquivo.add(" ");
1665
1682
  arquivo.add(boleto.nossoNumero.padStart(10, "0"));
1666
1683
  arquivo.add(boleto.parcela.toString().padStart(2, "0"));
@@ -1675,7 +1692,7 @@ function gerarRemessa4({ dados }) {
1675
1692
  arquivo.add("00000");
1676
1693
  arquivo.add(" ");
1677
1694
  arquivo.add("02");
1678
- arquivo.add(dadosBancario.aceite);
1695
+ arquivo.add("N");
1679
1696
  arquivo.add(data);
1680
1697
  arquivo.add("1");
1681
1698
  arquivo.add(format4(addDays3(new Date(boleto.vencimento), 1), "ddMMyyyy"));
@@ -1685,15 +1702,14 @@ function gerarRemessa4({ dados }) {
1685
1702
  arquivo.add("000000000000000");
1686
1703
  arquivo.add("000000000000000");
1687
1704
  arquivo.add("000000000000000");
1688
- arquivo.add(" ".padEnd(25, " "));
1705
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
1689
1706
  arquivo.add(protesto);
1690
- arquivo.add(diasProtesto.padStart(2, "0"));
1707
+ arquivo.add(diasProtesto);
1691
1708
  arquivo.add("0");
1692
1709
  arquivo.add(" ");
1693
1710
  arquivo.add("09");
1694
1711
  arquivo.add("0000000000");
1695
1712
  arquivo.add(" ");
1696
- sequencia++;
1697
1713
  arquivo.addLine();
1698
1714
  let tipoInscricao = "1";
1699
1715
  if (pagador.pessoa === "F") {
@@ -1701,26 +1717,18 @@ function gerarRemessa4({ dados }) {
1701
1717
  } else {
1702
1718
  tipoInscricao = "2";
1703
1719
  }
1704
- pagador.endereco.bairro = pagador.endereco.bairro.toUpperCase();
1705
- pagador.endereco.logradouro = pagador.endereco.logradouro.toUpperCase();
1706
- pagador.endereco.municipio = pagador.endereco.municipio.toUpperCase();
1707
- pagador.endereco.uf = pagador.endereco.uf.toUpperCase();
1708
- const { tipo_logradouro, logradouro } = getLogradouro(pagador.endereco.logradouro);
1720
+ pagador.endereco.logradouro = `${removerAcentos(pagador.endereco.logradouro).substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
1709
1721
  arquivo.add("756");
1710
1722
  arquivo.add("0001");
1711
1723
  arquivo.add("3");
1712
- arquivo.add(sequencia.toString().padStart(5, "0"));
1724
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1713
1725
  arquivo.add("Q");
1714
1726
  arquivo.add(" ");
1715
1727
  arquivo.add("01");
1716
1728
  arquivo.add(tipoInscricao);
1717
1729
  arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
1718
- arquivo.add(removerAcentos(pagador.nome.toUpperCase()).substring(0, 40).padEnd(40, " "));
1719
- arquivo.add(removerAcentos(tipo_logradouro).padEnd(3, " "));
1720
- arquivo.add(" ");
1721
- arquivo.add(removerAcentos(logradouro).substring(0, 29).padEnd(29, " "));
1722
- arquivo.add(" ");
1723
- arquivo.add(pagador.endereco.numero.padEnd(6, " "));
1730
+ arquivo.add(removerAcentos(pagador.nome).substring(0, 40).padEnd(40, " "));
1731
+ arquivo.add(removerAcentos(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
1724
1732
  arquivo.add(removerAcentos(pagador.endereco.bairro).substring(0, 15).padEnd(15, " "));
1725
1733
  arquivo.add(pagador.endereco.cep.padEnd(8, " "));
1726
1734
  arquivo.add(removerAcentos(pagador.endereco.municipio).substring(0, 15).padEnd(15, " "));
@@ -1730,22 +1738,21 @@ function gerarRemessa4({ dados }) {
1730
1738
  arquivo.add(" ".padEnd(40, " "));
1731
1739
  arquivo.add("000");
1732
1740
  arquivo.add(" ".padEnd(28, " "));
1733
- sequencia++;
1734
1741
  arquivo.addLine();
1735
1742
  let multa = "0";
1736
1743
  let data_multa = "00000000";
1737
- let percentual_multa = "000000000000000";
1744
+ let valor_multa = "000000000000000";
1738
1745
  dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
1739
1746
  if (dadosBancario.multaAtraso > 0) {
1740
1747
  multa = "2";
1741
1748
  data_multa = format4(addDays3(new Date(boleto.vencimento), 1), "ddMMyyyy");
1742
- percentual_multa = (dadosBancario.multaAtraso * 100).toString().padStart(15, "0");
1749
+ valor_multa = dadosBancario.multaAtraso.toFixed(2).replace(".", "").padStart(15, "0");
1743
1750
  }
1744
1751
  arquivo.add("756");
1745
1752
  arquivo.add("0001");
1746
1753
  arquivo.add("3");
1747
1754
  arquivo.add("");
1748
- arquivo.add(sequencia.toString().padStart(5, "0"));
1755
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1749
1756
  arquivo.add("R");
1750
1757
  arquivo.add(" ");
1751
1758
  arquivo.add("01");
@@ -1757,7 +1764,7 @@ function gerarRemessa4({ dados }) {
1757
1764
  arquivo.add("000000000000000");
1758
1765
  arquivo.add(multa);
1759
1766
  arquivo.add(data_multa);
1760
- arquivo.add(percentual_multa);
1767
+ arquivo.add(valor_multa);
1761
1768
  arquivo.add(" ".padEnd(10, " "));
1762
1769
  arquivo.add(" ".padEnd(40, " "));
1763
1770
  arquivo.add(" ".padEnd(40, " "));
@@ -1801,47 +1808,6 @@ function gerarRemessa4({ dados }) {
1801
1808
  return null;
1802
1809
  }
1803
1810
  }
1804
- function getLogradouro(logradouro) {
1805
- const logradouro_split = logradouro.split(" ");
1806
- let tipo_logradouro = "RUA";
1807
- if (/^R(\.|UA)?\b/i.test(logradouro_split[0])) {
1808
- logradouro = logradouro_split.slice(1).join(" ");
1809
- } else if (/^AV(\.|ENIDA)?\b/i.test(logradouro_split[0])) {
1810
- tipo_logradouro = "AV";
1811
- logradouro = logradouro_split.slice(1).join(" ");
1812
- } else if (/^SERVIDAO\b/i.test(logradouro_split[0])) {
1813
- tipo_logradouro = "SEV";
1814
- logradouro = logradouro_split.slice(1).join(" ");
1815
- } else if (/^SEV(\.)?\b/i.test(logradouro_split[0])) {
1816
- tipo_logradouro = "SEV";
1817
- logradouro = logradouro_split.slice(1).join(" ");
1818
- } else if (/^ROD(\.|OVIA)?\b/i.test(logradouro_split[0])) {
1819
- tipo_logradouro = "ROD";
1820
- logradouro = logradouro_split.slice(1).join(" ");
1821
- } else if (/^FAZ(\.|ENDA)?\b/i.test(logradouro_split[0])) {
1822
- tipo_logradouro = "FAZ";
1823
- logradouro = logradouro_split.slice(1).join(" ");
1824
- } else if (/^EST(\.|RADA)?\b/i.test(logradouro_split[0])) {
1825
- tipo_logradouro = "EST";
1826
- logradouro = logradouro_split.slice(1).join(" ");
1827
- } else if (/^ALA(\.|MEDA)?\b/i.test(logradouro_split[0])) {
1828
- tipo_logradouro = "ALA";
1829
- logradouro = logradouro_split.slice(1).join(" ");
1830
- } else if (/^ENC(\.|RUZILHADA)?\b/i.test(logradouro_split[0])) {
1831
- tipo_logradouro = "ENC";
1832
- logradouro = logradouro_split.slice(1).join(" ");
1833
- } else if (/^PR(\.|ACA)?\b/i.test(logradouro_split[0])) {
1834
- tipo_logradouro = "PR";
1835
- logradouro = logradouro_split.slice(1).join(" ");
1836
- } else if (/^TRAVESSA\b/i.test(logradouro_split[0])) {
1837
- tipo_logradouro = "TV";
1838
- logradouro = logradouro_split.slice(1).join(" ");
1839
- } else if (/^TV(\.)?\b/i.test(logradouro_split[0])) {
1840
- tipo_logradouro = "TV";
1841
- logradouro = logradouro_split.slice(1).join(" ");
1842
- }
1843
- return { tipo_logradouro, logradouro };
1844
- }
1845
1811
 
1846
1812
  // src/banks/sicoob/gerarPDF.ts
1847
1813
  import BwipJs4 from "bwip-js";
@@ -1855,14 +1821,11 @@ function gerarPDF4(_0) {
1855
1821
  text: dadosPDF.boleto.codigoBarra,
1856
1822
  height: 20
1857
1823
  });
1858
- dadosPDF.boleto.numeroDocumento = formatNumeroDocumento(
1859
- dadosPDF.boleto.numeroDocumento,
1860
- dadosPDF.boleto.parcela
1861
- );
1862
1824
  dadosPDF.beneficiario.dadosBancario.agencia = formatAgenciaCodigoCedente(
1863
1825
  dadosPDF.beneficiario.dadosBancario.agencia,
1864
1826
  dadosPDF.beneficiario.dadosBancario.codigo_cliente
1865
1827
  );
1828
+ dadosPDF.beneficiario.dadosBancario.carteira = dadosPDF.beneficiario.dadosBancario.carteira.padStart(2, "0");
1866
1829
  dadosPDF.boleto.nossoNumero = formatNossoNumero(
1867
1830
  dadosPDF.boleto.parcela,
1868
1831
  dadosPDF.boleto.nossoNumero
@@ -1883,6 +1846,7 @@ function gerarPDF4(_0) {
1883
1846
  dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
1884
1847
  dadosPDF.boleto.valorDescontoAbatimento
1885
1848
  );
1849
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
1886
1850
  dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
1887
1851
  dadosPDF.boleto.valorDocumento
1888
1852
  );
@@ -1893,6 +1857,23 @@ function gerarPDF4(_0) {
1893
1857
  if (dadosPDF.boleto.quantidade) {
1894
1858
  dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
1895
1859
  }
1860
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
1861
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
1862
+ if (jurosDia > 0) {
1863
+ dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
1864
+ }
1865
+ const descontoVencimento = dadosPDF.beneficiario.dadosBancario.desconto || 0;
1866
+ if (descontoVencimento > 0) {
1867
+ dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
1868
+ }
1869
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
1870
+ if (multaAtraso > 0) {
1871
+ dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
1872
+ }
1873
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
1874
+ if (protestoDias > 0) {
1875
+ dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
1876
+ }
1896
1877
  dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
1897
1878
  const content = compileHbs(getPathTemplates("sicoob-boleto.hbs"), dadosPDF);
1898
1879
  const config = {
@@ -1933,21 +1914,75 @@ function formatAgenciaCodigoCedente(agencia, conta) {
1933
1914
  function formatNossoNumero(parcela, nossoNumero) {
1934
1915
  parcela = String(parcela).padStart(2, "0");
1935
1916
  nossoNumero = nossoNumero.padStart(8, "0");
1936
- const nossoNumeroFmt = new StringMask2("00/0000000-0");
1937
- return nossoNumeroFmt.apply(parcela + nossoNumero);
1917
+ return `${parcela}/${nossoNumero.slice(0, 7)}-${nossoNumero.slice(7, 8)}`;
1938
1918
  }
1939
- function formatNumeroDocumento(numeroDocumento, parcela) {
1940
- parcela = String(parcela).padStart(2, "0");
1941
- numeroDocumento = numeroDocumento.padStart(6, "0");
1942
- const numeroDoctoFmt = new StringMask2("000000-00");
1943
- return numeroDoctoFmt.apply(numeroDocumento + parcela);
1919
+
1920
+ // src/banks/sicoob/gerarRetorno.ts
1921
+ function gerarRetorno4({ dados }) {
1922
+ try {
1923
+ const { arquivo } = dados;
1924
+ const documentos = [];
1925
+ for (let i = 0; i < arquivo.length; i++) {
1926
+ let linha = arquivo[i];
1927
+ const banco = linha.substring(0, 3);
1928
+ if (banco !== "756" /* SICOOB */) {
1929
+ continue;
1930
+ }
1931
+ const ocorrencia = linha.substring(15, 17);
1932
+ if (ocorrencia !== "06" && ocorrencia !== "17") {
1933
+ continue;
1934
+ }
1935
+ let segmento = linha.substring(13, 14);
1936
+ if (segmento === "T") {
1937
+ const meu_numero = linha.substring(105, 130).trimEnd();
1938
+ let tipo_documento = "INDEFINIDO";
1939
+ let id_documento = meu_numero;
1940
+ if (meu_numero.includes("-")) {
1941
+ const [tipo, id] = meu_numero.split("-");
1942
+ tipo_documento = tipo;
1943
+ id_documento = id;
1944
+ }
1945
+ const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
1946
+ linha = arquivo[++i];
1947
+ segmento = linha.substring(13, 14);
1948
+ if (segmento === "U") {
1949
+ const valorAbatimentoString = linha.substring(47, 62);
1950
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
1951
+ const valorDescontoString = linha.substring(32, 47);
1952
+ const valorDesconto = Number(valorDescontoString) / 100;
1953
+ const valorPagoString = linha.substring(77, 92);
1954
+ const valorPago = Number(valorPagoString) / 100;
1955
+ const valorJurosString = linha.substring(17, 32);
1956
+ const valorJuros = Number(valorJurosString) / 100;
1957
+ const valorMulta = 0;
1958
+ const descontos = valorAbatimento + valorDesconto;
1959
+ const valorTotal = valorPago - valorJuros + descontos;
1960
+ const documento = {
1961
+ id_documento,
1962
+ especie,
1963
+ valor: valorPago,
1964
+ valor_multa: valorMulta,
1965
+ valor_juros: valorJuros,
1966
+ valor_desconto: valorDesconto,
1967
+ valor_total: valorTotal
1968
+ };
1969
+ documentos.push(documento);
1970
+ }
1971
+ }
1972
+ }
1973
+ return documentos;
1974
+ } catch (error) {
1975
+ console.log(error);
1976
+ return null;
1977
+ }
1944
1978
  }
1945
1979
 
1946
1980
  // src/banks/sicoob/index.ts
1947
1981
  var sicoob = {
1948
1982
  gerarDadosBoleto: gerarDadosBoleto4,
1949
1983
  gerarRemessa: gerarRemessa4,
1950
- gerarPDF: gerarPDF4
1984
+ gerarPDF: gerarPDF4,
1985
+ gerarRetorno: gerarRetorno4
1951
1986
  };
1952
1987
 
1953
1988
  // src/banks/banco-brasil/gerarDadosBoleto.ts
@@ -2310,7 +2345,7 @@ function gerarRemessa5({ dados }) {
2310
2345
  arquivo.add("000000000000000");
2311
2346
  arquivo.add("000000000000000");
2312
2347
  arquivo.add("000000000000000");
2313
- arquivo.add(" ".padEnd(25, " "));
2348
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
2314
2349
  arquivo.add(protesto);
2315
2350
  arquivo.add(diasProtesto);
2316
2351
  arquivo.add(baixarDevolver);
@@ -2407,7 +2442,63 @@ function gerarRemessa5({ dados }) {
2407
2442
  }
2408
2443
 
2409
2444
  // src/banks/banco-brasil/gerarRetorno.ts
2410
- function gerarRetorno4() {
2445
+ function gerarRetorno5({ dados }) {
2446
+ try {
2447
+ const { arquivo } = dados;
2448
+ const documentos = [];
2449
+ for (let i = 0; i < arquivo.length; i++) {
2450
+ let linha = arquivo[i];
2451
+ const banco = linha.substring(0, 3);
2452
+ if (banco !== "001" /* BANCO_BRASIL */) {
2453
+ continue;
2454
+ }
2455
+ const ocorrencia = linha.substring(15, 17);
2456
+ if (ocorrencia !== "06" && ocorrencia !== "17") {
2457
+ continue;
2458
+ }
2459
+ let segmento = linha.substring(13, 14);
2460
+ if (segmento === "T") {
2461
+ const meu_numero = linha.substring(105, 130).trimEnd();
2462
+ let tipo_documento = "INDEFINIDO";
2463
+ let id_documento = meu_numero;
2464
+ if (meu_numero.includes("-")) {
2465
+ const [tipo, id] = meu_numero.split("-");
2466
+ tipo_documento = tipo;
2467
+ id_documento = id;
2468
+ }
2469
+ const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
2470
+ linha = arquivo[++i];
2471
+ segmento = linha.substring(13, 14);
2472
+ if (segmento === "U") {
2473
+ const valorAbatimentoString = linha.substring(47, 62);
2474
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
2475
+ const valorDescontoString = linha.substring(32, 47);
2476
+ const valorDesconto = Number(valorDescontoString) / 100;
2477
+ const valorPagoString = linha.substring(77, 92);
2478
+ const valorPago = Number(valorPagoString) / 100;
2479
+ const valorJurosString = linha.substring(17, 32);
2480
+ const valorJuros = Number(valorJurosString) / 100;
2481
+ const valorMulta = 0;
2482
+ const descontos = valorAbatimento + valorDesconto;
2483
+ const valorTotal = valorPago - valorJuros + descontos;
2484
+ const documento = {
2485
+ id_documento,
2486
+ especie,
2487
+ valor: valorPago,
2488
+ valor_multa: valorMulta,
2489
+ valor_juros: valorJuros,
2490
+ valor_desconto: valorDesconto,
2491
+ valor_total: valorTotal
2492
+ };
2493
+ documentos.push(documento);
2494
+ }
2495
+ }
2496
+ }
2497
+ return documentos;
2498
+ } catch (error) {
2499
+ console.log(error);
2500
+ return null;
2501
+ }
2411
2502
  }
2412
2503
 
2413
2504
  // src/banks/banco-brasil/index.ts
@@ -2415,7 +2506,7 @@ var bancoBrasil = {
2415
2506
  gerarDadosBoleto: gerarDadosBoleto5,
2416
2507
  gerarPDF: gerarPDF5,
2417
2508
  gerarRemessa: gerarRemessa5,
2418
- gerarRetorno: gerarRetorno4
2509
+ gerarRetorno: gerarRetorno5
2419
2510
  };
2420
2511
 
2421
2512
  // src/gerar.ts
@@ -2486,6 +2577,12 @@ function retorno({ banco, dados }) {
2486
2577
  if (banco === "748" /* SICREDI */) {
2487
2578
  return sicredi.gerarRetorno({ banco, dados });
2488
2579
  }
2580
+ if (banco === "001" /* BANCO_BRASIL */) {
2581
+ return bancoBrasil.gerarRetorno({ banco, dados });
2582
+ }
2583
+ if (banco === "756" /* SICOOB */) {
2584
+ return sicoob.gerarRetorno({ banco, dados });
2585
+ }
2489
2586
  }
2490
2587
 
2491
2588
  // src/config/index.ts