CodigoDeBarrasBuilder utiliza o valorDoBoleto e não o valorCobrado
robsonrosa opened this issue · comments
Ao gerar um boleto que utiliza acréscimos e descontos, o "valor total" do boleto é alterado de acordo com o método getValorCobrado, que faz o devido cálculo do valor a ser cobrado.
valorCobrado = valorDoBoleto + valorAcrescios - valorDescontos;
A classe CodigoDeBarrasBuilder utiliza o método getValorFormatado do Boleto para gerar o código de barras com o valor do boleto. No entanto, o método getValorFormatado formata e retorna apenas o valorDoBoleto, e não o valorCobrado, ou seja, o "Valor do Total" do boleto, aquele que deve ser pago, é diferente no código de barras e na linha digitável. Questiono se o método getValorFormatado não deveria retornar algo como:
return String.format("%011.2f", this.getValorCobrado()).replaceAll("[^0-9]", "");
Exemplo gerado atualmente:
Existe uma forma de gerar o código de barras / linha digitável, de acordo com o Valor Cobrado, ao invés do Valor do Documento?
Oi @robsonrosa
Eu acho que era assim antes, e pediram para alterar. De qualquer maneira, você pode extender a classe Boleto
, e sobreescrever o método getValorFormatado
, com o código que você postou aqui, isso será suficiente para que o código de barras seja corrigido. Isso vai alterar tanto o código de barras quanto a linha digitável.
Depois de muito tempo @mariofts
Passei pelo mesmo problema de novo e lembrei desse post. A solução adotada nos dois casos foi tua sugestão. Obrigado.