Boa noite pessoal, tudo bem?
Recentemente atualizei todo o ACBr por conta da Nfe 3.0, depois dessa atualização é gerada uma exception na hora de visualizar o boleto do Banco Banestes,
o problema está na function TACBrBanestes.CalcularCampoASBACE ...
Antes era:
{ Banestes não usa digitos verificadores para agência e conta }
cLivreAsbace := copy(ACBrTitulo.NossoNumero,2,8)+
padR(trim(ACBrTitulo.ACBrBoleto.Cedente.Conta)+
trim(ACBrTitulo.ACBrBoleto.Cedente.ContaDigito),11,'0')+
'4'+
IntToStrZero(fpNumero,3);
cIndice := '21212121212121212121212';
nResult := 0;
Na versão nova ficou:
{ Banestes não usa digitos verificadores para agência e conta }
cLivreAsbace := copy(ACBrTitulo.NossoNumero,2,8)+
copy(trim(ACBrTitulo.ACBrBoleto.Cedente.Conta), 2, 10)+
ACBrtitulo.ACBrBoleto.Cedente.ContaDigito+
'4'+
IntToStrZero(fpNumero,3);
cIndice := '21212121212121212121212';
nResult := 0;
O problema é que na versão nova, cLivreAsbace recebe uma string com 22 caracteres, e logo em seguida tem um for que começa da posição 23.
A remoção do padR gerou o problema.
Uma dúvida, no comentário diz que banestes não usa o dígito verificador, entretanto no código tem o dígito concatenado com a conta.