A leitura de um arquivo de retorno CNAB 400 do banco 274 MoneyPlus, atualmente está sendo feita pela classe base TACBrBancoClass, onde a agência e conta são extraídos pelas linhas abaixo:
// A leitura deverá ser feita a partir da posição 26 devido ao fato de não existirem agências bancárias com mais de 4 (quatro) algarismos.
rAgencia := trim(Copy(ARetorno[1], 26, ACBrBanco.TamanhoAgencia));
rConta := trim(Copy(ARetorno[1], 30, DefineTamanhoContaRemessa));
Entretanto, no manual do banco (página 11), relativo ao layout da remessa, a composição do campo que identifica a empresa beneficiária, que também se aplica ao campo correspondente no retorno, segue o seguinte formato:
Sendo assim, eu implementei o método LerRetorno400 na classe TACBrBancoBradescoMoneyPlus, copiando o código fonte da classe base e alterando apenas as linhas abaixo, para extrair a agência e a conta corretamente, segundo o layout descrito no manual.
// A leitura deverá ser feita a partir da posição 24 devido ao fato de não existirem agências bancárias com mais de 4 (quatro) algarismos.
rAgencia := trim(Copy(ARetorno[1], 24, ACBrBanco.TamanhoAgencia));
rConta := trim(Copy(ARetorno[1], 28, DefineTamanhoContaRemessa));
Em anexo estão o manual do banco e a unit alterada.
Manual CNAB 400 - Banco 274.pdf
ACBrBancoBradescoMoneyPlus.pas