js-brasil icon indicating copy to clipboard operation
js-brasil copied to clipboard

Boleto

Open mariohmol opened this issue 5 years ago • 4 comments

mariohmol avatar Nov 21 '19 13:11 mariohmol

Validar boleto é um tanto complicado. Mas esse link explica tudo o que é necessário para entender.

https://tdn.totvs.com/pages/releaseview.action?pageId=421388789

Resumindo:

Montagem do campo código de barras base, posição 1 até a posição 19

  • Posições 1 a 3 com tamanho 3: Número oficial do banco (código Febraban).
  • Posição 4 com tamanho 1: Código da moeda que tem o valor 9.
  • Posição 5 com tamanho 1: Dígito verificar do código de barras.
  • Cálculo do dígito verificador do código de barras executado utilizando as informações anteriores no cálculo do "módulo 11". O valor gerado será inserido na posição definida para o dígito verificador (posição 5).
  • Posições 6 a 9 com tamanho 4: Fator de vencimento calculado pela subtração da data de vencimento informada no boleto menos a data 07/10/1997 (estabelecida pela Febraban).
  • Posições 10 a 19 com tamanho 10: Valor nominal do título.

Montagem do campo livre do código de barras, posição 20 até a posição 44:

  • O processamento deste campo será detalhando para cada banco conforme as regras do mesmo.

sirbaconjr avatar Dec 27 '19 01:12 sirbaconjr

muito top esse link!!!!

entao pra cada banco terá regra diferentes? vai da trampo ter todas a variacoes ne?

talvez fazer agora um genérico e depois criar issues pra implementar as especificidades dos bancos?

mariohmol avatar Dec 27 '19 01:12 mariohmol

Creio que sim, faz um genérico que valida da posição 1 a 19. Aí não validamos o resto. Depois dá para abrir uma issue com a lista de todos os bancos que devem ser suportados e ir adicionado um por um. Sem pressa.

sirbaconjr avatar Dec 27 '19 01:12 sirbaconjr

Regex pros 44 generico:

(?<banco>\d{3})(?<moeda>\d{1})(?<verificador>\d{1})(?<vencimento>\d{4})(?<valor>\d{10})(?<mensagem>\d{25})

mariohmol avatar May 11 '23 13:05 mariohmol