Closed henrique25teles closed 2 years ago
@henrique25teles , boa tarde...
Entendi o que você sugeriu... Você comentou que implementou na "Carteira 1", mas na verdade, você fez no "Banco Safra", o que influencia também a "carteira 2" - salvo engano aqui, acho que é isso.
Não seria melhor, validar esses dados dentro do próprio método FormataCampoLivre?
Por exemplo, o FormataNossoNumero possuí algumas regras - Se não me engano, no BB, lembro que existe carteiras com o nosso número sendo diferente...
No caso do campo livre do Safra, a regra é igual para carteira 1 e 2 (concluí pois comparei os 2 métodos e estão iguais) - mas poderia ser diferente...
Então acho que você escreveu o que seria mais correto (implementar a regra na carteira 1) mas acabou fazendo no banco.
E já que estamos pensando em implementar isso, já não seria o caso de validar todos os campos que formam o Campo Livre? Ou seja, no caso do SAFRA:
boleto.Banco.Digito boleto.Banco.Cedente.ContaBancaria.Agencia boleto.Banco.Cedente.ContaBancaria.DigitoAgencia boleto.Banco.Cedente.ContaBancaria.Conta boleto.Banco.Cedente.ContaBancaria.DigitoConta boleto.NossoNumero boleto.NossoNumeroDV }
@rafd75 Desculpe a demora para responder. Eu não sou muito ativo na comunidade e só percebi agora que meu PR não tinha sido aceito. Fiz um novo commit, removendo a validação do ValidaBoleto() e transferindo para o método FormataCodigoBarraCampoLivre(). Dessa forma a validação fica apenas na carteira e não para o banco inteiro. Fiz uns testes aqui para ver se não ia dar problema e passou tranquilo.
Usei esse documento para validar os campos pelo tamanho correto.
Apenas salientando que o Nº da conta e Nº da agência nessa documentação estão com o dígito. Eu validei o dígito da conta e da agência separadamente.
Fica tudo certo assim ?
Validei apenas no banco safra, depois quando tiver com tempo, eu faço parecido nos outros bancos que tenho acesso por aqui.
Oi @henrique25teles ...
Beleza! ... Legal as exceptions também...
abs!
Adicionada validação de quantidade de dígitos de conta do banco safra no ValidaBoleto.
Motivo da adição: Ao chamar o método ValidarDados
Dentro do método Boleto2Net.Banco.FormataCodigoBarra é montado o CampoLivre Se o CampoLivre tiver menos de 25 caracteres, retorna um erro genérico. "Campo Livre ({codigoBarra.CampoLivre}) deve conter 25 dígitos." Com esse erro não é possível eu saber onde estou passando informações erradas sem subir o projeto boletoNet na minha solução e debuggar.
Por essa razão, adicionei uma validação de conta no ValidaBoleto do safra carteira 1 para que antes de gerar o campo livre, seja validado se a quantidade de caracteres da conta seja válido.