Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá,

Ao importar um arquivo de retorno  CNAB 400 do banco Sicredi ocorreram dois erros em arquivos diferentes

O primeiro erro foi  " '  ' is not a valid integer value":
nossa analise sobre o que esta no txt:

para alguns arquivos de retorno do banco,  o sistema não esta gera os campos da posição 319 com os zeros preenchidos

Exemplo

quando o código do retorno foi "H5        " ao invés de "H500000000", então fiz a seguinte alteração em LerRetorno400

de:

if CodMotivo <> '00' then     //Após o 1º motivo os 00 significam que não existe mais motivo
            begin
              MotivoRejeicaoComando.Add(IfThen(Copy(Linha,MotivoLinha,2) = '00',
                                               '00',
                                               Copy(Linha,MotivoLinha,2)));
              DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,CodMotivo));
            end;

para:

if (CodMotivo <> '00') And (Trim(CodMotivo) <> '') then     //Após o 1º motivo os 00 significam que não existe mais motivo
            begin
              MotivoRejeicaoComando.Add(IfThen(Copy(Linha,MotivoLinha,2) = '00',
                                               '00',
                                               Copy(Linha,MotivoLinha,2)));
              DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,CodMotivo));
            end;

O segundo erro foi  " 'C6' is not a valid integer value" quando o código do retorno foi "H5000000C6", verifiquei que faltou tratar o Código de motivo 'C6'.

de:

toRetornoLiquidadoAposBaixaouNaoRegistro: //17
          case AnsiIndexStr(CodMotivo,['A8', 'H5', 'H6', 'H8']) of
            0: Result:= 'A8-Recebimento da liquidação fora da rede Sicredi - via compensação eletrônica';
            1: Result:= 'H5-Recebimento de liquidação fora da rede Sicredi - VLB Inferior - via compensação';
            2: Result:= 'H6-Recebimento de liquidação fora da rede Sicredi - VLB Superior - via compensação';
            3: Result:= 'H8-Recebimento de liquidação fora da rede Sicredi - Contingência via compe';
          else
            case StrToInt(CodMotivo) of
              00: Result:= '00-Ocorrência aceita, liquidação após baixa';
            else
               Result:= PadLeft(CodMotivo,2,'0') +' - Outros Motivos';
            end;
          end;

para:

toRetornoLiquidadoAposBaixaouNaoRegistro: //17
          case AnsiIndexStr(CodMotivo,['A8', 'C6', 'H5', 'H6', 'H8']) of
            0: Result:= 'A8-Recebimento da liquidação fora da rede Sicredi - via compensação eletrônica';
            1: Result:= 'C6-Título já liquidado';
            2: Result:= 'H5-Recebimento de liquidação fora da rede Sicredi - VLB Inferior - via compensação';
            3: Result:= 'H6-Recebimento de liquidação fora da rede Sicredi - VLB Superior - via compensação';
            4: Result:= 'H8-Recebimento de liquidação fora da rede Sicredi - Contingência via compe';
          else
            case StrToInt(CodMotivo) of
              00: Result:= '00-Ocorrência aceita, liquidação após baixa';
            else
               Result:= PadLeft(CodMotivo,2,'0') +' - Outros Motivos';
            end;
          end;

 

Segue em anexo os arquivos de retorno com erro e o ACBRBancoSicredi.

Obrigada.

ACBrBancoSicredi.pas

retorno_erro_C6.CRT

retorno_erro_cod_vazio.CRT

Postado

Boa tarde,

Precisei adicionar mais um código de ocorrência, dessa vez foi o C7 no "toRetornoLiquidade", ocorria o mesmo erro do C6 acima, ficou assim:

        toRetornoLiquidado:   //06
          case AnsiIndexStr(CodMotivo, ['A8', 'C7', 'H5', 'H6', 'H8', 'X1', 'X2', 'X3', 'X4', 'X5',
                                        'X0', 'X6', 'X7', 'X8', 'X9', 'XA', 'XB']) of
            0: Result:= 'A8-Recebimento da liquidação fora da rede Sicredi - via compensação eletrônica';
            1: Result:= 'C7-Título já baixado';
            2: Result:= 'H5-Recebimento de liquidação fora da rede Sicredi - VLB Inferior - Via compensação';
            3: Result:= 'H6-Recebimento de liquidação fora da rede Sicredi - VLB Superior - Via compensação';
            4: Result:= 'H8-Recebimento de liquidação fora da rede Sicredi - Contingência Via Compe';
            5: Result:= 'X1-Regularização centralizadora - Rede Sicredi';
            6: Result:= 'X2-Regularização centralizadora - Compensação';
            7: Result:= 'X3-Regularização centralizadora - Banco correspondente';
            8: Result:= 'X4-Regularização centralizadora - VLB Inferior - via Compensação';
            9: Result:= 'X5-Regularização centralizadora - VLB Superior - via Compensação';
            10: Result:= 'X0-Pago com cheque';
            11: Result:= 'X6-Pago com cheque - bloqueado 24 horas';
            12: Result:= 'X7-Pago com cheque - bloqueado 48 horas';
            13: Result:= 'X8-Pago com cheque - bloqueado 72 horas';
            14: Result:= 'X9-Pago com cheque - bloqueado 96 horas';
            15: Result:= 'XA-Pago com cheque - bloqueado 120 horas';
            16: Result:= 'XB-Pago com cheque - bloqueado 144 horas';
          else
            case StrToInt(CodMotivo) of
               00: Result:= '00-Ocorrência aceita, liquidação normal';
            else
               Result:= PadLeft(CodMotivo,2,'0') +' - Outros Motivos';
            end;
          end;

  • 1 mês depois ...
  • 2 semanas depois ...
  • 3 semanas depois ...
  • 8 meses depois ...
Postado (editado)

Acabei de atualizar, reinstalar e recebo mensagem de erro C6 is not a valid integer,

O Retorno é: toRetornoLiquidado

e o retorno do Código de motivo é C6 - Título já liquidado.

Ocasionando o erro. De acordo com o manual todos os códigos C6 estão ligados a alguma rejeição, mas nesse arquivo o retorno é liquidado. 

Quais passos sigo, reclamo ao banco, ou mudo no fonte?

Agradeço!

C6.png

Editado por guilhermekm
  • Este tópico foi criado há 2626 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.