Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom Dia.

Tenho um cliente que envia boletos pelo Banco do Brasil. O convênio dele é de 7 posições e a carteira é a 18.

No momento de ler retorno, o componente busca o número do convênio e verifica que tem tamanho 7, e busca o Nosso Número que tem 17 posições o que faz, após a verificação abaixo, o componente cair em uma exceção: "Tamanho Máximo do Nosso Número é 10".

     if (Length(trim(NossoNumero)) > 10) and (wTamConvenio = 6) and
        ((wCarteira = '16') or (wCarteira = '18')) then
        Result:= 17
     else if (wTamConvenio <= 4) then
        Result := 7
     else if ((wTamConvenio > 4) and (wTamConvenio < 6)) or
             ((wTamConvenio = 6) and ((wCarteira = '12') or (wCarteira = '15') or
            (wCarteira = '17'))) then
        Result := 5
     else if (wTamConvenio = 6) then
        Result := 11
     else if (wTamConvenio = 7) then
        Result := 10;

 

Alguém está com essa mesma dificuldade?

 

Obrigado.

  • Administradores
Postado

Bom dia.

Seria possível anexar o arquivo de retorno para análise (se não puder anexar todo o arquivo, vc pode editá-lo de forma a deixar somente 1 registro de boleto)

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.

Tenho um cliente que envia boletos pelo Banco do Brasil. O convênio dele é de 7 posições e a carteira é a 18.

No momento de ler retorno, o componente busca o número do convênio e verifica que tem tamanho 7, e busca o Nosso Número que tem 17 posições o que faz, após a verificação abaixo, o componente cair em uma exceção: "Tamanho Máximo do Nosso Número é 10".

     if (Length(trim(NossoNumero)) > 10) and (wTamConvenio = 6) and
        ((wCarteira = '16') or (wCarteira = '18')) then
        Result:= 17
     else if (wTamConvenio <= 4) then
        Result := 7
     else if ((wTamConvenio > 4) and (wTamConvenio < 6)) or
             ((wTamConvenio = 6) and ((wCarteira = '12') or (wCarteira = '15') or
            (wCarteira = '17'))) then
        Result := 5
     else if (wTamConvenio = 6) then
        Result := 11
     else if (wTamConvenio = 7) then
        Result := 10;

 

Alguém está com essa mesma dificuldade?

 

Obrigado.

Boa tarde meu caro.

O método abaixo deverá ser alterado, conforme:

function TACBrBancoBrasil.CalcularTamMaximoNossoNumero(
  const Carteira: String; NossoNumero : String = ''): Integer;
var
  wCarteira   : String;
  wTamConvenio: Integer;
begin
   Result := 10;

   if (ACBrBanco.ACBrBoleto.Cedente.Convenio = '') then
      raise Exception.Create(ACBrStr('Banco do Brasil requer que o Convênio do Cedente '+
                                     'seja informado.'));

   if (Carteira = '') then
      raise Exception.Create(ACBrStr('Banco do Brasil requer que a carteira seja '+
                                     'informada antes do Nosso Número.'));

   wCarteira:= Trim(Carteira);
   wTamConvenio:= Length(Trim(ACBrBanco.ACBrBoleto.Cedente.Convenio));

   // DONE -oJacinto Junior: Alterado pois para os convênios de 7 posições e carteira 18 o tamanho do nosso número é 17.
//   if (Length(trim(NossoNumero)) > 10) and (wTamConvenio = 6) and
//      ((wCarteira = '16') or (wCarteira = '18')) then
   if (Length(Trim(NossoNumero)) > 10) and (wTamConvenio in [6, 7]) and
      ((wCarteira = '16') or (wCarteira = '17') or (wCarteira = '18')) then
      Result:= 17
   else if (wTamConvenio <= 4) then
      Result := 7
   else if ((wTamConvenio > 4) and (wTamConvenio < 6)) or
           ((wTamConvenio = 6) and ((wCarteira = '12') or (wCarteira = '15') or
            (wCarteira = '17'))) then
      Result := 5
   else if (wTamConvenio = 6) then
      Result := 11
   else if (wTamConvenio = 7) then
      Result := 10;
end;

Em anexo segue a unit alterada.

ACBrBancoBrasil.pas

  • Curtir 1
  • 2 semanas depois ...
Postado (editado)

E há mais um detalhe:

Na procedure LerRetorno400Pos7 tem um erro, no caso a carteira deve ser informada antes do Nosso Número, senão da a exception.

Carteira             := Copy(Linha,107,2);
NossoNumero          := Copy(Linha,64,17);

Coloquei isso no arquivo, junto com a alteração do Jacinto Junior.

 

 

ACBrBancoBrasil.pas

Editado por Giovani Da Cruz
  • Administradores
Postado

Boa noite.

Alteração disponível  no svn com alguns ajustes.

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

  • 3 semanas depois ...
Postado

Boa Tarde.

Analisando aqui, após algum tempo, verifiquei que para o caso de Nosso Número de 17 posições e Convênio de 7 posições, o seguinte trecho em function TACBrBancoBrasil.FormataNossoNumero (Linha 194 de unit ACBrBancoBrasil) não pode ser da forma como está:

      ANossoNumero := PadLeft(AConvenio, 7, '0') + PadLeft(ANossoNumero, 10, '0');

Da forma como está, com o nosso número de 17 posições, o nosso número no boleto fica 0, já que ele copia as 10 primeiras posições de um campo que tem tamanho 17.

Pensei em fazer um copy para esse ANossoNumero pegando só as últimas 10 posições, mas gostaria que, se possível, algum moderador analisasse essa situação.

Obrigado.

  • Administradores
Postado

Boa tarde.

Acredito que um rightStr() possa resolver.

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

  • 3 semanas depois ...
  • 3 semanas depois ...
  • Administradores
Postado

Boa noite.

Alteração disponível no svn.

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

  • 1 mês depois ...
Postado

Alguém poderia conferir os fontes na Revisão 10839 não estão as alterações propostas pelos colegas: 

>Giovani Da Cruz

Carteira             := Copy(Linha,107,2);
NossoNumero          := Copy(Linha,64,17);

>Jacinto Junior

if (Length(Trim(NossoNumero)) > 10) and (wTamConvenio in [6, 7]) and
      ((wCarteira = '16') or (wCarteira = '17') or (wCarteira = '18')) then

Obrigado!

  • Administradores
Postado

Bom dia.

O commit indicado por você não contém alterações referentes ao boleto. 

De acordo com o post do Benjamim foi possível utilizar corretamente este banco. Qual seria o problema que você está tendo?

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

O erro esta na leitura do retorno do nosso numero ex: "25674900000000192" ele só lê "00000000192" e com as alterações do propostas pelo colegas esta funcionando.

Att.

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