Ir para conteúdo
  • Cadastre-se

dev botao

Falha na leitura do motivo "P8", para ocorrências "33" CNAB-400 Bradesco


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

Recommended Posts

Postado

Olá, senhores.

Estou tendo problemas com a leitura de um arquivo de retorno do banco Bradesco, modelo CNAB-400, em resposta a uma alteração de vencimento.

Apenas para contextualização:

  1. Foi emitido um boleto e enviado ao banco Bradesco que confirmou seu registro normalmente, com a motivação "P1" (Registrado com QR CODE PIX)
  2. Dias depois, foi enviado em uma nova remessa, uma solicitação para alteração de vencimento, com a motivação "06" (Alteração de Vencimento)
  3. O retorno do banco trouxe dois registros para o mesmo boleto, sendo uma ocorrência "14" (Vencimento Alterado) e outro registro com ocorrência "33" (Confirmação Pedido Alteração Outros Dados), ambas com a motivação "P8" (Alteração não Permitida - QR CODE Pago ou Cancelado)

Para variar, existe esse retorno do banco que parecem ser dois registros redundantes, mas no que diz respeito à nossa parte técnica, existe uma falha no procedimento ACBrBoleto.LerRetorno400(), especificamente no trecho abaixo:

CodMotivo := IfThen(copy(Linha,MotivoLinha,2) = '  ','00',copy(Linha,MotivoLinha,2));
...
{Somente estas ocorrencias possuem motivos 00}
if(CodOcorrencia in [02, 06, 09, 10, 12 ,13, 14, 15 ,17])then
begin
  MotivoRejeicaoComando.Add(IfThen(copy(Linha,MotivoLinha,2) = '  ','00',copy(Linha,MotivoLinha,2)));
  if VarIsNumeric(CodMotivo) then
    DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,Integer(CodMotivo)))
  else
    DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,VarToStr(CodMotivo)));
end
else
begin
  if(CodMotivo = 0)then
	...
end;

Quando a ocorrência é "33", o algoritmo não atende ao if do conjunto, logo, o else é executado, fazendo com que seja levantada uma exceção, na comparação do valor de CodMotivo, que assume no momento o valor string "P8" com o valor integer "0", levantando uma exceção.

Nessa situação, acredito que será necessário um ajuste nos fontes, simplesmente incluindo a ocorrência "33" na validação do conjunto:

if(CodOcorrencia in [02, 06, 09, 10, 12 ,13, 14, 15, 17, 33])then

Assim o variant receberá sua tratativa e evitaremos o levantamento da exceção.

Obs.: O Manual de Procedimentos Operacionais para Troca de Arquivos (Bradesco) trata dessa informação na Página 46, e foi utilizado a versão mais recente, localizado no próprio svn: ..\tools\Bancos\237-Bradesco\CNAB400_Cobranca_2022_VER003.pdf

  • Curtir 1
Postado

Tive este mesmo problema  e não entendi, por que no manual não tem nada sobre isso !

 

02RETORNO01COBRANCA       00000000000005804791ASSOCIACAO DE REDE PLUS DE BEN237BRADESCO       0107240160000000015                                                                                                                                                                                                                                                                          030724         000001
1020582903200011800000090028600114200                         000000000000091427060000000000000000000000000902010724914270    00000000000009142706020724000000260400023704159  000000000019900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000                          0000000000                                                                  000002
1020582903200011800000090028600114200                         000000000000091427060000000000000000000000000906010724914270    00000000000009142706010724000000260400000103613  000000000000000000000000000000000000000000000000000000000000000000000000000000000000260400000000000000000000000000000   030724             00000000000000                                                                  000003
1020582903200011800000090028600114200                         000000000000090635980000000000000000000000000910010724906359    00000000000009063598300424000000492150023700000  000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000                          1600000000                                                                  000004
1020582903200011800000090028600114200                         000000000000091427060000000000000000000000000914010724914270    00000000000009142706010724000000260400023709999  000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000                          P800000000                                                                  000005
9201237          000000010000000260400000000015          00001000002604000000002604000000010000026040000000100000492150000000000000000000000010000026040000000000000000000000000000000000000                                                                                                                                                                              00000000000000000000000         000006

 

 

 


 

  • Curtir 1
  • Este tópico foi criado há 138 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.