Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Olá a todos.
Para a cobrança não registrada (CNR) do banco HSBC, está havendo um pequeno problema quanto à posição do campo Nosso Número dentro da linha digitável.
Onde segundo o modelo da ficha de cobrança o Nosso Número deveria estar entre as posições (13-20) e (22-26), totalizando assim 13 posições.
Mas na Unit do HSBC o tamanho máximo do Nosso Número está como 16, assim sendo o campo acaba sendo preenchido com "zeros" a esquerda até completar as 16 posições e no momento de monta o código de barras ele copia as 13 primeiras posições.

Dessa forma quando o cliente visualiza a francesinha(Demonstrativo Analítico) no site praticamente todos os boletos estarão com o mesmo valor para a coluna "Código do documento" que corresponde ao Nosso Número, visto que ao copiar as 13 primeiras posições foi perdido a unidade, a dezena e a centena do campo Nosso Número.

O que fiz em minha base foi limitar o tamanho máximo do nosso número para 13, assim sendo não perco mais as 3 ultimas posições no momento de montar a linha digitável.

Gostaria de solicitar a correção no projeto principal.
 

Anexo segue a francesinha com o problema e um modelo do CNR.

post-3816-0-56170300-1367928415_thumb.pn

post-3816-0-20087400-1367928425_thumb.jp

  • 2 meses depois ...
  • Administradores
Postado

Bom dia.

 

Subi ao svn uma correção, se possível após testar reportar aqui o resultado.

 

Att.

  • Curtir 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 !!

Postado

Juliana, boa tarde.

 

Sobre a ultima correção, testei e não funciona.

Na unit ACBrBoleto, na procedure SetNossoNumero, o numero do NossoNumero ja fica errado porque o

TamanhoMaximoNossoNumero esta com 16 quando na verdade deveria estar como 13.

 

 

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) ));
 
      //// AQUI ELE MUDA PARA 16 DIGITOS, E DAI PRA FRENTE FICA ERRADO
      fNossoNumero := padR(trim(AValue),wTamNossoNumero,'0');
 
   end;
end;
  • Administradores
Postado

Boa tarde.

 

O rigthStr() copia as os caracteres mais a direta, ou seja, mesmo que tenha sido feita a formatação  no setNossoNumero , seriam copiados os caracteres mais a direita.

Este comando era exatamente o qual estava faltando para carteira CNR...

 

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 !!

Postado

Bom dia, 

 

Vamos analisar o caso :

Nosso numero original : vNNO = 1234

 

SetNossoNumero(vNNO,16,'0') = 000.000.000.000.1234

 

Na linha 230 da unit ACBrBancoHSBC temos :

RightStr(padR(NossoNumero, 13, '0'),13), portanto 

 

padR(vNNO, 13, '0') = 000.000.000.000.1

 

Neste momento o valor de Nosso Numero esta incorreto...

 

Att.

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