Ir para conteúdo
  • Cadastre-se

dev botao

Erro Bradeco - Cnab400 - Conta Inválida


  • Este tópico foi criado há 3407 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia, gostaria de sugerir uma correção no Arquivo ACBrBancoBradesco.pas

 

Na linha 351 é feita a leitura da conta na posição 31 do arquivo retorno, porém o correto é ler a partir da posição 30. Conforme manual do cnab400 do bradesco a conta está entre o registro 30 a 36 (7 posições). Devido a leitura incorreta é provocada uma  Exception na linha 379. 

 

post-6264-0-76522900-1371555983_thumb.pn
 
post-6264-0-52414900-1371555991_thumb.pn
 
post-6264-0-84155900-1371555998_thumb.pn

 

O usuário também chamou a atenção quanto ao "chapéuzinho" da agência.

 

Obrigado

Márcio

post-6264-0-76522900-1371555983_thumb.pn

post-6264-0-52414900-1371555991_thumb.pn

post-6264-0-84155900-1371555998_thumb.pn

Editado por Marcio Rossato
Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

 

Você está com seu svn atualizado? Esta correção foi aplicada a uns dias atrás.

 

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Bom dia, realizei a atualização um pouco antes de abrir este tópico, mas mesmo assim exclui arquivo que eu tinha "alterado" manualmente, baixei a versão do svn, e veio com erro. Acredito que a alteração que você citou tenha tenha provocado o erro no retorno, pois antes funcionava corretamente. Acredito também que o código da agência esteja incorreto, sendo que a posição é 25 e não 26.

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

 

Verifique se você está baixando as atualizações do endereço correto, lembrando que recentemente  houve uma mudança no endereço do svn.

 

Endereço correto https://svn.code.sf.net/p/acbr/code/trunk

 

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • 8 meses depois ...
  • 4 semanas depois ...

Bom dia,

 

A leitura da Agência foi corrigida para a posição 25, mas faltou alterar o tamanho do campo fpTamanhoAgencia para 5 dígitos, de acordo com o trecho do manual citado acima pelo Marcio Rossato:

constructor TACBrBancoBradesco.create(AOwner: TACBrBanco);
begin
   inherited create(AOwner);
   fpDigito := 2;
   fpNome:= 'Bradesco';
   fpNumero := 237;
   fpTamanhoMaximoNossoNum := 11;
   fpTamanhoAgencia := 5;
   fpTamanhoConta   := 7;
   fpTamanhoCarteira:= 2;
end;
Link para o comentário
Compartilhar em outros sites

Juliomar, esta alteração implicou em outro problema.

 

Como foi modificado na revisão 6450 o campo fpTamanhoAgencia := 4; para fpTamanhoAgencia := 5, ao processar retornos com agências com 4 dígitos por exemplo, ocorre a exceção "Agencia\Conta do arquivo inválido" uma vez que no arquivo de retorno a informação vem da seguinte maneira:

 

O comando rAgencia := trim(Copy(ARetorno[1], 25, ACBrBanco.TamanhoAgencia)) pega a conta com 4 dígitos com zeros a esquerda onde (rAgencia <> OnlyNumber(Cedente.Agencia) retorna false pois '09999' é diferente de '9999'.

 

Eu fiz esta modificação temporariamente:

 

rAgencia :=  IntToStr( StrToIntDef(  trim(Copy(ARetorno[1], 25, ACBrBanco.TamanhoAgencia)), 0 ) );

 

Att

3 Virtudes de um líder:
1) Ensinar o que se sabe
2) Praticar o que se ensina
3) Aprender o que se ignora

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Uma pergunta ao dois o correto não seria de ter essa configuração pois pelo que vejo muda conforme a região e após criar o componente informar ela mudando assim o tamanho dos dígitos da agência em run-time?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Outra coisa que notei no código o seguinte:

CodigoBarras := IntToStr( Numero )+'9'+ FatorVencimento +
                      IntToStrZero(Round(ACBrTitulo.ValorDocumento*100),10) +
                      padR(OnlyNumber(Cedente.Agencia),4,'0') +
                      ACBrTitulo.Carteira +
                      ACBrTitulo.NossoNumero +
                      padR(RightStr(Cedente.Conta,7),7,'0') + '0';

linha 107 veja que fixaram o tamanho da agencia para 4 ao invés de pegar da variável informado na criação! entre outros

veja abaixo linha 217:

      aAgencia := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Agencia),0),5);
      aConta   := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Conta),0),7);
      aCarteira:= IntToStrZero(StrToIntDef(trim(Carteira),0), 3);

A menos que eu esteja vendo errado no código seria correto fazer uma revisão na unit !

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Boa tarde prezados.

 

Em hipótese alguma haverá uma agência bancária com mais que 4 (quatro) algarismos sem o dígito verificador.

 

Juliomar, fiz os ajustes necessários para que a geração da remessa, a leitura do retorno, e a emissão dos boletos sejam feitas de forma coerente.

 

Os trechos alterados na unit foram assinalados com "Done".

ACBrBancoBradesco.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

Vi seu código e testei o mesmo vindo a funcionar !

mas mesmo assim peço aos usuários que atualizarem o svn favor conferir e darem um retorno aqui caso achem algo diferente nessa unit do Bradesco!

 

Obrigado pela contribuição já disponível no svn!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois ...

Jacinto o próprio manual do banco CNAB400 informa que a agência pode ter 5 dígitos, 

é sério que você garante que em "hipótese alguma isso vai ocorrer" ???

 

Você pode explicar como chegou a conclusão que você está certo e o manual do banco não?

Editado por Marcio Rossato
Link para o comentário
Compartilhar em outros sites

Jacinto o próprio manual do banco CNAB400 informa que a agência pode ter 5 dígitos, 

é sério que você garante que em "hipótese alguma isso vai ocorrer" ???

 

Você pode explicar como chegou a conclusão que você está certo e o manual do banco não?

Meu caro, é fato que os manuais dos bancos possuem inconsistências. É fato também que não vou me lembrar com precisão onde apurei esta informação, porém você pode certificar-se que não há agências com mais de quatro dígitos através do arquivo que contém a relação de agências e postos bancários disponibilizado de Banco Central do Brasil disponível em: http://www.bcb.gov.br/?RELAGPAB

Link para o comentário
Compartilhar em outros sites

Abri este tópico pois a própria unit estava gerando uma exception.

Sinceramente eu discordo da solução atual pois o Jacinto não apresentou explicação plausível.

Gostaria de colaborar na correção porém eu não envio arquivo remessa utilizando o ACbr e não tenho ambiente de teste no Bradesco para validar o arquivo remessa.

Caso o Bradesco venha ter agências com 5 digitos, (o que pode ser feito sem e nenhum aviso prévio  pois já está previsto nos arquivos CNAB400) esta unit irá apresentar erro. Coloquei uma trava no meu ERP para que o usuário nunca consiga digitar agências com mais de 4 dígitos, sugiro que todos façam o mesmo.

Caso eu venha enviar remessa ao Bradesco pelo AcBR me comprometo a realizar a refatoração.

Vou testar novamente a emissão e a leitura do arquivo retorno pois também não lembro exatamente o que causava o erro, assim que possível informo a situação.

Editado por Marcio Rossato
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3407 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...