Boa tarde,
Vejo um problema nos arquivos do ACBrBoleto referente ao Banco do Brasil.
No método CalcularTamMaximoNossoNumero, o valor padrão é 10, mas se olhar nos arquivos do cnab240, o valor padrão é 20. E em nenhum dos cáculos costantes no método, o valor é setado para 20.
Isso causa um erro de leitura do arquivo.
function TACBrBancoBrasil.CalcularTamMaximoNossoNumero(
const Carteira: String; const NossoNumero : String = ''; const Convenio: String = ''): Integer;
var
wCarteira : String;
wTamConvenio: Integer;
begin
Result := 20; //estava 10 antes
if (ACBrBanco.ACBrBoleto.Cedente.Convenio = '') then
raise Exception.Create(ACBrStr('Banco do Brasil requer que o Convênio do Cedente '+
'seja informado.'));
if (Carteira = '') then
raise Exception.Create(ACBrStr('Banco do Brasil requer que a carteira seja '+
'informada antes do Nosso Número.'));
wCarteira:= Trim(Carteira);
wTamConvenio:= Length(Trim(ACBrBanco.ACBrBoleto.Cedente.Convenio));
if (Length(trim(NossoNumero)) > 10) and
(((wTamConvenio = 6) and ((wCarteira = '16') or (wCarteira = '18'))) or
((wTamConvenio = 7) and (wCarteira = '18'))) then
Result:= 17
else if (wTamConvenio <= 4) then
Result := 7
else if ((wTamConvenio > 4) and (wTamConvenio < 6)) or
((wTamConvenio = 6) and ((wCarteira = '12') or (wCarteira = '15') or
(wCarteira = '17') or (wCarteira = '18'))) then
Result := 5
else if (wTamConvenio = 6) then
Result := 11
else if (wTamConvenio = 7) then
Result := 10;
end;