Identificamos que a posição de leitura de retorno, CNAB400 do banco do brasil, onde possui código convênio até 6 dígitos (LerRetorno400Pos6),
com relação ao campo NumeroArquivo (Sequencial de Retorno) está errado.
De acordo com o manual do Banco do Brasil deveria ser da posição 101 a 107, e não a posição 41 mais seis caracteres como está atualmente.
Fonte: http://svn.code.sf.net/p/acbr/code/tools/Bancos/BancoBrasil/, opção "CBR643 - 6.pdf"
Arquivo: /Fontes/ACBrBoleto/ACBrBancoBrasil.pas
Procedure: LerRetorno400Pos6(ARetorno: TStringList);
Linha: 1383
Diff:
--- /home/desenvolvimento1/fontes/ACBr/Fontes/ACBrBoleto/ACBrBancoBrasil.pas (revisão 11646)
+++ /home/desenvolvimento1/fontes/ACBr/Fontes/ACBrBoleto/ACBrBancoBrasil.pas (cópia de trabalho)
@@ -1380,7 +1380,7 @@
rConvenioCedente:= Copy(ARetorno[0],41,6);
- ACBrBanco.ACBrBoleto.NumeroArquivo := StrToIntDef(Copy(ARetorno[0],41,6),0);
+ ACBrBanco.ACBrBoleto.NumeroArquivo := StrToIntDef(Copy(ARetorno[0],101,7),0);
ACBrBanco.ACBrBoleto.DataArquivo := StringToDateTimeDef(Copy(ARetorno[0],95,2)+'/'+
Copy(ARetorno[0],97,2)+'/'+
desenvolvimento1@Desenvolvimento1:~/fontes/ACBr$
Detalhe: Podemos também identificar que se repetiu as mesmas posições da leitura de retorno da variável [rConvenioCedente] para o campo [NumeroArquivo], ou seja, "Copy(ARetorno[0],41,6);".
Segue anexos, com o diff e o arquivo ACBRBancoBrasil.pas já com a correção.
ACBrBancoBrasil.pas