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...
The popup will be closed in 10 segundos...