You are on page 1of 5

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

Na primeira parte do nosso artigo Gerando Boletos Bancários com o VB e Crystal Reports abordamos os
conceitos básicos sobre o boleto bancário. Lembre-se que estamos tomando por base as informações para
gerar boletos para o Banco do Brasil , se você for trabalhar com outro banco a documentação pode ser
um pouco diferente.

Até o presente momento criamos as funções para calcular os digitos verificadores no modulo 11 , no
modulo 10 , como gerar o código de barras e calcular o seu DV.

Vamos agora mostrar como gerar a linha digitável (lembra-se dela). Ela tem o seguinte formato:

BBBMC.CCCCd CCCCC.CCCCCd CCCCC.CCCCCd D VVVVVVVVVVVVVV


onde:

B - número do banco
M - Moeda (sempre 9 - real)
V - valor7
C - campo livre - depende do banco
D - Digito verificador do código de barras
d - digito verificados da linha digitáveis

Perceba que temos 5 sequências de números , cada sequência com um significado : Vamos identificar
cada sequência:

1. BBBMC.CCCCd - Posição 1 a 3 do cód. de barras, codigo da moeda, posicoes de 20 a 24 do cod.


barras e dv deste campo

2. CCCCC.CCCCCd - posicoes 25 a 34 do cod. barras, e dv deste campo.(No. convenio)

3. CCCCC.CCCCCd - posições 35 a 44 do cod. de barras e dv deste campo.(

4. D- Digito verificador geral do cod. barras

5. VVVVVVVVVVVVVV - fator de vencimento (posicoes 6 a 9 do cod. barras) e posicoes 10 a 19


do cód. barras

Assim para o Banco do Brasil a composição da linha digitável pode ser obtida pela seguinte função:

Function Linha_Digitavel(sequencia As String, DV_CodBarras As String, valor As Single) As String

Dim seq1 As String


Dim seq2 As String
Dim seq3 As String

Dim dv1, dv2, dv3 As Integer

'separa a sequencia e prepara o valor


seq1 = Left(sequencia, 9)
seq2 = Mid(sequencia, 10, 10)
seq3 = Right(sequencia, 10)
valor = Int(valor * 100)

' calcula os dvs


dv1 = Val(Calculo_DV10(seq1))
dv2 = Val(Calculo_DV10(seq2))
dv3 = Val(Calculo_DV10(seq3))

'formata a sequencia
seq1 = Left(seq1 & dv1, 5) & "." & Right(seq1 & dv1, 5)
seq2 = Left(seq2 & dv2, 5) & "." & Right(seq2 & dv2, 6)
seq3 = Left(seq3 & dv3, 5) & "." & Right(seq3 & dv3, 6)
Linha_Digitavel = seq1 & " " & seq2 & " " & seq3 & " " & DV_CodBarras & " " & valor

End Function

Falta somente a função para calcularmos o nosso número - um número de identificação .Ele pode ser
composto pelo número do convênio - um número atribuído ao convênio que o identifica. Abaixo temos a
função que a partir do número do convênio calculo o nosso número com dv:

Function Calculo_NossoNumero(sequencia As String) As String


'montamos o nosso numero com o numero do convenio ( 6 posicoes)
Dim dv As Integer

dv = Calculo_DV11(sequencia)
Calculo_NossoNumero = Format(sequencia & dv, "00000000000000000")

End Function

Bem , agora vamos juntar tudo e emitir o boleto com o código de barras e a linha digitável.

Criando o Projeto para imprimir os boletos

-Inicie o VB e no formulário padrão insira os controles conforme o layout abaixo:

Não vou me ater as rotinas de manutenção/validação dos dados , meu objetivo e apenas mostrar como
gerar o código de barras a e a linha digitável e imprimir o boleto.(Fica a seu cargo aperfeiçoar e adaptar o
projeto as suas necessidades)

O projeto deve funcionar da seguinte forma:

Você inclui um cedente e o respectivo sacado

Após informar os dados do sacado você vai clicar no botão para gerar o código de barras e da linha
digitável

Os números serão exibidos nas respectivas caixas de texto.(Fiz isto somente para você ver os números)

Vamos criar um relatório no Crystal Reports versão 4.6 ( se funcionar nessa versão funciona em qualquer
outra posterior ) para que quando clicarmos no botão de impressão o boleto seja gerado com o código
de barras e a linha digitável. ( Vamos usar as fontes do comentadas no artigo Usando código de barras -
Conceitos

Eu armazenei os valores do código de barras e da linha digitável no banco de dados para ficar mais
fácil para mim , você não precisa necessariamente fazer isto no seu projeto.

Vamos desenhar o layout do boleto no Crystal Reports ( Eu estou usando a versão que vem com o VB6 -
a 4.6 ) conforme especificado pelo Banco . Tenha o cuidado de inserir os campos nos lugares corretos . O
único cuidado que você deve ter é com o campo para gerar o código de barras. Faça o seguinte:

Como vamos usar o padrão 2 de 5 intercalado temos que usar uma função que esta disponível no Crystal
Reports após copiarmos os arquivos Cia_itft.TTf e u2lbcp.dll para as pastas windows\fonts e
windows\system.

1. No crystal Reports no local onde deseja que o código de barras seja exibido vá no menu Insert e
clique na opção Formula Field

2. Informe o nome para esta formula ( Ex.codbar ) e clique em OK

3. Na aba Functions localize a função BarcodeINTERLEAVED2OF5("ITF0.B",Flf) e selecione-a

4. A seguir na aba Fields clique no campo onde estamos armazenando o valor para o código de barras.
No nosso caso será {tblBoletos.codbarras}

5. Pronto você acabou de montar uma fórmula com o campo gerado para o código de barras. Veja
abaixo

6. Agora clique no botão Check e a seguir , se não houver erros , no botão Accept

7. Inclua a formula no local onde deseja exibir o código de barras

8. Mude a fonte para esta formula clicando com o botão direito do mouse sobre e ela e selecionando
Change Font

9. Selecione a fonte CIA ITF Tall e pronto. Veja a figura abaixo.


10. Salve o seu relatório com o nome de boleto.rpt . O relatório esta pronto para ser usado.

Agora insira o componente Crystal Reports ao seu projeto , se não o fez ainda , e dê a ele o nome de cr1.
Agora inclua o seguinte código no evento click do botão de comando cmdimprimir.

Private Sub cmdimprimir_Click()


cr1.DataFiles(0) = App.Path & "\boleto2001.mdb"
cr1.WindowState = 2
cr1.WindowControlBox = True
cr1.ReportFileName = App.Path & "\boleto.rpt"
cr1.Destination = 0
cr1.Action = 1
End Sub

Rode o projeto e clique no botão que imprime o boleto. Se você fez tudo certo deverá obter o boleto
como abaixo:
IMPORTANTE: Todas as rotinas foram feitas levando em conta a documentação para o Banco do Brasil. Para outros
bancos podem haver algumas modificações a fazer. Eu não testei o código gerado em uma máquina leitura de código de
barras . Cuidado ao utilizar o exemplo ele pode conter erros , afinal meus artigos são atualizados sempre na calada da noite
após um longo dia de trabalho... Para uso comercial eu sugiro que você adquira um componente de terceiro para gerar o
seu código de barras.

Nota: Eu não gerei o recibo do sacado para ganhar tempo. isto fica a seu critério.

Clique no link a seguir para copiar o código fonte(.txt) , o relatório(.rpt) e a base de dados(.mdb)
usada no artigo: Boleto.zip 10 Kb ( O projeto completo e os arquivos das fontes usadas estão no super
cd VB )

Nota : o BB tem um novo modelo de "campo livre" para seus boletos, quando o convênio tem 7
digitos, em
vez de 6. (JULHO/2004) . Veja mais detalhes no site do Banco do Brasil.

Ate o próximo artigo..

Copyright (c) 2001 - José Carlos Macoratti e amigos da WEB

You might also like