Ir para conteúdo
  • Cadastre-se

dev botao

Boletos Hsbc Reprovados


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

Recommended Posts

Bom dia, estou utilizando o componente para gerar boletos, nos bancos brasil, Bradesco e caixa tudo ok, já no banco HSBC foi reprovado dizendo que a linha digitável deve conter o nosso numero do boleto conforme anexo. se alguém já passou por isto agradeceria a ajuda, desde já agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

 

O banco lhe informou o valor correto para a linha digitável?

 

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

Boa tarde, Juliana, vou exemplificar o que acontece: Nosso numero = 23910477-578 logo gera a seguinte linha digitável:

39994.37654 60000.000004 23910.015322 8 55790000097500, segundo consta no manual do HSBC para cobrança tipo CNR as posiçoes de 13 a 20 (inicio do nosso numero) e de 22 a 26 (final do nosso numero sem os digitos verificadores) o que se faz 13 posições do nosso numero note que foi representado somente parte do nosso numero (23910), verificando a unit AcbrbancoHSBC na linha 115 "   fpTamanhoMaximoNossoNum := 16;" está definindo um tamanho máximo de 16 posições creio que já com os digitos verificadores, mas na linha 231 onde se monta o código de barras está setando para 13 " padR(NossoNumero, 13, '0') " já com os digitos verificadores, não conheço a fundo do código, mas resolvi alterar somente a linha 115 definindo para 13 o tamanho máximo, e deu certo conforme exemplo: 39994.37654 60000.002398104777.015324 1 55790000097500, assim o nosso numero foi representado por inteiro na linha digitável, vou enviar para o banco, se estiver correto posto a correção aqui.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Bom dia a todos, verificando as units dos bancos onde se calcula o nosso numero e digito verificador notei que a do HSBS esta pegando o NumeroDocumento na função "CalcularDigitoVerificador"
e nos outros bancos nossoNumero, no entanto os boletos para aprovação que estava enviando para o banco HSBC estavam sendo reprovado dizendo que o calculo do digito(s) verificador estavam incorretos, então mudei para o NossoNumero e calculo passou a ser feito conforme exemplificou o banco, vou enviar novamente para o banco, qualquer coisa posto aqui.
 
Duvida: O correto é conforme está na unit original (NumeroDocumento) ou NossoNumero ?, porque para que o cálculo seja feito corretamente tenho que passar no numeroDocumento o NossoNumero igual, me desculpem se estiver dizendo besteira...
 
segue o trecho do código que alterei:
 
 
function TACBrBancoHSBC.CalcularDigitoVerificador(const ACBrTitulo: TACBrTitulo ): String;
var
  ANumeroDoc, ANumeroBase, ADigito1: AnsiString;
  ADigito2, ADigito: AnsiString;
  Numero, Cedente, Vencimento: Extended;
 
  function CalcularDigito(const ANumero: AnsiString): AnsiString;
  begin
     Modulo.CalculoPadrao;
     Modulo.Documento := AnsiString(ANumero);
     Modulo.Calcular;
 
     Result := AnsiString(IntToStr(Modulo.DigitoFinal));
  end;
 
begin
   Result := '0';
 
   // numero base para o calculo do primeiro e segundo digitos
   // ANumeroDoc := padR(AnsiString(ACBrTitulo.NumeroDocumento),13,'0'); - Original
   ANumeroDoc := padR(AnsiString(ACBrTitulo.NossoNumero),13,'0'); - Alterado
 
   // Calculo do primeiro digito
   ANumeroBase := ANumeroDoc;
   ADigito     := CalcularDigito(ANumeroDoc);
   ADigito1    := ADigito + '4';
 
   // calculo do segundo digito
   Vencimento  := StrToFloat(FormatDateTime('ddmmyy', ACBrTitulo.Vencimento));
   Cedente     := StrToFloat(Self.ACBrBanco.ACBrBoleto.Cedente.CodigoCedente);
   Numero      := StrToFloat(ANumeroBase + ADigito1);
 
   ANumeroBase := FloatToStr(Numero + Cedente+ Vencimento);
   ADigito2    := CalcularDigito(ANumeroBase);
 
   // digito final 3 posicoes = digito 1 + '4' + digito 2
   Result := ADigito1 + ADigito2;
end;
Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa noite.

 

Realmente estava errado o campo utilizado na função CalcularDigitoVerificador, se possível anexe aqui o fonte alterado a pós a validação do 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 para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Administradores
 
Boa tarde.
 
Correção disponível no svn.
 
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

  • 1 ano depois...

Saudações a todos,

 

 

   Estou tendo problema também para homologar boletos HSBC, linha digitável e código de barra estão incorretos o segundo bloco foi reprovado pela homologação HSBC, conta corrente incorreta

Editado por Programador
Link para o comentário
Compartilhar em outros sites

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