Você está na página 1de 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)
B)
C)
D)

Nmero do Banco: 097


Moeda: 9
Dgito Verificador Baseado no mdulo 11. Neste Caso: 0
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

Você também pode gostar