Ir para conteúdo
  • Cadastre-se

dev botao

Retorno Banco do Brasil - Convênio de 7 posições e Nosso Número com 17


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

Recommended Posts

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.

Link para o comentário
Compartilhar em outros sites

  • Administradores

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

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

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
Link para o comentário
Compartilhar em outros sites

  • Administradores

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

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

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.

Link para o comentário
Compartilhar em outros sites

  • Administradores

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia. Juliomar temos alguma novidade?

Não.. primeiro você postou a menos de 24 horas !

segundo quem cuida do componente ainda não chegou até aqui pra ler

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Moderadores

Boa tarde.

Sem querer ser chato, mas tem alguma previsão de implementação no repositório das alterações sugeridas?

Obrigado.

Tem que aguardar até que a pessoa que mantém o componente chegue a ele!

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Administradores

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

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

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!

Link para o comentário
Compartilhar em outros sites

  • Administradores

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

Link para o comentário
Compartilhar em outros sites

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