Ir para conteúdo
  • Cadastre-se

dev botao

HSBC - Cedente do arquivo inválido


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

Recommended Posts

Bom dia!

Estou no processo de homologação da carteira Com Registro do HSBC em um cliente, e encontrei um problema ao ler o arquivo de retorno no padrão CNAB400.

A mensagem original era "Cedente do arquivo inválido. Informado = '11251477284' Esperado = '' ".
Trecho do código da leitura do cedente:
rCodigoCedente := Copy(ARetorno[0], 109, 11);
Mas, no manual do banco da cobrança registrada, este campo é reservado ao banco.

Fiz uma alteração no código, de acordo com o manual do site do banco, prevendo ainda o caso da carteira sem registro:
  if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA' Then
    rCodigoCedente := Copy(ARetorno[0], 34, 11)        
  else
    rCodigoCedente := Copy(ARetorno[0], 109, 11);


Além disso, precisei alterar o código onde os campos são comparados, pois era realizada uma conversão de string para inteiro estourando o valor máximo permitido para este tipo de dado:

DE:
     if not(LeCedenteRetorno) and
       (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then
        raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 +
                                       'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 +
                                       'Esperado = '+ rCodigoCedente));
PARA:
     if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA CNR' Then
       if not(LeCedenteRetorno) and
         (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then
          raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 +
                                         'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 +
                                         'Esperado = '+ rCodigoCedente))
     else
       if not(LeCedenteRetorno) and
         (rCodigoCedente <> OnlyNumber(Cedente.CodigoCedente)) then
          raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 +
                                         'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 +
                                         'Esperado = '+ rCodigoCedente));



Em anexo a unit alterada para análise e aprovação.
Abaixo o link com o manual do banco.

https://www.hsbc.com.br/1/PA_esf-ca-app-content/content/hbbr-pws-gip16/portugues/business/comum/pdf/cob400_jan.pdf 


Obrigada!

ACBrBancoHSBC.pas

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Ainda não foi analisado.

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

  • 3 meses depois ...

Boa tarde @SaraHidalgo,

Seria mais interessante identificar o tipo de remessa por meio de alguma informação constante no arquivo ao invés da posição da string "COBRANCA", não existe um campo com esta informação no retorno?

Att.

Consultor SAC ACBr Graziele Rocha Serafim
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

Link para o comentário
Compartilhar em outros sites

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