<?php /* Desenvolvido por Jos� Robson da Silva Santos http://www.achegratis.com Msn: robson123@msn.com FONTE DESENVOLVIDO BASEADO NO CNAB DISTRIBUIDO PELO BANCO REAL USANDO GERADOR DE C�DIGO DE BARRAS PADR�O DA FENABRAN */ $dataprocessamento='20/02/2006';//data de hoje // IN�CIO DA �REA DE CONFIGURA��O //--dados para calculo de digit�o da cobran�a $nossonumero ='0000000000123'; // N�mero de controle do Emissor (pode usar qq n�mero de at� 13 digitos); $agencia = '0123'; // 4 posi��es $conta = '1234567'; // 7 posi��es sem d�gito //---------------------------------------------- //ALGUNS DADOS DA P�GINA //---------------------------------------------- $codigobanco = '356'; // O real sempre ser� este n�mero $carteira = '57'; // A sem registro � 175 para o REAL $moeda = '9'; // Sempre ser� 9 pois deve ser em Real $data = '05/03/2005'; // Data de emiss�o do boleto $vencimento = '28/07/2006'; // Data no formato dd/mm/yyyy $valor = '224.50'; // Colocar PONTO no formato REAIS.CENTAVOS (ex: 666.01) // NOS CAMPOS ABAIXO, PREENCHER EM MAI�SCULAS E DESPREZAR ACENTUA��O, CEDILHAS E // CARACTERES ESPECIAIS (REGRAS DO BANCO) $cedente = 'ACME SISTEMAS'; $sacado = 'JORONJOJA DA SILVA'; $endereco ='RUA DO COCO DO PAPICU, 12'; $bairro='BAIRRO DO COCO'; $cidade = 'FORTALEZA'; $estado = 'CE'; $cep = '12239-231'; $cpf = 'CPF: 315.221.445.96'; $instrucoes1 = 'COBRAR 0,90 POR DIA DE ATRASO'; $instrucoes2 = 'NAO ACEITAR DEPOIS DE 15/02'; $instrucoes3 = 'SUJEITO A PROTESTO'; $instrucoes4 = ''; $instrucoes5 = 'www.empresa.com.br'; $instrucao="Ap�s o Vencimento, corrigir pelo IGPM/FGV <br> Cobrar JUROS de 1% ao m�s e MULTA de 10%<br> Pagável em qualquer ag�ncia bancária até o vencimento; "; // FIM DA �REA DE CONFIGURA��O $resultad="$nossonumero$agencia$conta"; //########################################################################################################## //########################################################################################################## function CALCULADIGITO($linhadigitavel,$repeticao,$indice1,$indice2) { //linhadigitavel - � a string do calculo //$repeti��o - n de vezes para repeticao em FOR //$indice1 e $indice2= fator para multiplica��o ex: 2,1,2,1.. for($i=0;$i<$repeticao;$i++) { $t=$i%2; if($t==0)//indica que � par e faz 1 situacao... para achar digit�o... precisa multiplicar por 2,1,2,1.... { $res1[$i]=$linhadigitavel[$i]*$indice1;//sequ�ncia de multiplica��o if($res1[$i]>=10)//se o digito for maior que 10 ter� que separar e somar: 12 = 1+2=3 { $t=0; //maximo a ser calculado � 9*2=18 por isso irei subtrair 10 para dividir os digitos e somar $t=$res1[$i]; //1� digito $y=substr($t,0,1); //2� digito $h=substr($t,1,2); $t=$y+$h; $linhadigitavel[$i]=$t; } else { $linhadigitavel[$i]=$res1[$i]; } } else//faz 2 situacao { $res1[$i]=$linhadigitavel[$i]*$indice2;//sequ�ncia de multiplica��o $linhadigitavel[$i]=$res1[$i]; } } for($i=0;$i<$repeticao;$i++) { $som+=$linhadigitavel[$i]; } $soma=$som/10; $restodivisao=explode(".",$soma); //finalizando $codigo=10 - $restodivisao[1]; if($codigo==10) { $codigo=0; } return $codigo; } //########################################################################################################## //########################################################################################################## //calculando o digit�o da cobran�a function digitaocobranca($resultado) { for($i=0;$i<24;$i++) { $t=$i%2; if($t==0)//indica que � par e faz 1 situacao... para achar digit�o... precisa multiplicar por 1,2,1,2,1.... { $res1=$resultado[$i]*1;//sequ�ncia de multiplica��o $subtotal[$i]=$res1; } else//faz 2 situacao { $res1=$resultado[$i]*2;//sequ�ncia de multiplica��o $subtotal[$i]=$res1; } } $soma=0; for($i=0;$i<24;$i++) { if($subtotal[$i]>=10)//se o digito for maior que 10 ter� que separar e somar: 12 = 1+2=3 { $t=0; //maximo a ser calculado � 9*2=18 por isso irei subtrair 10 para dividir os digitos e somar $t=$subtotal[$i]; //1� digito $y=substr($t,0,1); //2� digito $h=substr($t,1,2); $t=$y+$h; $subtotal[$i]=$t; } $resultante+="$subtotal[$i]"; } //1� digito //$y=substr($resultante,0,1); //2� digito //$h=substr($resultante,1,2); $soma=$resultante/10; $restodivisao=explode(".",$soma); //finalizando $codigo=10 - $restodivisao[1]; if($codigo==10) { $codigo=0; } return $codigo; } //########################################################################################################## //########################################################################################################## $digitao=digitaocobranca($resultad); //FAZENDO MODULO LINHA DIGIT�VEL //1�modulo $linhadigitavel=$codigobanco; $linhadigitavel.=9; $linhadigitavel.=substr($agencia,0,1); $linhadigitavel.='.'; $linhadigitavel.=substr($agencia,1,3); $linhadigitavel.=substr($conta,0,1); //tiro o ponto por um instante $varsemuso=explode(".",$linhadigitavel); $varsemuso2="$varsemuso[0]$varsemuso[1]"; //calcula o digito $digito1=CALCULADIGITO($varsemuso2,9,2,1); //calculando o digit�o do primeiro bloco //***************************************** //BLOCO 1 $linhadigitavel.=$digito1; //***************************************** //########################################################################################################## //########################################################################################################## //FAZENDO MODULO LINHA DIGIT�VEL //2�modulo $linhadigitavel2=substr($conta,1,5); $linhadigitavel2.='.'; $linhadigitavel2.=substr($conta,6,7); $linhadigitavel2.=$digitao; $linhadigitavel2.=substr($nossonumero,1,3); //tiro o ponto por um instante $varsemuso=explode(".",$linhadigitavel2); $varsemuso2="$varsemuso[0]$varsemuso[1]"; //calcula o digito $linhadigitavel2.=CALCULADIGITO($varsemuso2,10,1,2); //########################################################################################################## //########################################################################################################## //FAZENDO MODULO LINHA DIGIT�VEL //3�modulo //$nossonumero = '0000000003025'; //TENTEI EXEMPLIFICAR O QUE O SUBSTR FAZ $linhadigitavel3="$nossonumero[3]$nossonumero[4]$nossonumero[5]$nossonumero[6]$nossonumero[7]"; $linhadigitavel3.='.'; $linhadigitavel3.="$nossonumero[8]$nossonumero[9]$nossonumero[10]$nossonumero[11]$nossonumero[12]"; //tiro o ponto por um instante $varsemuso=explode(".",$linhadigitavel3); $varsemuso2="$varsemuso[0]$varsemuso[1]"; //calcula o digito $linhadigitavel3.=CALCULADIGITO($varsemuso2,10,1,2); //########################################################################################################## //########################################################################################################## //FAZENDO MODULO LINHA DIGIT�VEL //4�modulo function calculaValor ($valor) { $valor = str_replace('.','',$valor); return str_repeat('0',(10-strlen($valor))).$valor; } function calculaFatorVencimento ($dia,$mes,$ano) { $vencimento = mktime(0,0,0,$mes,$dia,$ano)-mktime(0,0,0,7,3,2000); return ceil(($vencimento/86400)+1000); } //recebe calculo de fator mil datada vencimento $linhadigitavel4=calculaFatorVencimento(substr($vencimento,0,2),substr($vencimento,3,2),substr($vencimento,6,4)).calculaValor($valor); //########################################################################################################## //########################################################################################################## //FAZENDO MODULO LINHA DIGIT�VEL //FAZENDO O CALCULO DO DIGIT�O DO C�DIGO DE BARRAS $tudo=$codigobanco.$moeda.$linhadigitavel4.$agencia.$conta.$digitao.$nossonumero; function digitaocodigobarras($valor) { $multiplicador = '4329876543298765432987654329876543298765432'; for ($i = 0; $i<=42; $i++ ) { $parcial = $valor[$i] * $multiplicador[$i]; $total += $parcial; } $resultado = 11-($total%11); if (($resultado >= 10)||($resultado == 0)) { $resultado = 1; } return $resultado; } $digitaocodbarras=digitaocodigobarras($tudo); //########################################################################################################## //########################################################################################################## //fatorvencimentosemvalor //$linhadigitavel4 - � o fator vencimento + valor $CODIGOBARRAS=$codigobanco.$moeda.$digitaocodbarras.$linhadigitavel4.$agencia.$conta.$digitao.$nossonumero; //########################################################################################################## //echo("<h1>$CODIGOBARRAS</h1>"); //PARTE ALUSIVA AO NUMERO DIGIT�VEL $esp=" "; $numero_boleto=$linhadigitavel; $numero_boleto.=$esp.$esp; $numero_boleto.=$linhadigitavel2; $numero_boleto.=$esp.$esp; $numero_boleto.=$linhadigitavel3; $numero_boleto.=$esp.$esp.$esp; $numero_boleto.=$digitaocodbarras; $numero_boleto.=$esp.$esp.$esp; $numero_boleto.=$linhadigitavel4; // IMPRESS�O DOS RESULTADOS OBTIDOS echo(" <html><head> <script language=\"JavaScript\"> var da = (document.all) ? 1 : 0; var pr = (window.print) ? 1 : 0; var mac = (navigator.userAgent.indexOf(\"Mac\") != -1); function x86(){ if (pr) // NS4, IE5 window.print() else if (da && !mac) // IE4 (Windows) vbx86() else // outros browsers alert(\"Desculpe seu browser n�o suporta esta funç�o. Por favor utilize a barra de trabalho para imprimir a página.\"); return false;} if (da && !pr && !mac) with (document) { writeln('<OBJECT ID=\"WB\" WIDTH=\"0\" HEIGHT=\"0\" CLASSID=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\"></OBJECT>'); writeln('<' + 'SCRIPT LANGUAGE=\"VBScript\">'); writeln('Sub window_onunload'); writeln(' On Error Resume Next'); writeln(' Set WB = nothing'); writeln('End Sub'); writeln('Sub vbx86'); writeln(' OLECMDID_PRINT = 6'); writeln(' OLECMDEXECOPT_DONTPROMPTUSER = 2'); writeln(' OLECMDEXECOPT_PROMPTUSER = 1'); writeln(' On Error Resume Next'); writeln(' WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER'); writeln('End Sub'); writeln('<' + '/SCRIPT>');} </script> <style type=\"text/css\"> .ti { FONT: 9px Arial, Helvetica, sans-serif } .ct { FONT: 9px \"Arial Narrow\"; COLOR: #000000} .cn { FONT: 9px Arial; COLOR: black } .cp { FONT: bold 11px Arial; COLOR: black } .ld { FONT: bold 15px Arial; COLOR: #000000 } .bc { FONT: bold 18px Arial; COLOR: #000000 } </style></head><body><center> <table cellpadding=\"0\" cellspacing=\"0\"> <tbody><tr> <td class=\"ti\" valign=\"top\"><div align=\"center\">Instruções de Impress�o </div></td> </tr> <tr> <td class=\"ti\" valign=\"top\"><div align=\"center\">Imprimir em impressora jato de tinta (ink jet) ou laser em qualidade normal. (N�o use modo econ�mico). <br> Utilize folha A4 (210 x 297 mm) ou Carta (216 x 279 mm) - Corte na linha indicada <br> </div></td> </tr> <tr> <td class=\"ti\" valign=\"top\"><div class=\"cp\" align=\"center\"> </div></td> </tr> </tbody></table> <br> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"660\"> <tbody><tr> <td class=\"cp\" width=\"150\"><div align=\"left\"><img src=\"boletoreal_arquivos/real.gif\" height=\"34\" width=\"136\"></div></td> <td valign=\"bottom\" width=\"3\"><img src=\"boletoreal_arquivos/barra.gif\" border=\"0\" height=\"22\" width=\"2\"></td> <td class=\"cpt\" valign=\"bottom\" width=\"58\"><div align=\"center\"><font class=\"bc\">356-5</font></div></td> <td valign=\"bottom\" width=\"3\"><img src=\"boletoreal_arquivos/barra.gif\" border=\"0\" height=\"22\" width=\"2\"></td> <td class=\"ld\" align=\"right\" valign=\"bottom\" width=\"453\"><p align=\"right\"> <font class=\"ld\"><b>RECIBO DO SACADO</b></font></p></td> </tr> </tbody></table> <table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"660\"> <tbody><tr> <td colspan=\"2\"><font class=\"ct\">Cedente</font><br><font class=\"cp\"> $cedente</font></td> <td width=\"15%\"><font class=\"ct\">Agência / C�digo Cedente</font><br> <font align=\"center\" class=\"cn\"> $agencia / $conta / $digitao</font></td> <td width=\"15%\"><font class=\"ct\">Nosso Número</font><br><font class=\"cn\"> $nossonumero</font></td> <td width=\"20%\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tbody><tr><td align=\"left\"><font class=\"ct\">Vencimento</font></td></tr> <tr><td align=\"center\"><font class=\"cp\">$vencimento</font></td></tr> </tbody></table> </td> </tr> <tr> <td colspan=\"2\"><font class=\"ct\">Sacado</font><br><font class=\"cp\"> $sacado</font></td> <td width=\"15%\"><font class=\"ct\">Data Processamento</font><br><font align=\"center\" class=\"cn\"> $dataprocessamento</font></td> <td width=\"15%\"><font class=\"ct\">Número Documento</font><br><font class=\"cn\"> $numerodocumento</font></td> <td width=\"20%\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tbody><tr><td align=\"left\"><font class=\"ct\">Valor do Documento</font></td></tr> <tr><td align=\"center\"><font class=\"cp\">$valor</font></td></tr> </tbody></table> </td> </tr> <tr> <td><font class=\"ct\">CPF / CNPJ</font><br><font class=\"cp\"> $cpf</font></td> <td width=\"15%\"><font class=\"ct\">(-) Desconto / Abatimento</font><br><font class=\"cp\"><br></font></td> <td width=\"15%\"><font class=\"ct\">(-) Outras Deduções</font><br><font class=\"cn\"><br></font></td> <td width=\"15%\"><font class=\"ct\">(+) Mora / Multa</font><br><font class=\"cn\"><br></font></td> <td width=\"20%\"><font class=\"ct\">(=) Valor Cobrado</font><br> <font class=\"cp\"><br> </font></td> </tr> <tr> <td colspan=\"5\" align=\"left\" valign=\"top\"> <font class=\"ct\">Observações:</font><br> <font class=\"cn\">$dr</font> <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"640\"> <tbody><tr> <td align=\"left\" valign=\"top\"> <font class=\"cn\"> <b> $linha1<br> $linha2<br> $linha3<br> $linha4<br> $linha5<br> $linha6<br></b> </font> </td> </tr> </tbody></table> </td> </tr> </tbody></table> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"660\"> <tbody><tr> <td align=\"right\"><font class=\"ct\">Autenticaç�o Mec�nica</font><br><br><br></td> </tr> </tbody></table> <img src=\"boletoreal_arquivos/corte.gif\" border=\"0\" width=\"660\"><br><br> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"660\"> <tbody><tr> <td class=\"cp\" width=\"150\"><div align=\"left\"><img src=\"boletoreal_arquivos/real.gif\" height=\"34\" width=\"136\"></div></td> <td valign=\"bottom\" width=\"3\"><img src=\"boletoreal_arquivos/barra.gif\" border=\"0\" height=\"22\" width=\"2\"></td> <td class=\"cpt\" valign=\"bottom\" width=\"58\"><div align=\"center\"><font class=\"bc\">356-5</font></div></td> <td valign=\"bottom\" width=\"3\"><img src=\"boletoreal_arquivos/barra.gif\" border=\"0\" height=\"22\" width=\"2\"></td> <td class=\"ld\" align=\"right\" valign=\"bottom\" width=\"453\"> <font class=\"ld\">$numero_boleto</font></td> </tr> </tbody></table> <table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"660\"> <tbody><tr> <td colspan=\"5\" width=\"500\"> <font class=\"ct\">Local de Pagamento</font><br> <font class=\"cp\"> ATÉ O VENCIMENTO PAGÁVEL EM QUALQUER BANCO</font> </td> <td width=\"170\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tbody><tr><td align=\"left\"><font class=\"ct\">Vencimento</font></td></tr> <tr><td align=\"center\"><font class=\"cp\">$vencimento</font></td></tr> </tbody></table> </td> </tr> <tr> <td colspan=\"5\" width=\"500\"><font class=\"ct\">Cedente</font><br><font class=\"cn\"> </font><font class=\"cp\">$cedente</font></td> <td width=\"170\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tbody><tr><td align=\"left\"><font class=\"ct\">Agência / C�digo Cedente</font></td></tr> <tr><td align=\"center\"> <font align=\"center\" class=\"cn\">$agencia / $conta / $digitao</font></td></tr> </tbody></table> </td> </tr> <tr> <td valign=\"top\"><font class=\"ct\">Data Documento</font><br><font class=\"cn\"> $dataprocessamento</font></td> <td valign=\"top\"><font class=\"ct\">Número Documento</font><br><font class=\"cn\"> $numerodocumento</font></td> <td valign=\"top\"><font class=\"ct\">Tipo Docu.</font><br> <font class=\"cn\"> DM</font></td> <td valign=\"top\"><font class=\"ct\">Aceite</font><br><font class=\"cn\"> N</font></td> <td valign=\"top\"><font class=\"ct\">Data Processamento</font><br><font class=\"cn\"> </font><font align=\"center\" class=\"cn\">$dataprocessamento</font></td> <td width=\"170\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tbody><tr><td align=\"left\"><font class=\"ct\">Nosso Número</font></td></tr> <tr> <td align=\"center\"><font class=\"cn\">$nossonumero</font></td> </tr> </tbody></table> </td> </tr> <tr> <td valign=\"top\"><font class=\"ct\">Uso Banco</font><br><font class=\"cn\"> </font></td> <td valign=\"top\"><font class=\"ct\">Carteira</font><br><font class=\"cn\"> $carteira</font></td> <td valign=\"top\"><font class=\"ct\">Espécie</font><br><font class=\"cn\"> R$</font></td> <td valign=\"top\"><font class=\"ct\">Quantidade</font><br><font class=\"cn\"> </font></td> <td valign=\"top\"><font class=\"ct\">Valor</font><br><font class=\"cn\"> </font></td> <td width=\"170\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tbody><tr><td align=\"left\"><font class=\"ct\">Valor do Documento</font></td></tr> <tr><td align=\"center\"><font class=\"cp\">$valor</font></td></tr> </tbody></table> </td> </tr> <tr> <th colspan=\"5\" rowspan=\"4\" align=\"left\" valign=\"top\"><font class=\"ct\">Instruções</font><br> <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"475\"> <tbody><tr> <td align=\"left\" valign=\"top\"> <font class=\"cn\"> <b> $instrucao<br></b> </font> </td> </tr> </tbody></table> </th> <td width=\"170\"><font class=\"ct\">(-) Desconto / Abatimento</font><br><font class=\"cn\"> </font></td> </tr> <tr> <td width=\"170\"><font class=\"ct\">(-) Outras Deduções</font><br><font class=\"cn\"> </font></td> </tr> <tr> <td width=\"170\"><font class=\"ct\">(+) Mora / Multa</font><br><font class=\"cn\"> </font></td> </tr> <tr> <td width=\"170\"><font class=\"ct\">(=) Valor Cobrado</font><br> <font class=\"cn\"> </font></td> </tr> <tr> <td colspan=\"6\" valign=\"top\"> <font class=\"ct\">Sacado</font><br> <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"640\"> <tbody><tr> <td align=\"left\" valign=\"top\"> <font class=\"cn\"> $sacado - $cpf<br> $endereco<br> $bairro<br> $cep - $cidade - $estado</font></td> </tr> </tbody></table> </td> </tr> </tbody></table> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"660\"> <tbody><tr> <td class=\"ct\" align=\"right\"> <div align=\"right\">Autenticaç�o Mec�nica - <b class=\"cp\">Ficha de Compensaç�o</b></div> </td> </tr> <tr> <td align=\"left\"> <!--IMPRESSAO DAS BARRAS--> <img src=\"codigodebarra.php?valor=$CODIGOBARRAS\"> </td> </tr> </tbody></table> <br> <img src=\"boletoreal_arquivos/corte.gif\" border=\"0\" width=\"660\"> <br> <table border=\"0\" cellpadding=\"0\" cellspacing=\"5\" width=\"640\"> <tbody><tr> <form name=\"forma\"></form> <td align=\"center\"><input value=\" Imprimir Boleto\" onclick=\"x86()\" name=\"button\" type=\"button\"></td> </tr> </tbody></table> </center> </body></html> "); ?>