Boa tarde,
Estou com um cliente que estamos com um problema ao ler o NossoNumero no retorno 240 quando o CodigoCedente são 6 dígitos. Foi verificado no fonte que o mesmo pega o código do cedente na unit "ACBrBancoBrasil.pas":
rConvenioCedente:= Trim(Copy(ARetorno[0], 33, 9));
Porém conforme o layout do banco são 9 dígitos preenchidos com zeros a esquerda caso o mesmo não possua todos registros, então por exemplo dessa forma o o meu cliente possui 6 e o resto é preenchido com zero e mais abaixo é pego o NossoNumero com a seguinte linha:
if Length(ACBrBoleto.Cedente.Convenio) = 6 then
NossoNumero := copy(Linha, 44, 10)
else
NossoNumero := copy(Linha, 45, 10);
Mas como ele preenche com os zeros, então o mesmo sempre está vindo 9 caracteres, alterei a seguinte linha, para:
rConvenioCedente:= IntToStr(StrToInt((Copy(ARetorno[0], 33, 9))));
Assim na checagem se o mesmo possui 6 caracteres ele está retornando o NossoNumero correto.. OBS: Isso só ocorre se o Covenio do Cedente for com 6 caracteres.
Isso é um erro ou estou fazendo de forma errada?
Ah também alterei o tamanho da conta para 5, pois ao enviar para o banco no boleto estava preenchendo a conta com zeros a esquerda e eles não validaram dessa forma, eu verifiquei que ele pega através do tamanho da conta que vem padrão 12 fpTamanhoConta := 12; Alterei para: fpTamanhoConta := 5; e no boleto saiu a conta certa sem os zeros a esquerda.
Segue a minha classe alterada em anexo...
ACBrBancoBrasil.pas