js-brasil
js-brasil copied to clipboard
Boleto
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.
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?
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.
Regex pros 44 generico:
(?<banco>\d{3})(?<moeda>\d{1})(?<verificador>\d{1})(?<vencimento>\d{4})(?<valor>\d{10})(?<mensagem>\d{25})