Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dudurutsdf

O que você prescisa saber para criar um boleto bancario

Recommended Posts

Bom Resolvi postar esses script para quem estiver procurando por boleto em asp, depois de tanta pesquisa para um projeto que estive trabalhando, vi que

existe pouca informação sobre este assunto ! então segue abaixo:

 

1- você precisa saber para qual banco você estará trabalhando pois cada banco existe um manual diferente: no meu caso será o banco da caixa econômica

 

1.1 - Código Banco: 104-0 onde (104) código do banco e o (0) Digito Verificador;

1.2 - Tipo de Cobrança: Tipo de cobrança do boleto bancário em que a conta que vai receber os pagamentos esta configurada, cujo Código 1-para cobrança Registrada e 2 - para cobrança não registrada.

 

2-Entendendo a linha Digitável do código de barras: cobrança não registrada Código = 2;

 

EX: (10492.34561) (70000.200047) (00000.000417) (4) (50860000006456)

(BBBML.LLLLd) (LLLLL.LLLLLd) (LLLLL.LLLLLd) (G) (DDDDVVVVVVVVVV)

 

ONDE:

 

B - Banco;

M - tipo de Moeda no caso real = 9;

L - Campo Livre - explicarei mais adiante.

d - Digito verificador do campo, calculado no Modulo10

G - Digito Verificador Geral do codigo de barra

D - Data vencimento

V - Valor do documento

 

A linha digitável e dividida em 5 campos:

Campo 1 = 10492.34561

Campo 2 = 70000.200047

Campo 3 = 00000.000417

campo 4 = 4

campo 5 = 50860000006456

 

- Campo1:da 1ª a 3ª posição do campo1 é código do banco:104, a 4ª posição do campo1 e o código da moeda:9, da 5ª a 9ª Posição campo1 é da 1ª a 5ª posição do Campo Livre e a 10ª posição do campo1 e o digito verificador do campo1 calculado no modulo10;

 

- Campo2:da 1ª a 10ª Posição do campo2 e composto pelas 6ª a 15ª posição do campo livre, e a 11º posição do campo2 = Digito Verificador do campo2 calculado no modulo10;

 

- campo3:da 1ª a 9ª Posição do Campo3 e composto pelas 16ª a 24ª posição do campo livre, a 10º posição do campo3 e o Digito Verificador do campo Livre (que e = a 25ª do campo livre) calculado no modulo11 que e o numero (1) de acordo com o nosso exemplo e a 11ª posição do campo3 e o digito verificador do campo3 calculado no modulo10;

 

- campo4: e composto por 1 posição que e o Digito Verificador Geral do Código de barras calculado no modulo11

 

- campo5:da 1ª a 4ª posição e o fator data de vencimento (mais abaixo vou mostrar o calculo da data), da 5ª a 14ª posição e o valor do documento onde o valor vai ficar nas primeiras posições da direita pra esquerda do campo5 e se preenchendo de zeros ate os 4 primeiras posições que informa a data de vencimento.

EX:

campo 5 = 50860000006456

Valor Documento = 64,56

Data = 5086

montando:

Data = 5086

Valor Doc. = 0000006456

 

Espero que esteja começando a clarear pra quem nunca mexeu com boleto bancário.

Bom galera amanhã vou explicar o resto ainda tem bastante coisa pra mostrar, vou entrar na parte de código asp, explicar como montar o campo livre, como calcular digitos no modulo 10 e 11 so nao explico agora pois estou saindo do serviço abraços, calcular a data tbm pra nao ficar essa data doida ai de 4 digitos hehehe att...

Compartilhar este post


Link para o post
Compartilhar em outros sites

só para implementar o exemplo, segue um código de boleto do Banco do Brasil com 7 dígitos

 

<%
option explicit

session.lcid = 1046

dim idPedido, valor, data_documento, data_vencimento,nome_sacado, endereco_sacado, endereco_sacado2,cedente, cpf_cnpj, agencia, dac_agencia,conta, dac_conta, carteira,layout_boleto,convenio, numero_documento,nosso_numero, instrucoes1,instrucoes2,instrucoes3,instrucoes4, instrucoes5, contrato, especie, especie_doc, aceite, a, fvencimento, valor_str, livre, dac_nosso_numero, codbar, mult, total, pos, nresto, ndig, dac, cmplivre, campo1, res, campo2,campo3,campo4, campo5, linha_digitavel, agencia_codigo, x98, quantidade, data_processamento, valor_unitario, x80, x171,x99,x3,x125,x126,x18,dvNosso_numero
dim sql, rs

idPedido = "10"

'================INFORMAÇÕES BANCÁRIAS==============
cedente = "Sua Empresa Teste Ltda"
cpf_cnpj = "000.000.000/0000-00"
agencia = "1234"
dac_agencia = "3" 
conta = "9999" 
dac_conta = "9" 
convenio = "1234567"
carteira = "12"

'================INSTRUÇÕES DO BOLETO==============
instrucoes1 = "Após o vencimento multa de 2% + 0,1% de mora ao dia."
instrucoes2 = "Protestar 03 dias úteis após o vencimento."
instrucoes3 = "-"
instrucoes4 = "-"
instrucoes5 = "-"
'=====================================================

valor       = formatNumber(52.15,2)
data_vencimento  = formatDateTime(#18-01-2008#, vbShortDate)
data_documento  = formatDateTime(#15-01-2008#, vbShortDate)
data_processamento = date()
nome_sacado    = "Mononoomomo Mononomom - CNPJ: 111.111.111/1111-110"
endereco_sacado  = "Rua de testes nº 5<br>"&_
         "91910500 - Piracicaba/SP"

'Evite mudar estas variaveis abaixo
layout_boleto = "3" 
numero_documento = idPedido
nosso_numero = idPedido
dvNosso_numero = mod11(convenio &right("0000000000"&idPedido,10),9,0) 
contrato = ""
especie = "R$"
especie_doc = "DM"
aceite = "N"

function mod11(cadeia,limitesup,lflag)
mult=1 + (len(cadeia) mod (limitesup-1))
if mult=1 then
 mult=limitesup
end if
total=0
for pos=1 to len(cadeia)
 total=total+(mid(cadeia,pos,1) * mult)
 mult=mult-1
 if mult=1 then
  mult=limitesup
 end if
Next
nresto=(total mod 11)
if lflag = 1 then
 mod11=nresto
else
 if nresto=0 or nresto=1 or nresto=10 then
  ndig=1
 else
  ndig=11 - nresto 
 end if
 mod11=ndig
end if
end function

function mod10(cadeia)
mult=(len(cadeia) mod 2) 
mult=mult+1
total=0
for pos=1 to len(cadeia)
 res= mid(cadeia, pos, 1) * mult
 if res > 9 then
  res=int(res/10) + (res mod 10)
 end if
 total=total+res
 if mult=2 then
  mult=1
 else
  mult=2
 end if
next
total=((10-(total mod 10)) mod 10 )
mod10=total
end function

function linhadigitavel(codigobarras)
cmplivre=mid(codigobarras,20,25)
campo1=left(codigobarras,4)&mid(cmplivre,1,5)
campo1=campo1&mod10(campo1)
campo1=mid(campo1,1,5)&"."&mid(campo1,6,5)  
campo2=mid(cmplivre,6,10)
campo2=campo2&mod10(campo2)
campo2=mid(campo2,1,5)&"."&mid(campo2,6,6)  
campo3=mid(cmplivre,16,10)
campo3=campo3&mod10(campo3) 
campo3=mid(campo3,1,5)&"."&mid(campo3,6,6)  
campo4=mid(codigobarras,5,1)  
campo5=int(mid(codigobarras,6,14))  
if campo5=0 then
 campo5="000"
end if  
linhadigitavel=campo1&" "&campo2&" "&campo3&" "&campo4&" "&campo5 
end function 
function fvenc(entra)
fvenc = DateDiff("d", CDate("7/10/1997"), CDate(entra))
end function 
function formatar(valor, comp, ench, tipo)
dim str
str = valor
if tipo = "v" then
 str = Ccur(str)
 str = formatnumber(str,2,-2,-2,-2)
 tipo = "e" :str = cstr(str)
 str = replace(str,",","")
 str = replace(str,".","")
end if
for a=len(str) to (comp - 1)
 if tipo = "e" then
  str = ench & str 
 else
  str = str & ench
 end if
next
if tipo = "e" then
 str = left(str,comp) 
else
 str = right(str,comp)
end if
formatar = str
end function 
function d1d2(entra)
d1 = mod10(entra)
Do
 d2 = mod11(entra & d1,7,1)
 if d2 = 1 then
  if d2 = 9 then
   d1 = 0
  elseif d1 < 9 then
   d1 = d1 + 1
  else
   d1 = 0
  end if  
 end if
Loop while d2 = 1
if d2 > 0 then
 d2 = 11 - d2
end if
d1d2 = Cstr(Cstr(entra) & Cstr(d1) & Cstr(d2))
end function 
function dv(entra)
temp = Cint(mod11(entra,9,1))
if temp < 10 then
 dv = 11 - temp
else
 dv = 1
end if
if dv = 11 then dv = 0
if dv = 10 then dv = "X"
dv = Cstr(dv)
end function 
layout_boleto = Cstr(layout_boleto)
conta = Cstr(formatar(conta,8,"0","e"))
fvencimento = Cstr(fvenc(data_vencimento))
valor_str = Cstr(formatar(valor,10,"0","v"))
agencia = Cstr(formatar(agencia,4,"0","e"))
carteira = Cstr(formatar(carteira,2,"0","e"))
if layout_boleto = "3" then
convenio = formatar(convenio,7,"0","e")
nosso_numero = formatar(nosso_numero,10,"0","e")
livre = "000000" & convenio & nosso_numero & carteira
dac_nosso_numero = ""    
nosso_numero = convenio & nosso_numero
else
Response.Write("ERRO ! <br> Selecione o layout do boleto inválido, use numero 3")
Response.End()
end if 
codbar = Cstr("0019" & fvencimento & valor_str & livre)
dac = Cstr(mod11(codbar,9,0))
codbar = Cstr("0019" & dac & fvencimento & valor_str & livre)
linha_digitavel = linhadigitavel(codbar)
agencia_codigo = agencia &"-"& dac_agencia & "/" & conta &"-"& dac_conta
valor = formatnumber(Ccur(valor),2,-2,-2,-2) 
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Boleto BB</title>
<meta http-equiv=Content-Type content="text/html;charset=windows-1252">
<meta content="MSHTML 6.00.2800.1400" name=GENERATOR>
<style>
.Titulo11{
 font:11px Arial, Helvetica, sans-serif;
}  
.campo{
 font:10px Verdana, Arial, Helvetica, sans-serif;
}  
.CampoTitulo{
 font:bold 14px Arial, Helvetica, sans-serif;
}
.Normal{
 font:12px Arial, Helvetica, sans-serif;
}
</style>
</head> 
<body bgcolor="White" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgproperties="fixed">
<table border="0" cellPadding="0" cellSpacing="0" width="660">
<tr>
 <td class="Normal">
  <div align="center">
   <b>O pagamento deste boleto também poderá ser efetuado pelo Auto-Atendimento BB na Internet ou pelos Terminais de Auto-Atendimento.</b>
  </div>
  <p>
    <b>Instruções:</b><br>
   <ol>
    <li>Imprima em impressora jato de tinta (ink jet) ou laser em qualidade normal ou alta. Não use modo econômico.</li>
    <li>Utilize folha A4 (210 x 297mm) ou Carta (216 x 279mm) e margens mínimas à esquerda e à direita do formulário.</li>
    <li>Corte na linha indicada. Não rasure, risque, fure ou dobre a região onde se encontra o código de barras.</li>
   </ol>
  </p>
 </td>
</tr> 
</table>
<br>
<div style="position:absolute;top:145px;left:5px;height:636px;width:670px;z-index:1;">
<img src="imagens_bb/bbformularioBoleto.gif" width="647" height="636" border="0" alt="">
</div>
<div style="position:absolute;top:161px;left:7px;height:22px;width:96px;z-index:2;">
<img src="imagens_bb/bblogoBoleto.gif" width="150" height="22" border="0" alt="">
</div>
<div style="position:absolute;top:444px;left:7px;height:22px;width:96px;z-index:2;">
<img src="imagens_bb/bblogoBoleto.gif" width="150" height="22" border="0" alt="">
</div>
<div style="position:absolute;top:127px;left:7px;z-index:2;" class="Titulo11">
Corte na linha pontilhada
</div> 
<div style="position:absolute;top:138px;left:5px;z-index:2;" class="Titulo11">
<img src="imagens_bb/bblinhaPontilhada.gif" width="650" height="5" border="0" alt="">
</div>
<div style="position:absolute;top:145px;left:549px;z-index:2;" class="Campo">
<b>Recibo do Sacado</b>
</div>
<div style="position:absolute;top:167px;left:163px;z-index:2;" class="CampoTitulo">
001-9
</div>
<div style="position:absolute;top:166px;left:210px;z-index:2;width:438px;text-align:right;" class="CampoTitulo">
<layer name="helpns" width=438px><%=linha_digitavel%></layer>
</div>
<div style="position:absolute;top:450px;left:163px;z-index:2;" class="CampoTitulo">
001-9
</div>
<div style="position:absolute;top:449px;left:210px;z-index:2;width:438px;text-align:right;" class="CampoTitulo">
<layer name="helpns" width=438px><%=linha_digitavel%></layer>
</div>
<div style="position:absolute;top:184px;left:15px;z-index:2;" class="Titulo11">
Cedente
</div>
<div style="position:absolute;top:184px;left:317px;z-index:2;" class="Titulo11">
Código do Cedente
</div>
<div style="position:absolute;top:184px;left:438px;z-index:2;" class="Titulo11">
Espécie
</div> 
<div style="position:absolute;top:184px;left:480px;z-index:2;" class="Titulo11">
Quantidade
</div>
<div style="position:absolute;top:184px;left:536px;z-index:2;" class="Titulo11">
Nosso número
</div>
<div style="position:absolute;top:209px;left:15px;z-index:2;" class="Titulo11">
Número do documento
</div>
<div style="position:absolute;top:209px;left:135px;z-index:2;" class="Titulo11">
Contrato
</div>
<div style="position:absolute;top:209px;left:214px;z-index:2;" class="Titulo11">
CPF/CEI/CNPJ
</div>
<div style="position:absolute;top:209px;left:353px;z-index:2;" class="Titulo11">
Vencimento
</div>
<div style="position:absolute;top:209px;left:480px;z-index:2;" class="Titulo11">
Valor documento
</div>
<div style="position:absolute;top:234px;left:15px;z-index:2;" class="Titulo11">
(-)Desconto/Abatimento
</div>
<div style="position:absolute;top:234px;left:135px;z-index:2;" class="Titulo11">
(-)Outras opções
</div> 
<div style="position:absolute;top:234px;left:251px;z-index:2;" class="Titulo11">
(+)Mora/Multa
</div>
<div style="position:absolute;top:234px;left:367px;z-index:2;" class="Titulo11">
(+)Outros acréscimos
</div>
<div style="position:absolute;top:234px;left:480px;z-index:2;" class="Titulo11">
(=)Valor cobrado
</div>
<div style="position:absolute;top:259px;left:15px;z-index:2;" class="Titulo11">
Sacado
</div>
<div style="position:absolute;top:284px;left:15px;z-index:2;" class="Titulo11">
Instruções
</div>
<div style="position:absolute;top:284px;left:574px;z-index:2;" class="Titulo11">
Autenticação Mecânica
</div>
<div style="position:absolute;top:415px;left:7px;z-index:2;" class="Titulo11">
Corte na linha pontilhada
</div>
<div style="position:absolute;top:426px;left:5px;z-index:2;" class="Titulo11">
<img src="imagens_bb/bblinhaPontilhada.gif" width="650" height="5" border="0" alt="">
</div>
<div style="position:absolute;top:467px;left:15px;z-index:2;" class="Titulo11">
Local de pagamento
</div> 
<div style="position:absolute;top:467px;left:480px;z-index:2;" class="Titulo11">
Vencimento
</div>
<div style="position:absolute;top:492px;left:15px;z-index:2;" class="Titulo11">
Cedente
</div>
<div style="position:absolute;top:492px;left:480px;z-index:2;" class="Titulo11">
Agência/Código do cedente
</div>
<div style="position:absolute;top:517px;left:15px;z-index:2;" class="Titulo11">
Data do documento
</div>
<div style="position:absolute;top:517px;left:133px;z-index:2;" class="Titulo11">
Nº do documento
</div>
<div style="position:absolute;top:517px;left:295px;z-index:2;" class="Titulo11">
Espécie DOC
</div>
<div style="position:absolute;top:517px;left:364px;z-index:2;" class="Titulo11">
Aceite
</div>
<div style="position:absolute;top:517px;left:405px;z-index:2;" class="Titulo11">
Data process.
</div>
<div style="position:absolute;top:517px;left:480px;z-index:2;" class="Titulo11">
Nosso Número
</div>
<div style="position:absolute;top:542px;left:15px;z-index:2;" class="Titulo11">
Uso do Banco/Convênio
</div>
<div style="position:absolute;top:542px;left:133px;z-index:2;" class="Titulo11">
Carteira
</div>
<div style="position:absolute;top:542px;left:223px;z-index:2;" class="Titulo11">
Espécie
</div>
<div style="position:absolute;top:542px;left:283px;z-index:2;" class="Titulo11">
Quantidade
</div>
<div style="position:absolute;top:542px;left:405px;z-index:2;" class="Titulo11">
xValor
</div>
<div style="position:absolute;top:542px;left:480px;z-index:2;" class="Titulo11">
(=) Valor do documento
</div>
<div style="position:absolute;top:567px;left:15px;z-index:2;" class="Titulo11">
Instrucoes
</div>
<div style="position:absolute;top:567px;left:480px;z-index:2;" class="Titulo11">
(-) Desconto / Abatimento
</div>
<div style="position:absolute;top:592px;left:480px;z-index:2;" class="Titulo11">
(-) Outras deduções
</div> 
<div style="position:absolute;top:618px;left:480px;z-index:2;" class="Titulo11">
(+) Mora / Multa
</div>
<div style="position:absolute;top:643px;left:480px;z-index:2;" class="Titulo11">
(+) Outros acréscimos
</div>
<div style="position:absolute;top:668px;left:480px;z-index:2;" class="Titulo11">
(=) Valor cobrado
</div>
<div style="position:absolute;top:573px;left:463px;z-index:2;" class="Titulo11">
27
</div>
<div style="position:absolute;top:620px;left:463px;z-index:2;" class="Titulo11">
35
</div>
<div style="position:absolute;top:596px;left:463px;z-index:2;" class="Titulo11">
19
</div>
<div style="position:absolute;top:693px;left:15px;z-index:2;" class="Titulo11">
Sacado
</div>
<div style="position:absolute;top:739px;left:480px;z-index:2;" class="Titulo11">
Cód. baixa
</div> 
<div style="position:absolute;top:740px;left:15px;z-index:2;" class="Titulo11">
Sacador/Avalista
</div>
<div style="position:absolute;top:751px;left:470px;z-index:2;" class="Titulo11">
Autenticação mecânica - Ficha de Compensação
</div>
<div style="position:absolute;top:197px;left:15px;z-index:2;" class="Campo">
<%=cedente%>
</div>
<div style="position:absolute;top:197px;left:317px;z-index:2;width:120px;" class="Campo">
<%=agencia_codigo%>
</div>
<div style="position:absolute;top:197px;left:438px;z-index:2;width:28px;" class="Campo">
R$
</div>
<div style="position:absolute;top:197px;left:480px;z-index:2;width:50px;" class="Campo">
0001
</div>
<div style="position:absolute;top:197px;left:531px;z-index:2;width:118px;text-align:right;" class="Campo">
<%=nosso_numero%>
</div>
<div style="position:absolute;top:222px;left:15px;z-index:2;width:110px;" class="Campo">
<%=right("0000000000"& numero_documento, 10)%>
</div>
<div style="position:absolute;top:222px;left:135px;z-index:2;width:70px;" class="Campo">
<%=contrato%>
</div> 
<div style="position:absolute;top:222px;left:214px;z-index:2;width:125px;" class="Campo">
<%=cpf_cnpj%>
</div>
<div style="position:absolute;top:222px;left:353px;z-index:2;width:118px;" class="Campo">
<%=data_vencimento%>
</div>
<div style="position:absolute;top:222px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo">
<%=valor%>
</div>
<div style="position:absolute;top:247px;left:15px;z-index:2;width:108px;text-align:right;" class="Campo"></div>
<div style="position:absolute;top:247px;left:133px;z-index:2;width:107px;text-align:right;" class="Campo"></div>
<div style="position:absolute;top:247px;left:248px;z-index:2;width:108px;text-align:right;" class="Campo"></div>
<div style="position:absolute;top:247px;left:361px;z-index:2;width:108px;text-align:right;" class="Campo"></div>
<div style="position:absolute;top:247px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo"> </div>
<div style="position:absolute;top:272px;left:15px;z-index:2;" class="Campo">
<%=nome_sacado%>
</div>
<div style="position:absolute;top:312px;left:15px;z-index:2;width:498px;text-align:justify;" class="Campo">
<layer name="helpns" width=498px align="left"><%=instrucoes1%><br><%=instrucoes2%><br><%=instrucoes3%><br><%=instrucoes4%><br><%=instrucoes5%></layer>
</div> 
<div style="position:absolute;top:480px;left:15px;z-index:2;" class="Campo">
Pagável em qualquer Banco até o vencimento
</div>
<div style="position:absolute;top:480px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo">
<%=data_vencimento%>
</div>
<div style="position:absolute;top:505px;left:15px;z-index:2;" class="Campo">
<%=cedente%>
</div>
<div style="position:absolute;top:505px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo">
<%=agencia_codigo%>
</div>
<div style="position:absolute;top:530px;left:15px;z-index:2;width:110px;" class="Campo">
<%=data_documento%>
</div>
<div style="position:absolute;top:530px;left:133px;z-index:2;width:160px;" class="Campo">
<%=right("0000000000"& numero_documento, 10)%>
</div>
<div style="position:absolute;top:530px;left:295px;z-index:2;width:60px;" class="Campo">
<%=especie_doc%>
</div>

<div style="position:absolute;top:530px;left:364px;z-index:2;width:35px;" class="Campo">
<%=aceite%>
</div>
<div style="position:absolute;top:530px;left:405px;z-index:2;width:60px;" class="Campo">
<%=data_processamento%>
</div> 
<div style="position:absolute;top:530px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo">
<%=nosso_numero%> 
</div>
<div style="position:absolute;top:556px;left:15px;z-index:2;" class="Campo"> </div>
<div style="position:absolute;top:556px;left:133px;z-index:2;" class="Campo">
<%=carteira%>
</div>
<div style="position:absolute;top:556px;left:223px;z-index:2;" class="Campo">
<%=especie%>
</div>
<div style="position:absolute;top:556px;left:283px;z-index:2;" class="Campo"> </div>
<div style="position:absolute;top:556px;left:405px;z-index:2;width:65px;text-align:right;" class="Campo"></div>
<div style="position:absolute;top:556px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo">
<%=valor%>
</div>
<div style="position:absolute;top:580px;left:15px;z-index:2;width:430px;text-align:justify;" class="Campo">
<layer name="helpns" width=430px align="left"><%=instrucoes1%><br><%=instrucoes2%><br><%=instrucoes3%><br><%=instrucoes4%><br><%=instrucoes5%></layer>
</div>
<div style="position:absolute;top:580px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo"> </div>
<div style="position:absolute;top:605px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo"> </div>
<div style="position:absolute;top:631px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo"> </div>
<div style="position:absolute;top:656px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo"> </div>
<div style="position:absolute;top:581px;left:480px;z-index:2;width:169px;text-align:right;" class="Campo"> </div>
<div style="position:absolute;top:704px;left:15px;z-index:2;" class="Campo">
<%=nome_sacado%>
</div>
<div style="position:absolute;top:717px;left:15px;z-index:2;" class="Campo">
<%=endereco_sacado%>
</div>
<div style="position:absolute;top:830px;left:7px;z-index:2;" class="Titulo11">
Corte na linha pontilhada
</div>
<div style="position:absolute;top:827px;left:7px;z-index:2;" class="Titulo11">
<img src="imagens_bb/bblinhaPontilhada.gif" width="650" height="5" border="0" alt="">
</div>
<div style="position:absolute;top:760px;left:12px;height:70px;z-index:2;" class="Titulo11">
<table border=0 cellPadding=0 cellSpacing=0 width="666">
 <tr>
  <td colspan="2">
   <%
   function fbarcode(valor_barras)
    Dim f, f1, f2, i
    Dim texto
    Const fino = 1
    Const largo = 3
    Const altura = 50
    Dim BarCodes(99)
    if isempty(BarCodes(0)) then
     BarCodes(0) = "00110"
     BarCodes(1) = "10001"
     BarCodes(2) = "01001"
     BarCodes(3) = "11000"
     BarCodes(4) = "00101"
     BarCodes(5) = "10100"
     BarCodes(6) = "01100"
     BarCodes(7) = "00011"
     BarCodes(8) = "10010"
     BarCodes(9) = "01010"
     for f1 = 9 to 0 step -1
      for f2 = 9 to 0 Step -1
       f = f1 * 10 + f2
       texto = ""
       for i = 1 To 5
        texto = texto & mid(BarCodes(f1), i, 1) + mid(BarCodes(f2), i, 1)
       next
       BarCodes(f) = texto
      next
     next
    end if
    %>
    <img src=imagens_bb/p.gif width=<%=fino%> height=<%=altura%> border=0><img
    src=imagens_bb/b.gif width=<%=fino%> height=<%=altura%> border=0><img
    src=imagens_bb/p.gif width=<%=fino%> height=<%=altura%> border=0><img
    src=imagens_bb/b.gif width=<%=fino%> height=<%=altura%> border=0><img
    <%
    texto = valor_barras
    if len( texto ) mod 2 <> 0 then
     texto = "0" & texto
    end if
    do while len(texto) > 0
     i = cint( left( texto, 2) )
     texto = right( texto, len( texto ) - 2)
     f = BarCodes(i)
     for i = 1 to 10 step 2
      if mid(f, i, 1) = "0" then
       f1 = fino
      else
       f1 = largo
      end if
      %>
      src=imagens_bb/p.gif width=<%=f1%> height=<%=altura%> border=0><img
      <%
      if mid(f, i + 1, 1) = "0" Then
       f2 = fino
      else
       f2 = largo
      end if
      %>
      src=imagens_bb/b.gif width=<%=f2%> height=<%=altura%> border=0><img
      <%
     next
    loop
    %>
    src=imagens_bb/p.gif width=<%=largo%> height=<%=altura%> border=0><img
    src=imagens_bb/b.gif width=<%=fino%> height=<%=altura%> border=0><img
    src=imagens_bb/p.gif width=<%=1%> height=<%=altura%> border=0>
    <%
   end function
   %>
   <%=fbarcode(codbar)%>  
   </td>
  </tr>
 </table>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera esse tópico para complementar o 1º sobre "Boleto Bancário" lembrando que o exemplo que estou dando e de boleto da "caixa econômica federal" e para cobrança não registrada.

Segue link do primeiro tópico: 1º parte Boleto Bancario

 

Exemplo que estou usando para linha digitavel:

EX: (10492.34561) (70000.200047) (00000.000417) (4) (50860000006456)

(BBBML.LLLLd) (LLLLL.LLLLLd) (LLLLL.LLLLLd) (G) (DDDDVVVVVVVVVV)

 

- Montando Campo5 composto pela Data De Vencimento e o Valor do Documento ao todo 14 posições 4 pra data e 10 para o valor

 

Bom para montar-mos o campo5 o que é preciso?

 

1º) Fator Data Vencimento. Como Calculamos a data pra ficar apenas 4 dígitos?

-Você vai precisar de uma Data Base informada pelos bancos e da Data de vencimento do boleto, depois você vai ter que pegar a quantidade de dias entre a Data Base e a Data de Vencimento;

<%
'Informando a data de vencimento
Data_Vencimento = "10/09/2011"
'fator_Vencimento esta recebendo o valor da função para calcular o vencimento(Calcula_Vencimento(Data_Vencimento))
Fator_Vencimento = Calcula_Vencimento(Data_Vencimento)

'pedindo para escrever o resultado da função abaixo:
Response.Write("Vencimento e: "&Fator_Vencimento&"=10/09/2011 <br/>")

'função para calcular o fator vencimento da 1ª a 4ª posição do campo5
function Calcula_Vencimento(Vencimento)

'data base informada pelos bancos = 07/10/1997
Data_Base = "07/10/1997"

'FT_Vencimento esta recebendo através da função DateDiff a quantidade de dias (parametro "d") entre a Data Base (Data_Base) e a data de vencimento (Vencimento) informada
FT_Vencimento = DateDiff("d",Data_Base,Vencimento)

Calcula_Vencimento = FT_Vencimento
'final da função com End Function
End Function

%>

2º da 5ª a 14ª posição do campo livre entra o valor do documento, onde o valor do boleto vai ficar da direita para esquerda, as posições que faltarem para completar 10 posições serão preenchidas obrigatoriamente com zero (0):

<%
'informando o valor do boleto
valor_doc = "18456"
'passando o valor para a função Valor() que e utilizada pra preencher as posições que faltarem para completar 10 posições com zero (0)
ValorBoleto = Valor(valor_doc)

function Valor(strNumero)
'laço dizendo (atravez da função LEN que conta quantidade de caracter que a string possui no exemplo valor_doc = "18456" é (5)) enquanto o valor passado form menor que 10 caracter ele fara o seguinte comando:
while len(strNumero)<10
'colocara 0 antes do valor 
strNumero = "0"&strNumero
wend

Valor = strNumero	

end function
%>

 

3º vamos unir tudo e montar o campo5 da linha digitável código barras do boleto bancário


valor_doc = "18456"
ValorBoleto = Valor(valor_doc)
Data_Vencimento = "10/09/2011"
Fator_Vencimento = Calcula_Vencimento(Data_Vencimento)

campo5 = Fator_Vencimento&ValorBoleto

'escrevendo o campo 5 
Response.Write("Campo5: "&campo5&"<br/>")

function Valor(strNumero)
while len(strNumero)<10
strNumero = "0"&strNumero
wend
Valor = strNumero	
end function

function Calcula_Vencimento(Vencimento)
Data_Base = "07/10/1997"
FT_Vencimento = DateDiff("d",Data_Base,Vencimento)

Calcula_Vencimento = FT_Vencimento
End Function

 

Por enquanto so proxima entro explicando o que e o campo livre do boleto e os modulos 10 e 11

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho aqui também algumas informações sobre boletos, irei fazer um tópico e colocar no lab. de script, fica legal também...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.