Gerando Código de Barras na Web
Precisando gerar código de barras para boletos bancários na Web ?
Então ganhou o dia.
Neste artigo eu vou mostrar como você pode fazer isto de maneira simples e objetiva. Veja bem , eu não vou mostrar como gerar a linha digitável , para fazer isto você deve consultar o manual do banco para o qual vai gerar os boletos. Cada banco trabalha com sua própria modalidade de cobrança e existem algumas diferenças entre como cada banco trata este serviço.
Para você não ficar órfão abaixo uma visão geral sobre o layout dos boletos bancários antes de mostrar o nosso exemplo prático:
Leiaute dos dados no boleto bancário
No boleto bancário, existem dois campos com formatação especial:
o próprio código de barras - a esquerda em baixo e
a linha digitável - a direita em cima.
Os leiautes de cada um desse dados são diferentes, como abaixo:
Código de barras:
Posição | Conteúdo |
1 a 3 | Número do banco |
4 | Código da Moeda - 9 para Real |
5 | Digito verificador do Código de Barras |
6 a 9 | Fator de Vencimento (diferença em dias entre o vencimento e 07/10/1997) |
10 a 19 | Valor (8 inteiros e 2 decimais) |
20 a 44 | Campo Livre definido por cada banco |
Linha digitável:
BBBMC.CCCCd
CCCCC.CCCCCd CCCCC.CCCCCd D VVVVVVVVVVVVVV
onde:
B - número do banco
M - Moeda (sempre 9 - real)
V - valor
C - campo livre - depende do banco
D - Digito verificador do código de barras
d - digito verificados da linha digitáveis
Calculo do Dígito Verificador do Código de Barras (quinta posição)
- Pega-se as 43
posições (44 menos a quinta).
- Multiplica-se cada posição, a partir da última para a
primeira, por 2,3,4,5,6,7,8 e 9 sucessivamente.
- Soma-se os resultados.
- Multiplica-se por 10.
- Divide-se por 11. Se o resto for 10 ou 0, o digito é 1. Se
não, o resto é o digito.
Para mais informações sobre o assunto leia os artigos :
Agora vamos ao nosso exemplo prático. Ele irá gerar um boleto bancário on-line a partir dos dados que usuário fornecer em um formulário. Abaixo temos a tela principal que nada mais é que um formulário onde informamos alguns dados para geração do código de barras:
Ao clicar no botão - Gerar Boleto - o código de barras é gerado e o boleto é exibido na tela conforme a seguinte figura:
Você deve estar se perguntando : "De onde vieram os outros dados que estão sendo exibidos no boleto : data de vencimento , valor , data do documento , etc.. ?
Ora , estes dados estão em um banco de dados que o código asp acessa para montar o boleto. Eu estou usando um banco de dados Access de nome Dados.mdb que contém a tabela cliente e é nela que eu vou buscar os dados para preencher o boleto.
Abaixo a estrutura da tabela clientes. Não a tomem como exemplo pois não esta normalizada e não deve ser usada na forma como eu estou usando neste exemplo. Fiz isto por que estou com preguiça de criar relacionamentos e o meu objetivo neste artigo é mostrar o boleto e o código de barras. Com certeza você fará uma modelagem de dados mais decente.
O código formulário eu não vou mostrar pois é puro HTML , vou apenas chamar a atenção da linha de comando html que chama o arquivo boleto.asp. Quando você clicar no botão - Gerar Boleto - haverá um submit que invocará o arquivo boleto.asp . Isto esta definido na seguinte linha:
<form method="POST" action="boleto.asp">
No arquivo boleto.asp vou destacar as seguintes linhas de código :
<!--#include file="funcoes.inc" --> |
esta linha faz uma inclusão do arquivo funcoes.inc que possui as rotinas que serão usadas para gerar o código de barras |
dim moeda, agencia, conta , dv_conta
, carteira , connstr connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("dados/dados.mdb") & ";" Set oRec = Server.CreateObject("ADODB.RecordSet") oRec.Open "select * from cliente" , connstr , 1,3,1 |
As linhas acima declaram as variáveis usadas , definem a string de conexão ao banco de dados ; cria o objeto Recordset ADO , e abrem o recordset |
valor_doc = request.form("valor") dt_doc = oRec("dt_doc") dt_venc = oRec("dt_venc") banco = request.form("banco") moeda= request.form("moeda") agencia = request.form("agencia") conta = request.form("conta") dv_conta = request.form("dv") carteira = request.form("carteira") num_doc = oRec("num_doc") nossonumero = oRec("nosso_num") dv_nossonumero = Calculo_DV10(agencia & conta & carteira & nossonumero) cod_barra = Monta_CodBarras() linha_dig = Linha_Digitavel(cod_barra) nossonumero = carteira & "/" & nossonumero & "-" & dv_nossonumero sacado = oRec("nome") end_sacado = oRec("endereco") & "<br>CEP " & oRec("cep") & " - " & oRec("cidade") & " / " & oRec("uf") cod_cli = oRec("cod") oRec.Close |
Aqui eu estou atribuindo os valores passados pelo formulário e os extraídos da tabela para variáveis que irão ser usadas para criar o boleto |
Vou deixar o código pronto para você pegar e usar mas quero deixar claro que ele não é de minha autoria e que embora a rotina gere os códigos de barra de forma correta eu não em preocupei em gerar o código e a linha digitável conforme o padrão de qualquer banco , usei o logotipo do banco Itaú apenas como exemplo.
Você deverá consultar o manual do banco para o qual deseja gerar o boleto e fazer os ajustes.
O código de barras completo esta no Super DVD Visual Basic 6
Referências:
José Carlos Macoratti