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:

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

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

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

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

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

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

Veja tambem como gerar boletos bancarios a partir da linha digitável sem componente algum: Boleto Bancário

Nota:  A Febraban recomenda um tamanho padrão para o código de barras. A altura deve ser de 13 mm e o comprimento 103 mm. Para ajustar o tamanho do ódigo de barras gerado altere o tamanho da fonte.

Alerta: Recomendo consultar a documentação atualizada dos bancos para definir a rotina do código de barras.

Ate o próximo artigo..

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti