Jump to content

dev botao

Erro Retorno Hsbc Carteira Cnr


Valdemir Jacon Sanches
Go to solution Solved by Valdemir Jacon Sanches,
  • Este tópico foi criado há 3510 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom Dia!

 

Notei o que pode ser um erro na rotina de retorno do banco HSBC:

 

na linha 583 da unit  "ACBrBancoHSBC.pas" tem um copy para pegar o nosso número:

 

           NossoNumero := Copy(Linha, 63, 16);

 

O problema é que para a carteira "CNR" o tamanho máximo do nosso número é 13, assim quando da o copy passa para o  "SetNossoNumerro" da unit "ACBrBoleto" uma string de tamanho 16, caindo no exception da linha 1043 por ter o tamanho maior que o permitido:

 

         raise Exception.Create( ACBrStr('Tamanho Máximo do Nosso Número é: '+ IntToStr(wTamNossoNumero) ));

 

Para solucionar para o cliente tenho alterado o copy para:

 

         NossoNumero := Copy(Linha, 63, 13);

 

Deem uma olhadinha por favor.

 

Desde já agradeço.

Link to comment
Share on other sites

  • Administradores

Bom dia Valdemir.

 

Por favor anexe aqui o manual fornecido pelo banco.

 

 

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 to comment
Share on other sites

  • Membros Pro

Boa Tarde!

 

Juliana como solicitado segue os layouts de remessa e retorno do banco.

 

Observando os arquivos reparei que:

 

Na remessa o nosso numero e passado com tamanho 13 (posições de 041 a 053  Registro tipo "1" - Detalhe)

 

No retorno o nosso numero vem com tamanho 16 (posições de 063 a 078  Registro tipo "1" - Detalhe), pois retorna também os dígitos verificadores do nosso número.

 

Explicando o Problema:

 

O tamanho máximo do nosso numero no componente é definido como 13(sem os DV).

 

Unit "ACBrBancoHSBC" 

   fpTamanhoMaximoNossoNum := 13;

Quando e feita a leitura do arquivo de retorno, é passado para o "Nosso Número" uma string com tamanho 16 (maior que o tamanho máximo do nosso número), gerando o exception da linha 1038.

 

Unit "ACBrBoleto"

procedure TACBrTitulo.SetNossoNumero ( const AValue: String ) ;
var
   wTamNossoNumero: Integer;
begin
   with ACBrBoleto.Banco do
   begin
      wTamNossoNumero := TamanhoMaximoNossoNum;
      if wTamNossoNumero < 1 then
         wTamNossoNumero:= CalcularTamMaximoNossoNumero(Carteira, AValue);

      if Length(trim(AValue)) > wTamNossoNumero then
         raise Exception.Create( ACBrStr('Tamanho Máximo do Nosso Número é: '+ IntToStr(wTamNossoNumero) ));

      fNossoNumero := padR(trim(AValue),wTamNossoNumero,'0');
   end;
end;

Para funcionar eu venho alterando a Unit "ACBrBancoHSBC" mudando a linha 583:

 

de:      NossoNumero := Copy(Linha, 63, 16);

para:   NossoNumero := Copy(Linha, 63, 13);

 

Apenas alterando essa parte já volta a funcionar a leitura do retorno.

 

Obrigado pela atenção e qualquer dúvida estou a disposição.

Remessa.pdf

Retorno.pdf

Link to comment
Share on other sites

  • 2 weeks later...
  • Administradores

Boa tarde.

 

Alteração disponível no svn.

 

Att.

  • Like 1
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 to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...