Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renanbg

Extrair vencimento e valor de boleto

Recommended Posts

Tenho um leitor de codigos de barras de boletos aqui e gostaria de que ao passar o boleto por ele, um edit recebesse o valor do boleto e o outro recebesse a data de vencimento, assim como acontece quando se paga uma conta on-line.

 

Alguem sabe como fazer ou pode me indicar um caminho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segundo o padrão FEBRABAN, o código de barras do boleto é formado por 44 caracteres, a saber:

 

- Número do banco (3 dígitos)

- Código da moeda (1 dígito = "9")

- Dígito verificador (1 dígito)

- Fator de vencimento (4 dígitos) - corresponde a quantidade de dias após a data base de 07/10/1997.

- Valor do título (10 dígitos)

- Campo livre (25 dígitos) - cada banco implementa um algoritmo nesta parte

 

Então para extrair o vencimento e valor:

 

function ExtrairDataVencimento(const CodigoBarras: String): TDateTime;

begin

Result := StrToDate('07/10/1997') + StrToInt(Copy(CodigoBarras, 6, 4));

end;

 

function ExtrairValor(const CodigoBarras: String): Currency;

begin

Result := StrToCurr(Copy(CodigoBarras, 10, 10)) / 100;

end;

 

PS: Isso vale para títulos de cobrança. Contas de água, luz e telefone, por exemplo, usam outro algoritmo.

PS2: Boletos podem não ter valor ou vencimento, nesse caso estarão preenchidos com 0.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Angelo,

 

Obrigado pela ajuda, funcionou perfeitamente.

 

Agora mais um detalhe...suponhamos que o leitor não funcione ou o codigo de barras esteja danificado. Tem como mudar essa função pra pegar os dados da linha digitavel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo.

 

a linha digitavel é essa: 04192101330161206000200086740842752460000249352

 

Valor: 2493,52

Vencimento: 17/02/2012

 

fiz assim:

 

function ExtrairDataVencimento(const CodigoBarras: String): TDateTime;
begin
Result := StrToDate('07/10/1997') + StrToInt(Copy(CodigoBarras, 34, 4));
end;

function ExtrairValor(const CodigoBarras: String): Currency;
begin
Result := StrToCurr(Copy(CodigoBarras, 38, 10)) / 100;
end;

 

Está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.