Ir para conteúdo
  • Cadastre-se

dev botao

Problema no retorno do Nosso Número CNAB400 - Banco Bradesco


Ver Solução Respondido por Victor H. Gonzales - Panda,

Recommended Posts

Postado

Estou com um problema na leitura do retorno dos boletos do Bradesco CNAB 400.
O retorno contém boletos cujo nosso número termina com a letra P. O que está correto de acordo com o layout do banco.
Porém, a classe que lê esse campo está pegando somente números: 
TACBrTitulo.SetNossoNumero 
wNossoNumero:= OnlyNumber(AValue);

Então a leitura do retorno fica diferente do que foi salvo na remessa, dificultando a identificação do boleto correto.
Gostaria de sugerir que fosse possível ler como campo alfanumérico, porém não sei em que isso poderia afetar o funcionamento de outros bancos.
Aguardo retorno de alguma sugestão.
Obrigado.

  • Consultores
  • Solution
Postado
1 hora atrás, Farol TI disse:

Estou com um problema na leitura do retorno dos boletos do Bradesco CNAB 400.
O retorno contém boletos cujo nosso número termina com a letra P. O que está correto de acordo com o layout do banco.
Porém, a classe que lê esse campo está pegando somente números: 
TACBrTitulo.SetNossoNumero 
wNossoNumero:= OnlyNumber(AValue);

Então a leitura do retorno fica diferente do que foi salvo na remessa, dificultando a identificação do boleto correto.
Gostaria de sugerir que fosse possível ler como campo alfanumérico, porém não sei em que isso poderia afetar o funcionamento de outros bancos.
Aguardo retorno de alguma sugestão.
Obrigado.

pede para montar o numero.

se alterar a classe para permitir o SET de informação alpha, pode ser implementado um bug na linha digitavel / código de barras.

para isso você poderia pedir para montar o nosso numero e o sistema irá te trazer o DV calculado

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

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

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • 2 semanas depois ...
Postado

Também estou passando pelo mesmo problema. Só que executar a função de montar o nosso número não resolveu. O que acontece é o seguinte... 

Tenho dois boletos no arquivo de retorno. Na verdade tenho vários, mas para resumir, vamos colocar apenas dois como exemplo. No arquivo de retorno, um dos boletos está com o nosso número 000000032452 e o outro está com o nosso número 00000003224P. Quando o ACBr lê o arquivo de retorno, ele coloca apenas números na propriedade NossoNumero. Na verdade a função DefineNossoNumeroRetorno retorna o nosso número correto. Porém, quando seta o valor na propriedade NossoNumero, ele deixa apenas números. O primeiro fica com o nosso número 000000032452 e o segundo fica com o nosso número 000000003224. Como o tamanho máximo do nosso número é 12, o segundo, no qual o dígito verificador é a letra P, fica com 11 caracteres. Mas é completado com um zero a esquerda para ficar com 12. Já o primeiro, que possui o digito verificador igual a 2, fica com 12 caracteres, no qual permanece o mesmo. 

O problema é o seguinte: Se eu executar a função MontarCampoNossoNumero, o ACBr irá pegar o nosso número que está no título, e gerar o nosso número completo com o dígito verificador. No segundo boleto, que o digito verificador é a letra P, irá ficar correto, pois o nosso número está correto, visto que foi tirado o digito verificador ao setor o nosso número na propriedade NossoNumero. Porém, no primeiro boleto, o nosso número montador irá ficar errado, visto que o digito verificador foi incluído no nosso número, pois não foi removido, visto que era um número.

Então gostaria de uma ideia de como proceder nesse caso.

  • 2 meses depois ...
  • Membros Pro
Postado

Boa tarde.

Eu seto a propriedade LerNossoNumeroCompleto como True, para todos os bancos.

Do Bradesco tem que setar para False.

Para contornar isso, ja que só se sabe o banco apos ler o arquivo, criei uma função para abrir o arquivo, verificar se é Bradesco.

 

Boleto.LerNossoNumeroCompleto := NumeroBancoCompleto;

   function NumeroBancoCompleto: boolean;
   var
      iArq: TStringList;
      iCnab400: boolean;
      iColuna: integer;
   begin
      iArq := TStringList.Create;
      with iArq do begin
         try
            LoadFromFile(Boleto.NomeArqRetorno);
            iCnab400 := Length(Strings[0]) > 240;
            iColuna  := iif(iCnab400,77,1);
            Result   := not (Pos('237;',Copy(Strings[0],iColuna,3)+';') <> 0);
         finally
            Free;
         end;
      end;
   end;

 

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.

The popup will be closed in 10 segundos...