Ir para conteúdo
  • Cadastre-se

dev botao

Modificação Na Leitura Do Retorno Cnab400 - Banco Do Brasil.


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

Recommended Posts

Bom dia,

Efetuei algumas modificações na leitura do CNAB400 do Banco do Brasil.

-Correção da busca do número da conta (estava pegando da 2ª linha. o dado está na primeira)

-Melhoria na validação de agencia e conta do arquivo com os dados de emissão.

-Correção da coluna da DataOcorrencia, conforme manual http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc2628CBR643Pos7.pdf

-Remoção da Verificação do conteúdo da coluna 296 antes de obter a DataCredito. (conforme o manual, não havia lógica na verificação)

Segue em anexo o diff das modificações efetuadas.

 

 

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

 

Para que possamos analisar anexe aqui a unit alterada.

 

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

Não foi permitido anexar o patch, então está aqui:

Index: ACBrBancoBrasil.pas
===================================================================
--- ACBrBancoBrasil.pas (revision 5882)
+++ ACBrBancoBrasil.pas (working copy)
@@ -1428,14 +1428,11 @@
    rCedente      := trim(Copy(ARetorno[0],47,30));
    rAgencia      := trim(Copy(ARetorno[0],27,4));
    rDigitoAgencia:= Copy(ARetorno[0],31,1);
-   rConta        := trim(Copy(ARetorno[1],32,8));
+   rConta        := trim(Copy(ARetorno[0],32,8));
    rDigitoConta  := Copy(ARetorno[0],40,1);
-   
    rCodigoCedente:= Copy(ARetorno[0],150,7);
 
-
    ACBrBanco.ACBrBoleto.NumeroArquivo := StrToIntDef(Copy(ARetorno[0],101,7),0);
-
    ACBrBanco.ACBrBoleto.DataArquivo   := StringToDateTimeDef(Copy(ARetorno[0],95,2)+'/'+
                                                              Copy(ARetorno[0],97,2)+'/'+
                                                              Copy(ARetorno[0],99,2),0, 'DD/MM/YY' );
@@ -1447,12 +1444,13 @@
      rCNPJCPF := Copy(ARetorno[1],4,14);
    end;
 
-
    with ACBrBanco.ACBrBoleto do
    begin
       if (not LeCedenteRetorno) and
-         ((rAgencia <> OnlyNumber(Cedente.Agencia)) or
-          (rConta <> OnlyNumber(Cedente.Conta))) then
+         (
+          (StrToIntDef(OnlyNumber(rAgencia),-1) <> StrToIntDef(OnlyNumber(Cedente.Agencia),-2) ) or
+          (StrToIntDef(OnlyNumber(rConta),-1)   <> StrToIntDef(OnlyNumber(Cedente.Conta),-2)   )
+         ) then
          raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));
 
       Cedente.Nome         := rCedente;
@@ -1501,10 +1499,11 @@
            DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,CodMotivo));
          end;
 
-         DataOcorrencia := StringToDateTimeDef( Copy(Linha,111,2)+'/'+
-                                                Copy(Linha,113,2)+'/'+
-                                                Copy(Linha,115,2),0, 'DD/MM/YY' );
 
+         DataOcorrencia := StringToDateTimeDef( Copy(Linha,107,2)+'/'+
+                                                Copy(Linha,109,2)+'/'+
+                                                Copy(Linha,111,2),0, 'DD/MM/YY' );
+
          Vencimento := StringToDateTimeDef( Copy(Linha,147,2)+'/'+
                                             Copy(Linha,149,2)+'/'+
                                             Copy(Linha,151,2),0, 'DD/MM/YY' );
@@ -1521,10 +1520,9 @@
          ValorDespesaCobranca := StrToFloatDef(Copy(Linha,182,07),0)/100; //--Anderson: Valor tarifa
          ValorOutrasDespesas  := StrToFloatDef(Copy(Linha,189,13),0)/100;
 
-         if StrToIntDef(Copy(Linha,296,6),0) <> 0 then
-            DataCredito:= StringToDateTimeDef( Copy(Linha,176,2)+'/'+
-                                               Copy(Linha,178,2)+'/'+
-                                               Copy(Linha,180,2),0, 'DD/MM/YY' );
+         DataCredito:= StringToDateTimeDef( Copy(Linha,176,2)+'/'+
+                                            Copy(Linha,178,2)+'/'+
+                                            Copy(Linha,180,2),0, 'DD/MM/YY' );
       end;
    end;
 
 
Link para o comentário
Compartilhar em outros sites

Ola Mufalo e Juliana Tamizou quando disponível estas correções favor me avisar, estou passando por um mesmo problema consegui emitir o boleto para o Unicred usando o Banco do Brasil que é o banco padrão desta cooperativa, os boletos foram aprovados, agora no arquivo de retorno estou tendo varios erros inclusive os citados acima, estarei atualizando os componentes estarei efetuando novos testes e informo.

Atenciosamente

Wanderson

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

 

Ainda não foi possível, mas acredito que nesta semana será.

 

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

  • 4 semanas depois ...
  • Este tópico foi criado há 3844 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...