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:

  1. o próprio código de barras - a esquerda em baixo e

  2. a linha digitável - a direita em cima.

Os leiautes de cada um desse dados são diferentes, como abaixo:

  1. 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
  1. 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 :

  1. Gerando Boletos Bancários com o VB e Crystal Reports I.

  2. Gerando Boletos Bancários com o VB e Crystal Reports II.

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