Ir para conteúdo
  • Cadastre-se

dev botao

Ajuste Cobrança HSBC - Homologação


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

Recommended Posts

Prezados,

Estou homologando a cobrança bancária do banco HSBC, porém, foi rejeitado tanto o boleto quanto o arquivo remessa CNAB 400.

Resposta do Banco sobre o arquivo remessa:

Citar

Segue pontos a serem alterados no arquivo remessa:

HEADER

. Nº da Linha: 0001               Tamanho do registro igual a 396 bytes
. Nº da Linha: 0001               Colunas: 034 a 044               Contrato COB inválido
. Nº da Linha: 0001               Colunas: 077 a 079               Código do banco inválido
. Nº da Linha: 0001               Colunas: 080 a 094               Nome do banco inválido
. Nº da Linha: 0001               Colunas: 095 a 100               Data da gravação do arquivo inválida
. Nº da Linha: 0001               Colunas: 395 a 400               Número sequencial de registro inválido

 

Segue algumas considerações sobre como resolver alguns dos problemas que observei.

Pelo visto essa informação deveria constar tanto a agencia quanto a conta para que dê os 11 dígitos conforme diz o manual. No meu caso a agencia sendo 1256 e a conta 00775-17, deveria constar 12560077517.

Liguei para o suporte do HSBC no telefone 31-3503-5342 e falei com Sr. Rodrigo G. Rodrigues o qual está acompanhando o processo de homologação e esclareci com ele o seguinte:

A conta do HSBC é de 7 números, porém, será sempre 5 + 2, sendo os 5 primeiros da conta e 2 do dígito. Isso é padrão do HSBC no mundo todo.

Assim sendo, observei que alguns pontos da unit “ACBrBancoHSBC” não estão trazendo os dados da conta corretos, pois como ele atribui 7 para conta, o numero da conta sem o digito que é 00775, e a conta fica 0000775. Dessa maneira, nos locais que ele junta conta + digito para resultar em 7, ele não faz pois a conta já está com 7 digitos.

Exemplo:

wConta   := PadLeft( OnlyNumber(Conta) + ContaDigito, 7, '0');

Neste caso a conta já está com 7 digitos e não acrescenta o digito da conta, fazendo com que fique errado o valor final da variável. Fica com valor 0000775 sendo que o correto seria 00775 para que ao somar com o digito fique 0077517.

Vamos as modificações:

No “create” do “ACBrBancoHSBC”, na linha 119, a conta está sendo fixada com tamanho de 7.

   fpTamanhoConta          := 7;

Sugiro que seja alterado para:

   fpTamanhoConta          := 5;

Na procedure “GerarRegistroHeader400” na linha 265 consta o seguinte:

               wConta                        + // Conta Corrente //Removi agencia repetido //ALFEU MOTA //

Sugiro a alteração para:

               wAgencia + wConta             + // Conta Corrente (Agência + Conta Corrente)

Visto que no manual é tratado agencia e conta junto totalizando 11 digitos.

Também na linha 356 onde consta

                  PadLeft(OnlyNumber(Cedente.Agencia) +

                  OnlyNumber(Cedente.Conta)+Cedente.ContaDigito, 11, '0') +

Deverá ser alterado para:

                  PadLeft(OnlyNumber(Cedente.Agencia) +

                  OnlyNumber(Cedente.Conta)+Cedente.ContaDigito, 11, '0') +         //Conta Corrente (Agência + Conta Corrente)

Visto que no manual é tratado agencia e conta junto totalizando 11 digitos.

Obs: Lembrando que para as variáveis ficarem corretas, o tamanho da conta tem que ficar 5.

Resposta do Banco sobre o boleto:

Citar

 

BOLETOS REPROVADOS

AJUSTES NA LINHA DIGITÁVEL - (47 Posições)

  • A empresa deverá rever a criação da linha digitável. Favor verificar o manual técnico do código de barras para montagem correta dos dados, pois no terceiro bloco, o campo da conta da empresa está incorreto.

Manual na página 19:     

AJUSTES NO CÓDIGO DE BARRAS - (44 posições)

  • A empresa deverá rever a montagem dos dados seguindo o manual técnico do código de barras, pois é necessário corrigir os dados da Linha Digitável para o Código de Barras.

 

 

 

Minhas Considerações:

Observei no fonte “ACBrBancoHSBC.pas” na function “MontarCodigoBarras” na linha 224 consta o seguinte:

                   PadLeft(IfThen(ACBrBoleto.Cedente.Conta[1] = '0', RightStr(OnlyNumber(ACBrBoleto.Cedente.Conta),6) +

Observem que a conta está ficando com 6 digitos, sendo que o correto seria 7. Como iremos setar a conta para 5 digitos, o copy deverá ser de 5 para que ao somar com o digito resulte em 7.

Sugiro a alteração para:

                   PadLeft(IfThen(ACBrBoleto.Cedente.Conta[1] = '0', RightStr(OnlyNumber(ACBrBoleto.Cedente.Conta),5) +

Fiz essa alterações no componente e enviei para o banco para novos testes.

Obs.: Embora o desenvolvimento do arquivo retorno irei fazer após a homologação da cobrança, resolvi fazer uma conferencia entre o código fonte e o manual, onde observei alguns pontos a ajustar, sendo eles.

Na procedure "LerRetorno400" é atribuído os seguintes valores para as variáveis:

  rCodigoCedente := Copy(ARetorno[0], 109, 10);

  rConta         := trim(Copy(ARetorno[0], 38, 6));
  rDigitoConta   := Copy(ARetorno[0], 44, 1);


No manual na página 16, observei que na posição 109 com tamanho de 11 contém a seguinte informação "Uso do Banco", então embora não tenha um arquivo retorno, o copy está errado.

Ajustei para o seguinte:

  rCodigoCedente := Copy(ARetorno[0], 109, 11);

  rConta         := trim(Copy(ARetorno[0], 38, 5));
  rDigitoConta   := Copy(ARetorno[0], 43, 2);

 

 

Segue manual e unit alterada para disponibilizar.

Grato.

 

cob400_jan.pdf

Codigo Barras COB.pdf

ACBrBancoHSBC.pas

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Boa tarde a todos,

Espero que as minhas alterações sejam disponibilizadas no SVN, pois recebi o seguinte e-mail do banco:

Hoje pela manhã (sex 20/11/2015 10:09):

Citar

Dener, bom dia!

Os boletos foram aprovados ok?
Só fica faltando para lhe responder o arquivo remessa. Logo que tiver o retorno lhe informo

Abraços

Rodrigo G RODRIGUES
Especialista Vendas I | HSBC Bank Brasil S.A.
Payments Cash Management Sales - Empresas MG
Rua Paraíba, 550 - 16º Andar - Funcionários - Belo Horizonte/MG - CEP 30.130-140

 

Agora a tarde (sex 20/11/2015 12:40):

Citar

Dener,

complementando a informação, arquivo remessa também aprovado ok?

Abraços

Rodrigo G RODRIGUES
Especialista Vendas I | HSBC Bank Brasil S.A.
Payments Cash Management Sales - Empresas MG
Rua Paraíba, 550 - 16º Andar - Funcionários - Belo Horizonte/MG - CEP 30.130-140

Sendo assim, a cobrança foi homologada pelo banco. Sendo necessário os ajustes proposto no post.

Estou no aguardo.

Obrigado.

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

  • Administradores
5 horas atrás, denerbuzato disse:

Bom dia Juliana,

Poderia por favor disponibilizar as alterações no svn?

Obrigado.

Boa tarde.

Suas alterações estão na fila para serem analisadas, peço que aguarde.

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,

 

 

Gostaria de sugerir uma alteração nesse arquivo,  conforme abaixo, O Range passado pelo banco é 10 números conforme : NN inicial  25872000006   NN final  25872999992.

 

Gostaria de perguntar para denerbuzato, os boletos no campo  AGÊNCIA/CÓDIGO BENEFICIÁRIO, precisou fazer alguma alteração?, uso o fastreport e ta indo o agencia/código do cendete, o banco exige agencia/conta

   if (trim(Carteira) = 'CSB') or (trim(Carteira) = '1') then
   begin
    Result := 10;  era 5
    fpTamanhoMaximoNossoNum := 10; era 5
   end;
 

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

Boa tarde Carlos,

Não foi preciso alterar nada. Para o código do cedente, estou passando para o componente o numero da conta com digito.

ACBrBoleto1.Cedente.CodigoCedente :=  Conta + DigConta

Também estou setando o tamanho do nosso numero para 5

ACBrBoleto1.Banco.TamanhoMaximoNossoNum := 5;

Tenho uma rotina para configuração do componente onde passo o código do banco para a rotina. Conforme o banco selecionado, passo os valores para o componente de acordo com o banco, conforme a necessidade.

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde Carlos.

Favor indicar qual alteração foi feita.

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 mês depois ...

Prezados,

Atualizei o componente hoje pela manhã (revisão 10752) e percebi que a unit “ACBrBancoHSBC.pas” foi atualizada.

Como a unit do repositório está mais atual, por exemplo, foi implementado o retorno 240, ele simplesmente subscreveu meu arquivo que estava funcionando em alguns cliente, visto que já homologuei e postei aqui neste post os ajustes que foram necessários para ficar em conformidade com o manual.

Segue então as modificações que foram necessárias fazer nesta unit atualizada.

No Create

   fpTamanhoConta          := 7;

Alerar para

   fpTamanhoConta          := 5;

Obs.: Conforme já citado no inicio do post, foi necessário fazer essa alteração, pois ocorre problema com a conta e digito.

Citar

Pelo visto essa informação deveria constar tanto a agencia quanto a conta para que dê os 11 dígitos conforme diz o manual. No meu caso a agencia sendo 1256 e a conta 00775-17, deveria constar 12560077517.

Liguei para o suporte do HSBC no telefone 31-3503-5342 e falei com Sr. Rodrigo G. Rodrigues o qual está acompanhando o processo de homologação e esclareci com ele o seguinte:

A conta do HSBC é de 7 números, porém, será sempre 5 + 2, sendo os 5 primeiros da conta e 2 do dígito. Isso é padrão do HSBC no mundo todo.

Assim sendo, observei que alguns pontos da unit “ACBrBancoHSBC” não estão trazendo os dados da conta corretos, pois como ele atribui 7 para conta, o numero da conta sem o digito que é 00775, e a conta fica 0000775. Dessa maneira, nos locais que ele junta conta + digito para resultar em 7, ele não faz pois a conta já está com 7 digitos.

 

Arquivo remessa antes da modificação, ou seja, após a atualização do componente.

remessa_errada.JPG.30498f8df9f6444f80078

Observem que a conta ficou sem o dígito.

Arquivo remessa depois dos ajustes proposto.

remessa_certa.JPG.4981bec9f1e5b78f2a5fbf

Observem que a conta está correta com os dois dígitos.

Outra modificação necessária foi na function “MontarCodigoBarras”

RightStr(OnlyNumber(ACBrBoleto.Cedente.Conta),6)

Alterar para

RightStr(OnlyNumber(ACBrBoleto.Cedente.Conta),5)

No retorno tive que fazer os mesmos ajustes já citados:

Citar

 

Na procedure "LerRetorno400" é atribuído os seguintes valores para as variáveis:

  rCodigoCedente := Copy(ARetorno[0], 109, 10);

  rConta         := trim(Copy(ARetorno[0], 38, 6));
  rDigitoConta   := Copy(ARetorno[0], 44, 1);


No manual na página 16, observei que na posição 109 com tamanho de 11 contém a seguinte informação "Uso do Banco", então embora não tenha um arquivo retorno, o copy está errado.

Ajustei para o seguinte:

  rCodigoCedente := Copy(ARetorno[0], 109, 11);

  rConta         := trim(Copy(ARetorno[0], 38, 5));
  rDigitoConta   := Copy(ARetorno[0], 43, 2);

 

Obs.: As posições copiadas da conta e dígito da conta estão erradas. Sendo a conta com 5 dígitos, logo o copy deverá ser de 5. Sendo o dígito da conta com 2 dígitos, logo o copy deverá ser de 2.

Caso tenham alguma dúvida, favor consultar o manual já anexado neste post.

Segue unit alterada caso queiram subir para svn.

Grato.

 

ACBrBancoHSBC.pas

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Administradores

Bom dia.

Em 15/01/2016 at 16:44, rrommullo disse:

Boa tarde Senhores !

Alguma posição referente a alteração proposta no ano passado ?

Observe que a alteração foi postada no dia 30/12, ou seja, este "ano passado"  é praticamente este ano. Em todo caso as alterações estão na fila para serem analisadas.

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

  • Administradores

Boa noite.

Alteração no svn.

Att.

  • Curtir 2
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 ...

Nao, e que eu não vou poder atualizar agora, então estou tentando recolocar as posições no ACBrBancoHSBC. No site do HSBC esta tudo desatualizado e pelo fone eles são(Losango) estúpidos, perdi a paciência.

 

Tem como me passar somente esse modulo para que eu possa comparar as alterações.  

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

As atualizações são feitas somente no trunk2. recomendo que utilize a mesma para manter seus fontes atualizados, e se não puder, baixe o mesmo em outra pasta para sincronizar com seus fontes manualmente.

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

20 minutos atrás, Celio Souza disse:

rCodigoCedente := Copy(ARetorno[0], 109, 11);

entao essa é minha duvida. Como devo proceder ?

Bom dia,

No HSBC o código do cedente é a conta do cliente (Conta+DigitoConta), esse pedaço do código deve ser por motivo de muitas das rotinas terem sidas copias e ajustadas para cada banco e esse código ficou sobrando, pois essa variavel " rCodigoCedente " só é usada para comparar se o cedente é válido "LeCedenteRetorno" assim como já é feito com a agencia e conta logo abaixo no mesmo bloco do código.

Ccomo ele está lendo " ARetorno[0] " significa que está lendo o arquivo header. No arquivo header nesta posição vem brancos.

O que você precisa? Talvez falando a informação que precisa poderemos de dizer onde busca-la.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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