You are on page 1of 6

PADRO DE MONTAGEM DE CDIGOS DE BARRAS E LINHA

DIGITVEL CREDISISCOBRANA

Padro de cdigo de barras para nosso nmero de 17 posies (carteira 18), com fator
vencimento:
...............................................................
N. POSIES PICTURE USAGE CONTEO
...............................................................
01 001 a 003 9/003/ Display 097
02 004 a 004 9/001/ Display 9 /Real/
03 005 a 005 9/001/ Display DV /*/
04 006 a 009 9/004/ Display fator de vencimento
05 010 a 019 9/008/v99 Display Valor
06 020 a 044 9/025/ Display CAMPO LIVRE
...............................................................


MONTAGEM DO CAMPO LIVRE
.............................................................
N. POSICOES PICTURE USAGE CONTEUDO
.............................................................
01 020 a 025 9/006/ Display Fixo: 000000 (Zeros)
02 026 a 042 9/017/ Display NossoNmero, sem DV
03 043 a 044 9/002/ Display Fixo: 18


Exemplo do Cdigo de Barras

A B C D E F G H
123.4.5.6789.0123456789.012345.67890123456789012.34
---.-.-.----.----------.------.-----------------.-
B .M.D.F . . . .T
A .O.V.A . . FIXO . NOSSO NUMERO .I
N .E. .T . VALOR . . .P
C .D. .O . DO . ZEROS. .O
O .A. .R . TITULO . . .
. . . . . . .

A) Nmero do Banco: 097
B) Moeda: 9
C) Dgito Verificador Baseado no mdulo 11. Neste Caso: 0
D) Fator de Vencimento. Exemplo: 1000 = 03/07/2000
1002 = 05/07/2000
1667 = 01/05/2002
5443 = 01/09/2012
9999 = 21/02/2025
E) Valor do ttulo (apenas nmeros). Ex R$ 100,25 = 0000010025
F) Zeros: 000000
G) Nosso Nmero. Composio do Nosso Nmero: AAAAAAABBBBCCCCCC
AAAAAAA = Cdigo do Convnio: 100000
BBBB = Cdigo do Cooperado no CREDISISCOBRANA. Ex: 1234
CCCCCC = Sequencial do Ttulo (nunca pode repetir). Ex: 000001

Esta Sequencia seria representada por: 10000001234000001
H) Fixo: 18


Exemplo de LINHA DIGITVEL para nosso nmero de 17 posies (carteira 18), com fator
vencimento:
BBBMC.CCCCd CCCCC.CCCCCd CCCCC.CCCCCd D VVVVVVVVVVVVVV

onde:
B - nmero do banco
M - Moeda (sempre 9 - real)
V - valor7
C - campo livre - depende do banco
D - Digito verificador do cdigo de barras
d - digito verificados da linha digitveis
Perceba que temos 5 sequncias de nmeros , cada sequncia com um significado :
Vamos identificar cada sequncia:
1. BBBMC.CCCCd - Posio 1 a 3 do cd. 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 - posies 35 a 44 do cod. de barras e dv deste campo.
4. D - Digito verificador geral do cod. Barras (posio 5 do cdigo de barras)
5. VVVVVVVVVVVVVV - fator de vencimento (posies 6 a 9 do cod. barras) e
posies 10 a 19 do cd. barras.
Exemplos em VB para montagem dos nmeros e clculo dos dgitos:
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

Funo em VB para calcular o Digito
Function Calculo_DV10(strNumero As String) As String
'declara As variveis
Dim intContador As Integer
Dim intNumero As Integer
Dim intTotalNumero As Integer
Dim intMultiplicador As Integer
Dim intResto As Integer

' se nao for um valor numerico sai da funo
If Not IsNumeric(strNumero) Then
Calculo_DV10 = ""
Exit Function
End If

'inicia o multiplicador
intMultiplicador = 2

'pega cada caracter do numero a partir da direita
For intContador = Len(strNumero) To 1 Step -1

'extrai o caracter e multiplica pelo multiplicador
intNumero = Val(Mid(strNumero, intContador, 1)) * intMultiplicador

' se o resultado for maior que nove soma os algarismos do resultado
If intNumero > 9 Then
intNumero = Val(Left(intNumero, 1)) + Val(Right(intNumero, 1))
End If

'soma o resultado para totalizao
intTotalNumero = intTotalNumero + intNumero

'se o multiplicador for igual a 2 atribuir valor 1 se for 1 atribui 2
intMultiplicador = IIf(intMultiplicador = 2, 1, 2)


Next

Dim DezenaSuperior As Integer
If intTotalNumero < 10 Then
DezenaSuperior = 10
Else
DezenaSuperior = 10 * (Val(Left(CStr(intTotalNumero), 1)) + 1)
End If
intResto = DezenaSuperior - intTotalNumero
'verifica as excees ( 0 -> DV=0 )
Select Case intResto
Case 0
Calculo_DV10 = "0"
Case Else
Calculo_DV10 = Str(intResto)
End Select

End Function

A funo que iremos usar para montar o cdigo de barras dada a seguir:
Private Function Monta_CodBarras(Banco As String, Moeda As String, valor As Single,
vencimento As Date, Livre As String)

Dim codigo_sequencia As String
Dim database As Date
Dim fator As Integer
Dim intDac As Integer

'database para calculo do fator
database = CDate("7/10/1997")
fator = DateDiff("d", database, Format(vencimento, "dd/mm/yyyy"))
valor = Int(valor * 100)
Livre = Format(Livre, "0000000000000000000000000")

' sequencia sem o DV
codigo_sequencia = Banco & Moeda & fator & Format(valor, "0000000000") & Livre

' calculo do DV
intDac = calcula_DV_CodBarras(codigo_sequencia)

' monta a sequencia para o codigo de barras com o DV
Monta_CodBarras = Left(codigo_sequencia, 4) & intDac & Right(codigo_sequencia, 39)

End Function

A funo que calcula o digito verificador do cdigo de barras dada abaixo:
Private Function calcula_DV_CodBarras(sequencia As String) As Integer

Dim intContador, intNumero, intTotalNumero As Integer
Dim intMultiplicador, intResto, intresultado As Integer
Dim caracter As String

intMultiplicador = 2

For intContador = 1 To 43
caracter = Mid(Right(sequencia, intContador), 1, 1)
If intMultiplicador > 9 Then
intMultiplicador = 2
intNumero = 0
End If
intNumero = caracter * intMultiplicador
intTotalNumero = intTotalNumero + intNumero
intMultiplicador = intMultiplicador + 1
Next

intResto = intTotalNumero Mod 11

intresultado = 11 - intResto

If intresultado = 10 Or intresultado = 11 Then
calcula_DV_CodBarras = 1
Else
calcula_DV_CodBarras = intresultado
End If

End Function
Links teis para confeco do boleto
http://www.macoratti.net/boleto.htm
http://www.macoratti.net/boleto2.htm

You might also like