brutils-python icon indicating copy to clipboard operation
brutils-python copied to clipboard

Implementar a validação de boletos

Open ramiroluz opened this issue 1 year ago • 7 comments

Validar boletos.

Implementação da função is_valid_boleto:

  • Diversidade de formatos: Boletos podem ter diferentes formatos e layouts, dependendo do banco emissor e do sistema utilizado.
  • Informações essenciais: A função precisa criar um objeto boleto e validar a linha digitável, para isso serão necessárias informações relevantes como:
    • Data do documento
    • Data de vencimento
    • Data de processamento
    • Valor do documento
    • Agencia cedente
    • Conta cedente
    • Convenio
    • Nosso número
    • Número do documento

A função deve:

  • Validar: Verificar se a entrada é um boleto válido, utilizando os dígitos verificadores e a estrutura padrão.
  • Considerar:
    • Diversidade de formatos: A função deve ser capaz de lidar com diferentes formatos de boletos.
    • Validação robusta: A validação deve ser completa e abranger todos os aspectos relevantes.
    • Flexibilidade: A função deve ser flexível para atender a diferentes necessidades.

Exemplo de uso:

from brutils.boleto import Boleto, is_valid_boleto


boleto = Boleto(
    data_documento = datetime.date(2000, 7, 4)
    data_vencimento = datetime.date(2000, 7, 4)
    data_processamento = datetime.date(2012, 7, 11)
    valor_documento = 550
    agencia_cedente = '1102'
    conta_cedente = '9000150'
    convenio = 7777777
    nosso_numero = str(22832563 + i)
    numero_documento = str(22832563 + i)
)

resultado = is_valid_boleto(boleto.linha_digitavel)

print(resultado)
# Output:
# True

Considerações adicionais:

  • Biblioteca externa: Podemos considerar a utilização de uma biblioteca externa especializada em tratamento de boletos, como a boleto3 ou a pyboleto.
  • Documentação: A documentação da função deve ser clara e completa, explicando todos os parâmetros e o formato da saída.
  • Testes: É fundamental criar testes unitários abrangentes para garantir a qualidade da implementação.

ramiroluz avatar Oct 21 '24 18:10 ramiroluz

Exemplos de utilização de boletos de vários bancos: https://github.com/Trust-Code/python-boleto/tree/master3/tests

Exemplo do banco banrisul: https://github.com/Trust-Code/python-boleto/blob/master3/tests/test_banco_banrisul.py#L14C13-L24C33

ramiroluz avatar Oct 21 '24 18:10 ramiroluz

bora!

renata-machado avatar Feb 12 '25 13:02 renata-machado

Issue 433 atribuida a renata-machado :rocket:" "Verifique o guia de contribuição para mais informações sobre como submeter sua Pull Request."

github-actions[bot] avatar Feb 12 '25 13:02 github-actions[bot]

:warning: [PT-BR] Esta issue está inativa há 90 dias. Os assignees serão removidos em 7 dias caso não haja atualizações.

:warning: [EN] This issue has been inactive for 90 days. The assignees will be removed in 7 days if there are no updates.

github-actions[bot] avatar May 13 '25 16:05 github-actions[bot]

Bora!

morais90 avatar Oct 27 '25 14:10 morais90

🇧🇷 Português ✅ Issue #433 atribuída a @morais90. Verifique o guia de contribuição para instruções sobre como submeter sua Pull Request.

🇬🇧 English ✅ Issue #433 assigned to @morais90. Check the contributing guide for instructions on submitting your Pull Request.

github-actions[bot] avatar Oct 27 '25 14:10 github-actions[bot]

Sugestão, criar teste para um boleto e fazer o teste passar.

ramiroluz avatar Oct 27 '25 14:10 ramiroluz

Boa noite pessoal! Vou deixar essa mensagem como info pois vou fechar essa issue pra gente pesquisar um pouco melhor a regra de negócio e evitar de criar algo que não esteja de acordo e pra que ninguém puxe essa issue até que a gente tenha tudo documentado certinho sobre a regra, beleza? Obrigado galera 🫶

niltonpimentel02 avatar Nov 13 '25 22:11 niltonpimentel02

¡Buenas @niltonpimentel02 !

A referência é a seguinte -> Documento da Febraban tem as especificações do boleto de arrecacação (Taxas munícipais, luz, água, esgoto, energia)

https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%207%20-%2001_03_2023_mn.pdf

Daí as regras de boleto bancário a gente pode usar do Itaú e outros bancos.

https://download.itau.com.br/bankline/sispag_cnab.pdf -> Anexo A

Vai faltar boletos de operadoras de cartão de crédito que diferem dessas regras aí, mas não é tão comum. Também nunca consegui achar a especificação

morais90 avatar Nov 14 '25 10:11 morais90