Ir para conteúdo
  • Cadastre-se

dev botao

Correção do Retorno do BB CNAB 240


Ver Solução Respondido por José M. S. Junior,
  • Este tópico foi criado há 1548 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa tarde.

O retorno do Banco do Brasil CNAB240 não estava setando corretamente o tamanho do nosso número de retorno, pois o número do convênio que na remessa era 17, no retorno estava com apenas 07 (posição 58/1).

Corrigi esse trecho incluindo a carteira 07 no IF para que o fosse selecionado para tamanho 5.

 

Capturar.PNG

ACBrBancoBrasil.pas

  • Administradores
Postado

Boa tarde.

Obrigada pelo interesse em colaborar.

Esta alteração afeta também a remessa, por favor anexe o manual que indica que esta alteração é necessária.

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 !!

  • Membros Pro
Postado

Ola.

O que retorna no arquivo não é o '17', mas sim, o wTipoCarteira setado na remessa, que no caso é o '7'.

A função alterada serve para remessa e retorno, mas como no retorno não voltará a carteira 17 (ele lê a posição 58 do CNAB240), a função CalcularTamMaximoNossoNumero quando da remessa Resulta em 5 e quando retorno, não entrará nesse IF, retornando sempre 11.

 

image.thumb.png.4ada1f5ba19390ccd8dfcf518d7bdd59.png

  • Administradores
Postado

Bom dia.

Obrigada novamente, mas no manual temos essa mesma explicação? Nosso questionamento é para que possamos analisar com base nele e desta forma evitar situações onde podem afetar outras carteiras.

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 !!

  • Membros Pro
Postado

Bom dia.

Não há no manual isso, entendo que o convênio lá no banco determina a carteira como 17.

Nesse trecho da imagem acima, vimos que no arquivo de remessa não vai o número da carteira, mas sim o tipo de carteira, nesse caso '7'.

A função CalcularTamMaximoNossoNumero  faz a análise do tamanho pela variavel "carteira", que na remessa está como '17'.

No retorno, na função LerRetorno240, (imagem em anexo) linha 1253, a variável Carteira recebe apenas um caractere, que é justamente o '7', enviado na remessa como sendo o tipo de cobrança.      "Carteira := copy(Linha, 58, 1);"

Então, ao passar novamente na função CalcularTamMaximoNossoNumero no retorno, a variável Carteira possui o código '7', portanto, resultará na entrada no outro IF.

Estou anexando também um arquivo de retorno nessa situação.

 

image.thumb.png.d4a84c57f4c6cae5f047f37061f3ca22.png

IEDCBR42611504202012727.ret

  • Administradores
Postado

Bom dia.

Obrigada pelas informações, faremos a análise com calma e retornaremos no tópico.

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 !!

  • Administradores
Postado

Boa tarde.

Você chegou a testar com sucesso essa alteração? Note que na leitura do retorno CNAB240 o método chamado é o NossoNumeroSemFormatacaoLerRetorno()..

De qualquer forma essa função precisa ser ajustada para tratar corretamente os retornos quando CNAB400 e CNAB240.

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 !!

  • Administradores
Postado

Realmente, está fazendo uso da função ao setar o nosso número, mas precisaremos rever com cuidado, pois como citei, notei que precisa ser ajustado para checar corretamente cada um dos CNABs.

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 !!

  • 2 semanas depois ...
  • Moderadores
Postado

Boa tarde, se possível anexe o manual que a sua agencia está utilizando para que possamos analisar melhor. Pois na verdade o campo que setá sendo preenchido no retorno não se trata da Carteira e sim o Tipo de Cobrança.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Membros Pro
Postado

Boa tarde José.

Acho que já corrigiram o componente, pois a procedure TACBrBancoBrasil.LerRetorno240, agora monta a leitura do nosso número com outra função, a NossoNumeroSemFormatacaoLerRetorno.

         if copy(Linha, 14, 1) = 'T' then
          begin
            SeuNumero := copy(Linha, 106, 25);
            NumeroDocumento := copy(Linha, 59, 15);
            Carteira := copy(Linha, 58, 1);

            TempData := copy(Linha, 74, 2) + '/'+copy(Linha, 76, 2)+'/'+copy(Linha, 78, 4);
            if TempData<>'00/00/0000' then
              Vencimento := StringToDateTimeDef(TempData, 0, 'DDMMYY');

            ValorDocumento := StrToFloatDef(copy(Linha, 82, 15), 0) / 100;

            NossoNumero := NossoNumeroSemFormatacaoLerRetorno(ACBrBoleto.Cedente.Convenio, Carteira, Linha);

            ValorDespesaCobranca := StrToFloatDef(copy(Linha, 199, 15), 0) / 100;

            OcorrenciaOriginal.Tipo := CodOcorrenciaToTipo(StrToIntDef(copy(Linha, 16, 2), 0));

            IdxMotivo := 214;

            while (IdxMotivo < 223) do
            begin
               if (trim(Copy(Linha, IdxMotivo, 2)) <> '') then
               begin
                  MotivoRejeicaoComando.Add(Copy(Linha, IdxMotivo, 2));
                  DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo, StrToIntDef(Copy(Linha, IdxMotivo, 2), 0)));
               end;
               Inc(IdxMotivo, 2);
            end;

          end

 

 

  • 1 mês depois ...
Postado

 

Vou aproveitar o post do colega para reportar que no mesmo arquivo e modelo não está capturando o código do motivo da ocorrência ao ler pelo retorno CNAB240

C - Códigos de liquidação / baixa de '01' a '15' associados aos códigos de movimento '06', '09' e '17' (Descrição C044)

ver mensagem retorno do banco em anexo. 

banco.thumb.png.77de14d574c7c912c16046458b636575.png

fonte: https://cmsportal.febraban.org.br/Arquivos/documentos/PDF/Layout%20padrao%20CNAB240%20%20V%2010%2006%20-%2016_03_20.pdf. página 156

imagem do arquivo retorno

arquivo.thumb.png.059c83732520824c93d75d12ccc3500c.png

 

Modificação realizada

mod.thumb.png.6c4dee4bc1315f9c91c395daed2e858e.png

 

 

ACBrBancoBrasil.pas

Andeson de Jesus

Nyno.net

  • 2 meses depois ...
  • Moderadores
  • Solution
Postado
Em 30/06/2020 at 15:44, ajmsistemas disse:

Vou aproveitar o post do colega para reportar que no mesmo arquivo e modelo não está capturando o código do motivo da ocorrência ao ler pelo retorno CNAB240

Atualizado no SVN. Obrigado!

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Este tópico foi criado há 1548 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.