Ir para conteúdo

Arquivado

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

rnicson

Problema ao gerar vários boletosPHP

Recommended Posts

Estou com alguns problemas ao gerar boletos em massa usando o sistema de código aberto BoletoPHP,pois preciso fazer com que centenas de boletos sejam gerados em um script através de informações vindas do Banco de dados.

Esses boletos sejam armazenados no servidor dentro de uma pasta onde eu possa efetuar o download deles posteriormente ou envia-los por email.

Mas estou com problemas nas informações vinda da Função_itau,pois a linha do código de barras está vindo com valor de um unico registro em todos os boletos.

E esse sistema deve gerar 126 boleto atualmente mas está gerando apenas 44 por conta da função ob_start() onde testei retirando ela e são gerados todos os 126 registros do banco mas não mostra o boleto no pdf.

Peço a ajuda de alguém que saiba como resolver essa questão que aparentemente é simples,mas estou tendo problemas.

 

Arquivo Que gera o Boleto

<?php
    $mysqli = new mysqli("localhost", "", "", "");
    $query = "SELECT * FROM gerar_boleto";
    $query2 = "SELECT * FROM boletos_gerados ORDER BY id DESC";
    $result = $mysqli->query($query);
    $result2 = $mysqli->query($query2);
    $row2 = $result2->fetch_assoc();
    
    $nosso_Numero = $row2['nosso_numero'];
    while ($row = $result->fetch_assoc()) {
    $valores = $row['valor_boleto'];
    $cliente = $row['cliente'];
    $cnpj = $row['cnpj'];
    $email = $row['email'];
    $documento = $row['documento'];
    $vencimento = $row['data_vencimento'];
    $data_vencimento = date("d/m/Y",strtotime("$vencimento"));
    
    $documento = $row['data_documento'];
    $data_documento = date("d/m/Y",strtotime("$documento"));
    $vencimento_remessa = date("Y-m-d",strtotime("$vencimento"));
    $documento_remessa = date("Y-m-d",strtotime("$documento"));
    $endereco = $row['endereco'];
    $bairro = $row['bairro'];
    $cep = $row['cep'];
    $cidade = $row['cidade'];
    $estado = $row['estado'];
    $id = $row['id'];
    $data = date('m');
    $numero_Documento = "CONT-".date('m')."/".date('Y');
    $posicao_Numero = '320000'.$id;
    $data_atual = date("Y");
    $registro = $posicao_Numero;

// DADOS DO BOLETO PARA O SEU CLIENTE
$dias_de_prazo_para_pagamento = 0;
$taxa_boleto = "0,00";
$data_venc = $data_vencimento;  // Prazo de X dias OU informe data: "13/04/2006"; 
$valor_cobrado = $valores; // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
$valor_cobrado = str_replace(",", ".",$valor_cobrado);
$valor_boleto=number_format($valor_cobrado+$taxa_boleto, 2, ',', '');

$dadosboleto["nosso_numero"] = $posicao_Numero;  // Nosso numero - REGRA: M�ximo de 8 caracteres!
$dadosboleto["numero_documento"] = $numero_Documento;	// Num do pedido ou nosso numero
$dadosboleto["data_vencimento"] = $data_venc; // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
$dadosboleto["data_documento"] = $data_documento; // Data de emiss�o do Boleto
$dadosboleto["data_processamento"] = $data_documento; // Data de processamento do boleto (opcional)
$dadosboleto["valor_boleto"] = $valores; 	// Valor do Boleto - REGRA: Com v�rgula e sempre com duas casas depois da virgula

// DADOS DO SEU CLIENTE
$dadosboleto["sacado"] = $cliente .' - '. $cnpj;
$dadosboleto["endereco1"] = $endereco. '-' .$bairro;
$dadosboleto["endereco2"] = $cidade. '-'. $estado. '-  CEP:'. $cep;

// INFORMACOES PARA O CLIENTE
$dadosboleto["demonstrativo1"] = "Filiação - ";
$dadosboleto["demonstrativo2"] = "Contribuição REF. JANEIRO/2019";
$dadosboleto["demonstrativo3"] = " - https://www..org.br";
$dadosboleto["instrucoes1"] = "- Sr. Caixa, não receber após o vencimento";
$dadosboleto["instrucoes2"] = "";
$dadosboleto["instrucoes3"] = "- Em caso de dúvidas entre em contato conosco: ";
$dadosboleto["instrucoes4"] = "  Emitido por ";

// DADOS OPCIONAIS DE ACORDO COM O BANCO OU CLIENTE
$dadosboleto["quantidade"] = "1";
$dadosboleto["valor_unitario"] = $valores;
$dadosboleto["aceite"] = "S";		
$dadosboleto["especie"] = "R$";
$dadosboleto["especie_doc"] = "R$";


// ---------------------- DADOS FIXOS DE CONFIGURAÇÃO DO SEU BOLETO --------------- //


// DADOS DA SUA CONTA - SICREDI
$dadosboleto["agencia"] = "1111"; // Num da agencia, sem digito
$dadosboleto["conta"] = "22222";	// Num da conta, sem digito
$dadosboleto["conta_dv"] = "2"; 	// Digito do Num da conta

// DADOS PERSONALIZADOS - SICREDI
$dadosboleto["carteira"] = "109";

// SEUS DADOS
$dadosboleto["identificacao"] = "NOME";
$dadosboleto["cpf_cnpj"] = "CNPJ";
$dadosboleto["endereco"] = "ENDEREÇO";
$dadosboleto["cidade_uf"] = "CIDADE / ESTADO";
$dadosboleto["cedente"] = "CEDENTE";

ob_start();

// NÃO ALTERAR!
include_once("include/funcoes_itau.php"); 
include("include/layout_sicredi.php");

$content = ob_get_clean();

// convert
require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');
try
{
	$html2pdf = new HTML2PDF('P','A4','fr', array(0, 0, 0, 0));
	/* Abre a tela de impressão */
	//$html2pdf->pdf->IncludeJS("print(true);");
	
	$html2pdf->pdf->SetDisplayMode('real');
	
	/* Parametro vuehtml = true desabilita o pdf para desenvolvimento do layout */
	$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
	
	/* Abrir no navegador */
	//$html2pdf->Output('boleto.pdf');
	
	mkdir('boletos/'.date('m-Y'));
	
	
	
	/* Salva o PDF no servidor para enviar por email */
	$html2pdf->Output('boletos/'.date('m-Y').'/'.$id.'.pdf', 'F');
	
	/* Força o download no browser */
	//$html2pdf->Output('boleto'.$id.'.pdf', 'D');
}
catch(HTML2PDF_exception $e) {
	echo $e;
	exit;
	
}
/*
// Inclui o arquivo class.phpmailer.php localizado na pasta class
require_once("PHPMailer_5.2.0/class.phpmailer.php");

// Inicia a classe PHPMailer
$mail = new PHPMailer(true);
 
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
 
try {
     $mail->Host = ''; // Endereço do servidor SMTP (Autenticação, utilize o host smtp.seudomínio.com.br)
     $mail->SMTPAuth   = true;  // Usar autenticação SMTP (obrigatório para smtp.seudomínio.com.br)
     $mail->Port       = 587; //  Usar 587 porta SMTP
     $mail->Username = ''; // Usuário do servidor SMTP (endereço de email)
     $mail->Password = ''; // Senha do servidor SMTP (senha do email usado)
 
     //Define o remetente
     // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=    
     $mail->SetFrom('', ''); //Seu e-mail
     $mail->AddReplyTo('', ''); //Seu e-mail
     $mail->CharSet = 'utf-8';
     $mail->Subject = '';//Assunto do e-mail
 
 
     //Define os destinatário(s)
     //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     $mail->AddAddress($email, $cliente);
 
     //Campos abaixo são opcionais 
     //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     //$mail->AddCC('destinarario@dominio.com.br', 'Destinatario'); // Copia
     //$mail->AddBCC('destinatario_oculto@dominio.com.br', 'Destinatario2`'); // Cópia Oculta
     $mail->AddAttachment('boletos/'.date('m-Y').'/'.$cliente.'.pdf');      // Adicionar um anexo
 
 
     //Define o corpo do email
     $mail->MsgHTML("<p>Bom dia</p> 
<p>Prezada Filiada,</p>   
<p></p>  
<p>Segue em anexo boleto referente a contribuição,</p>
<p></p> 
<p></p>  
<p></p>  
<p></p> 
<p></p> 
<p>Dúvidas estou à disposição</p> 
<p>Atenciosamente</p> 


<table border='0' cellpadding='0' cellspacing='0' style='width:347px;' width='347'>
	<tbody>
		<tr>
			<td style='width:205px;height:86px;'>
				<p>
					<img alt='dezembro laranja' height='68' src='https://www.SITE.org.br/mail.jpg' width='217' /></p>
			</td>
			<td style='width:142px;height:86px;'>
				<p>
					<strong></strong></p>
				<p>
					<strong><em></em></strong></p>
				<p>
					<strong></strong></p>
				<p>
			</td>
		</tr>
	</tbody>
</table>
<p>
	 </p>
"); 
 
     ////Caso queira colocar o conteudo de um arquivo utilize o método abaixo ao invés da mensagem no corpo do e-mail.
     //$mail->MsgHTML(file_get_contents('arquivo.html'));
 
     $mail->Send();
     echo "Mensagem enviada com sucesso</p>\n";
 
    //caso apresente algum erro é apresentado abaixo com essa exceção.
    }catch (phpmailerException $e) {
      echo $e->errorMessage(); //Mensagem de erro costumizada do PHPMailer
}
*/

	
$sql="INSERT INTO boletos_gerados (id,nosso_numero, numero_documento, data_vencimento, data_documento, valor_boleto, id_cliente) VALUES ('','$registro','$numero_Documento','$data_vencimento','$data_documento','$valores','$id')";
$insert = $mysqli->query($sql);

$sql2="INSERT INTO boleto_filiadas (id,nosso_numero, numero_documento, data_vencimento, data_documento, valor, nome_cliente, tipo_documento, documento, logradouro, bairro, cep, cidade, estado) VALUES ('','$registro','$numero_Documento','$vencimento_remessa','$documento_remessa','$valores','$cliente','CNPJ','$cnpj','$endereco', '$bairro', '$cep', '$cidade', '$estado')";
$insert2 = $mysqli->query($sql2);
}

 

 

 

Arquivo que possui função para gerar linha do código de barras.

 

 

<?php
// +----------------------------------------------------------------------+
// | BoletoPhp - Versão Beta                                              |
// +----------------------------------------------------------------------+
// | Este arquivo está disponível sob a Licença GPL disponível pela Web   |
// | em http://pt.wikipedia.org/wiki/GNU_General_Public_License           |
// | Você deve ter recebido uma cópia da GNU Public License junto com     |
// | esse pacote; se não, escreva para:                                   |
// |                                                                      |
// | Free Software Foundation, Inc.                                       |
// | 59 Temple Place - Suite 330                                          |
// | Boston, MA 02111-1307, USA.                                          |
// +----------------------------------------------------------------------+

// +----------------------------------------------------------------------+
// | Originado do Projeto BBBoletoFree que tiveram colaborações de Daniel |
// | William Schultz e Leandro Maniezo que por sua vez foi derivado do	  |
// | PHPBoleto de João Prado Maia e Pablo Martins F. Costa				  |
// | 																	  |
// | Se você quer colaborar, nos ajude a desenvolver p/ os demais bancos :-)|
// | Acesse o site do Projeto BoletoPhp: www.boletophp.com.br             |
// +----------------------------------------------------------------------+

// +----------------------------------------------------------------------+
// | Equipe Coordenação Projeto BoletoPhp: <boletophp@boletophp.com.br>   |
// | Desenvolvimento Boleto Itaú: Glauber Portella		                  |
// +----------------------------------------------------------------------+


$codigobanco = "341";
$codigo_banco_com_dv = geraCodigoBanco($codigobanco);
$nummoeda = "9";
$fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]);

//valor tem 10 digitos, sem virgula
$valor = formata_numero($valores,10,0,"valor");
//agencia é 4 digitos
$agencia = formata_numero($dadosboleto["agencia"],4,0);
//conta é 5 digitos + 1 do dv
$conta = formata_numero($dadosboleto["conta"],5,0);
$conta_dv = formata_numero($dadosboleto["conta_dv"],1,0);
//carteira 175
$carteira = $dadosboleto["carteira"];
//nosso_numero no maximo 8 digitos
$nnum = formata_numero($dadosboleto["nosso_numero"],8,0);

$codigo_barras = $codigobanco.$nummoeda.$fator_vencimento.$valor.$carteira.$nnum.modulo_10($agencia.$conta.$carteira.$nnum).$agencia.$conta.modulo_10($agencia.$conta).'000';
// 43 numeros para o calculo do digito verificador
$dv = digitoVerificador_barra($codigo_barras);
// Numero para o codigo de barras com 44 digitos
$linha = substr($codigo_barras,0,4).$dv.substr($codigo_barras,4,43);

$nossonumero = $carteira.'/'.$nnum.'-'.modulo_10($agencia.$conta.$carteira.$nnum);
$agencia_codigo = $agencia." / ". $conta."-".modulo_10($agencia.$conta);

$dadosboleto["codigo_barras"] = $linha;
$dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); // verificar
$dadosboleto["agencia_codigo"] = $agencia_codigo ;
$dadosboleto["nosso_numero"] = $nossonumero;
$dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;


// FUNÇÕES
// Algumas foram retiradas do Projeto PhpBoleto e modificadas para atender as particularidades de cada banco

function digitoVerificador_barra($numero) {
	$resto2 = modulo_11($numero, 9, 1);
	$digito = 11 - $resto2;
     if ($digito == 0 || $digito == 1 || $digito == 10  || $digito == 11) {
        $dv = 1;
     } else {
        $dv = $digito;
     }
	 return $dv;
}

function formata_numero($numero,$loop,$insert,$tipo = "geral") {
	if ($tipo == "geral") {
		$numero = str_replace(",","",$numero);
		while(strlen($numero)<$loop){
			$numero = $insert . $numero;
		}
	}
	if ($tipo == "valor") {
		/*
		retira as virgulas
		formata o numero
		preenche com zeros
		*/
		$numero = str_replace(",","",$numero);
		while(strlen($numero)<$loop){
			$numero = $insert . $numero;
		}
	}
	if ($tipo == "convenio") {
		while(strlen($numero)<$loop){
			$numero = $numero . $insert;
		}
	}
	return $numero;
}


function fbarcode($valor){

$fino = 1 ;
$largo = 3 ;
$altura = 50 ;

  $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;$f1>=0;$f1--){ 
    for($f2=9;$f2>=0;$f2--){  
      $f = ($f1 * 10) + $f2 ;
      $texto = "" ;
      for($i=1;$i<6;$i++){ 
        $texto .=  substr($barcodes[$f1],($i-1),1) . substr($barcodes[$f2],($i-1),1);
      }
      $barcodes[$f] = $texto;
    }
  }


//Desenho da barra


//Guarda inicial
?><img src=imagens/p.png width=<?php echo $fino?> height=<?php echo $altura?> border=0><img 
src=imagens/b.png width=<?php echo $fino?> height=<?php echo $altura?> border=0><img 
src=imagens/p.png width=<?php echo $fino?> height=<?php echo $altura?> border=0><img 
src=imagens/b.png width=<?php echo $fino?> height=<?php echo $altura?> border=0><img 
<?php
$texto = $valor ;
if((strlen($texto) % 2) <> 0){
	$texto = "0" . $texto;
}

// Draw dos dados
while (strlen($texto) > 0) {
  $i = round(esquerda($texto,2));
  $texto = direita($texto,strlen($texto)-2);
  $f = $barcodes[$i];
  for($i=1;$i<11;$i+=2){
    if (substr($f,($i-1),1) == "0") {
      $f1 = $fino ;
    }else{
      $f1 = $largo ;
    }
?>
    src=imagens/p.png width=<?php echo $f1?> height=<?php echo $altura?> border=0><img 
<?php
    if (substr($f,$i,1) == "0") {
      $f2 = $fino ;
    }else{
      $f2 = $largo ;
    }
?>
    src=imagens/b.png width=<?php echo $f2?> height=<?php echo $altura?> border=0><img 
<?php
  }
}

// Draw guarda final
?>
src=imagens/p.png width=<?php echo $largo?> height=<?php echo $altura?> border=0><img 
src=imagens/b.png width=<?php echo $fino?> height=<?php echo $altura?> border=0><img 
src=imagens/p.png width=<?php echo 1?> height=<?php echo $altura?> border=0> 
  <?php
} //Fim da função

function esquerda($entra,$comp){
	return substr($entra,0,$comp);
}

function direita($entra,$comp){
	return substr($entra,strlen($entra)-$comp,$comp);
}

function fator_vencimento($data) {
	$data = explode("/",$data);
	$ano = $data[2];
	$mes = $data[1];
	$dia = $data[0];
    return(abs((_dateToDays("1997","10","07")) - (_dateToDays($ano, $mes, $dia))));
}

function _dateToDays($year,$month,$day) {
    $century = substr($year, 0, 2);
    $year = substr($year, 2, 2);
    if ($month > 2) {
        $month -= 3;
    } else {
        $month += 9;
        if ($year) {
            $year--;
        } else {
            $year = 99;
            $century --;
        }
    }
    return ( floor((  146097 * $century)    /  4 ) +
            floor(( 1461 * $year)        /  4 ) +
            floor(( 153 * $month +  2) /  5 ) +
                $day +  1721119);
}

function modulo_10($num) { 
		$numtotal10 = 0;
        $fator = 2;

        // Separacao dos numeros
        for ($i = strlen($num); $i > 0; $i--) {
            // pega cada numero isoladamente
            $numeros[$i] = substr($num,$i-1,1);
            // Efetua multiplicacao do numero pelo (falor 10)
            // 2002-07-07 01:33:34 Macete para adequar ao Mod10 do Itaú
            $temp = $numeros[$i] * $fator; 
            $temp0=0;
            foreach (preg_split('//',$temp,-1,PREG_SPLIT_NO_EMPTY) as $k=>$v){ $temp0+=$v; }
            $parcial10[$i] = $temp0; //$numeros[$i] * $fator;
            // monta sequencia para soma dos digitos no (modulo 10)
            $numtotal10 += $parcial10[$i];
            if ($fator == 2) {
                $fator = 1;
            } else {
                $fator = 2; // intercala fator de multiplicacao (modulo 10)
            }
        }
		
        // várias linhas removidas, vide função original
        // Calculo do modulo 10
        $resto = $numtotal10 % 10;
        $digito = 10 - $resto;
        if ($resto == 0) {
            $digito = 0;
        }
		
        return $digito;
		
}

function modulo_11($num, $base=9, $r=0)  {
    /**
     *   Autor:
     *           Pablo Costa <pablo@users.sourceforge.net>
     *
     *   Função:
     *    Calculo do Modulo 11 para geracao do digito verificador 
     *    de boletos bancarios conforme documentos obtidos 
     *    da Febraban - www.febraban.org.br 
     *
     *   Entrada:
     *     $num: string numérica para a qual se deseja calcularo digito verificador;
     *     $base: valor maximo de multiplicacao [2-$base]
     *     $r: quando especificado um devolve somente o resto
     *
     *   Saída:
     *     Retorna o Digito verificador.
     *
     *   Observações:
     *     - Script desenvolvido sem nenhum reaproveitamento de código pré existente.
     *     - Assume-se que a verificação do formato das variáveis de entrada é feita antes da execução deste script.
     */                                        

    $soma = 0;
    $fator = 2;

    /* Separacao dos numeros */
    for ($i = strlen($num); $i > 0; $i--) {
        // pega cada numero isoladamente
        $numeros[$i] = substr($num,$i-1,1);
        // Efetua multiplicacao do numero pelo falor
        $parcial[$i] = $numeros[$i] * $fator;
        // Soma dos digitos
        $soma += $parcial[$i];
        if ($fator == $base) {
            // restaura fator de multiplicacao para 2 
            $fator = 1;
        }
        $fator++;
    }

    /* Calculo do modulo 11 */
    if ($r == 0) {
        $soma *= 10;
        $digito = $soma % 11;
        if ($digito == 10) {
            $digito = 0;
        }
        return $digito;
    } elseif ($r == 1){
        $resto = $soma % 11;
        return $resto;
    }
}

// Alterada por Glauber Portella para especificação do Itaú
function monta_linha_digitavel($codigo) {
		// campo 1
        $banco    = substr($codigo,0,3);
        $moeda    = substr($codigo,3,1);
        $ccc      = substr($codigo,19,3);
		$ddnnum   = substr($codigo,22,2);
		$dv1      = modulo_10($banco.$moeda.$ccc.$ddnnum);
		// campo 2
		$resnnum  = substr($codigo,24,6);
		$dac1     = substr($codigo,30,1);//modulo_10($agencia.$conta.$carteira.$nnum);
		$dddag    = substr($codigo,31,3);
		$dv2      = modulo_10($resnnum.$dac1.$dddag);
		// campo 3
		$resag    = substr($codigo,34,1);
		$contadac = substr($codigo,35,6); //substr($codigo,35,5).modulo_10(substr($codigo,35,5));
		$zeros    = substr($codigo,41,3);
		$dv3      = modulo_10($resag.$contadac.$zeros);
		// campo 4
		$dv4      = substr($codigo,4,1);
		// campo 5
        $fator    = substr($codigo,5,4);
        $valor    = substr($codigo,9,10);
		
        $campo1 = substr($banco.$moeda.$ccc.$ddnnum.$dv1,0,5) . '.' . substr($banco.$moeda.$ccc.$ddnnum.$dv1,5,5);
        $campo2 = substr($resnnum.$dac1.$dddag.$dv2,0,5) . '.' . substr($resnnum.$dac1.$dddag.$dv2,5,6);
        $campo3 = substr($resag.$contadac.$zeros.$dv3,0,5) . '.' . substr($resag.$contadac.$zeros.$dv3,5,6);
        $campo4 = $dv4;
        $campo5 = $fator.$valor;
		
        return "$campo1 $campo2 $campo3 $campo4 $campo5"; 
}

function geraCodigoBanco($numero) {
    $parte1 = substr($numero, 0, 3);
    $parte2 = modulo_11($parte1);
    return $parte1 . "-" . $parte2;
}

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo, rnicson, saudações...

 

Tenho o seguinte código para gerar Boleto Bancário em PHP, na qual tirei de um livro Faça um Site com PHP.

 

Abaixo o código:

<?PHP
// +---------------------------------------------------------+
// | Emissão do boleto bancário                              |
// +---------------------------------------------------------+

 session_start (); 

 include "inc_dbConexao.php";

 //Captura os itens da cesta
 $sql = "SELECT * ";
 $sql = $sql . " FROM pedidos ";
 $sql = $sql . " WHERE num_ped = '" . $_SESSION['num_ped1'] . "' ";
 $rs = mysql_query($sql, $conexao);
 $reg = mysql_fetch_array($rs);

 $_SESSION['id_cli'] = $reg['id_cliente'];
 $_SESSION['dataped'] = $reg['data'];  //data do pedido
 $_SESSION['horaped'] = $reg['hora'];
 $_SESSION['valor'] = $reg['valor'];
 $_SESSION['valor_frete'] = $reg['frete'];
 $_SESSION['peso'] = $reg['peso'];
 $_SESSION['desconto'] = $reg['desconto'];
 $_SESSION['num_ped'] = $reg['num_ped'];
 $_SESSION['id'] = $reg['id'];
 $_SESSION['datavenc'] = $reg['vencimento']; //data de vencimento
 
// Calcula o valor do boleto
$_SESSION['valor_boleto'] = $_SESSION['valor'] + $_SESSION['valor_frete'] - $_SESSION['desconto'];

// Mantém zeros na casa decimal sem formatação para o cálculo da linha digitável
$_SESSION['valor_boleto1'] = number_format($_SESSION['valor_boleto'],2,'','');

// ******** DADOS DO BOLETO
// DADOS FIXOS DE CONFIGURAÇÃO DO BOLETO
// 1. Dados da sua empresa
$boleto["cedente_nome"] = "Faça um Site Miniaturas Ltda";
$boleto["cedente_cnpj"] = "33.333.333/0001-33";

// 2. Dados da conta bancária da empresa (devem ser confirmados com o banco do cedente)
$boleto['num_banco'] = "000";			// Identificação do Banco (Banco teste = 935)
$boleto['dv_banco'] = "6";				// Identificação do Banco (Banco teste = 935)
$boleto['moeda'] = "9";					// Código da Moeda (Real = 9)
$boleto["num_agencia"] = "1111";		// Num da agência - sem digito verificador
$boleto["dv_agencia"] = "8";			// Dígito verificador da agência
$boleto["num_conta"] = "1234567";		// Num da conta corrente sem o dígito verificador
$boleto["dv_conta"] = "8";				// Digito verificador da conta corrente

// 3. Dados restritos do banco (devem ser confirmados com o banco do cedente)
$boleto["carteira"] = "06";		// Código da Carteira: Consultar seu banco
$boleto["aceite"] = "N";		// Aceite: Consultar seu banco
$boleto["especie"] = "R$";		// Espécie: Consultar seu banco
$boleto["especie_doc"] = "99";	// Espécie documento: Consultar seu banco
$boleto["fixo"] = "0";			// posicao 44 do código de barras

// 4. Informações gerais do boleto
$boleto['dv_codbar'] = "";	// Dígito verificador do Código de Barras

$boleto['fator'] = fator_venc($_SESSION['datavenc']);
$boleto['valor_zeroesq'] = zero_esquerda($_SESSION['valor_boleto1'],10);
$boleto['nosso_numero'] = zero_esquerda($_SESSION['id'],11);

// Taxa de cobrança para envio do boleto
$taxa_boleto = 3.00;

// Dados do Sacado
$boleto['sacado_nome'] = $_SESSION['nome_cli'];
$boleto['sacado_end1'] = ltrim($_SESSION['end_nome']) . ", " . ltrim($_SESSION['end_num']) . " " . ltrim($_SESSION['end_comp']); 
$boleto['sacado_end2'] = substr($_SESSION['cep'],0,5)."-" . substr($_SESSION['cep'],5,3) . "    " . ltrim($_SESSION['bairro']) . "    " . ltrim($_SESSION['cidade']) . "    " . ltrim($_SESSION['uf']);

// *************** CÓDIGO DE BARRAS
// Monta cógigo de barras sem o dígito verificador
$boleto['codbarra_sem_dv'] = $boleto['num_banco'] . $boleto['moeda'] . $boleto['fator'] . $boleto['valor_zeroesq'] . $boleto['num_agencia'] . $boleto['carteira'] . $boleto['nosso_numero'] . $boleto['num_conta'] . $boleto['fixo'];

// Cálculo do dígito verificador (dv) do código de barras
// Inverte o código de barras para cálculo do dígito verificador
$boleto1 = strrev($boleto['codbarra_sem_dv']);
$soma = 0;
for($i=0; $i <= 42; $i++) {
	$a[$i] = substr($boleto1,$i,1);
	// Multiplica as posições de 0 a 7 por 2,3,4,5,6,7,8 e 9
	if ($i <= 7) {
		$fator[$i] = $a[$i] * ($i + 2);
	}
	// Multiplica as posições de 8 a 15 por 2,3,4,5,6,7,8 e 9
	if ($i >= 8 and $i <= 15) {
		$fator[$i] = $a[$i] * ($i - 6);
	}
	// Multiplica as posições de 16 a 23 por 2,3,4,5,6,7,8 e 9
	if ($i >= 16 and $i <= 23) {
		$fator[$i] = $a[$i] * ($i - 14);
	}
	// Multiplica as posições de 24 a 31 por 2,3,4,5,6,7,8 e 9
	if ($i >= 24 and $i <= 31) {
		$fator[$i] = $a[$i] * ($i - 22);
	}
	// Multiplica as posições de 42 a 39 por 2,3,4,5,6,7,8 e 9
	if ($i >= 32 and $i <= 39) {
		$fator[$i] = $a[$i] * ($i - 30);
	}
	// Multiplica as posições de 40 a 42 por 2,3 e 4
	if ($i >= 40) {
		$fator[$i] = $a[$i] * ($i - 38);
	}
	// Soma os números de cada posição do código de barras invertido pelo respectivo fator
	$soma = $soma + $fator[$i];
	// Calcula o resto da divisão entre a soma e 11
	$dv = 11 - ($soma % 11);
	// Se o resultado da subtração (11 - resto de $soma) for igual a 0 (Zero), 1 (um)
	// ou maior que 9 (nove) deverão assumir o dígito igual a 1 (um).
	if ($dv == 0 or $dv == 1 or $dv > 9) {
		$dv = 1;
	}
}
// Monta o código de barras com o dígito verificador (dv)
$boleto['codbarra_dv'] = substr($boleto['codbarra_sem_dv'],0,4) . $dv . substr($boleto['codbarra_sem_dv'],4,39);

// TRANSFORMA O CÓDIGO DE BARRAS NUMÉRICO (base 10) EM BINÁRIO
$n[0] = "00110";
$n[1] = "10001";
$n[2] = "01001";
$n[3] = "11000";
$n[4] = "00101";
$n[5] = "10100";
$n[6] = "01100";
$n[7] = "00011";
$n[8] = "10010";
$n[9] = "01010";

$boleto['codbarra_binario'] = "";
for($z=0; $z < 44; $z = $z+2) {
	for($i=0; $i < 5; $i++) {
		$x1 = substr($boleto['codbarra_dv'],$z,1);
		$x2 = substr($boleto['codbarra_dv'],$z+1,1);
		$boleto['codbarra_binario'] = $boleto['codbarra_binario'] . substr($n[$x1],$i,1) . substr($n[$x2],$i,1);
	}
}

// prepara as barras para impressão
$boleto['cod_grafico'] = "";	// Contém as imagens das barras (preta e branca)
for($i=0; $i < strlen($boleto['codbarra_binario']); $i++) {
	// Verifica se a posição da barra é par
	if ($i % 2 == 0) {
		// Se o número for zero imprime barra preta estreita
		if (substr($boleto['codbarra_binario'],$i,1) == 0) {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/p.png' width='1' height='50' border='0' />";
		// Se o número for 1 imprime barra preta larga
		} else {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/p.png' width='3' height='50' border='0' />";
		}
	} 
	
	// Verifica se a posição da barra é ímpar
	if ($i % 2 == 1) {	
		// Se o número for zero imprime barra branca estreita	
		if (substr($boleto['codbarra_binario'],$i,1) == 0) {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/b.png' width='1' height='50' border='0' />";
		// Se o número for 1 imprime barra branca larga		
		} else {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/b.png' width='3' height='50' border='0' />";
		}
	}
}
// Insere ao código de barras as barras start
$bar_start = "<img src='../siteLoja/imagens/p.png' width='1' height='50' />";
$bar_start = $bar_start . "<img src='../siteLoja/imagens/b.png' width='1' height='50' />";
$bar_start = $bar_start . "<img src='../siteLoja/imagens/p.png' width='1' height='50' />";
$bar_start = $bar_start . "<img src='../siteLoja/imagens/b.png' width='1' height='50' />";
$boleto['cod_grafico'] = $bar_start . $boleto['cod_grafico'];

// Insere ao código de barras as barras stop
$bar_stop = "<img src='../siteLoja/imagens/p.png' width='3' height='50' />";
$bar_stop = $bar_stop . "<img src='../siteLoja/imagens/b.png' width='1' height='50' />";
$bar_stop = $bar_stop . "<img src='../siteLoja/imagens/p.png' width='1' height='50' />";
$boleto['cod_grafico'] = $boleto['cod_grafico'] . $bar_stop;


// *************** LINHA DIGITÁVEL
// Campo livre = Agência (cedente) + Carteira + Nosso número + Conta corrente (cedente) + Fixo (0)
$campo_livre = $boleto['num_agencia'] . $boleto["carteira"] . $boleto["nosso_numero"] . $boleto["num_conta"] . $boleto["fixo"];

// 1º campo
// Composto pelo código de Banco, código da moeda, as cinco primeiras posições do campo livre e o dígito de auto conferência(DAC) deste campo
$campo1 = $boleto['num_banco'] . $boleto['moeda'] . substr($campo_livre,0,5);
$dac_campo1 = calculo_dac1($campo1);

// 2º campo
// Composto pelas posições 6ª a 15ª do campo livre e o dígito verificador deste campo
$campo2 = substr($campo_livre,5,10);
$dac_campo2 = calculo_dac2($campo2);

// 3º campo
// Composto pelas posições 16ª a 25ª do campo livre e o dígito verificador deste campo deste campo
$campo3 = substr($campo_livre,15,10);
$dac_campo3 = calculo_dac2($campo3);

// 4º campo
// Composto pelo dígito verificador do código de barras, ou seja, a 5ª posição do código de barras
$campo4 = $dv;

// 5º campo
// Composto pelo fator de vencimento com 4(quatro) caracteres e o valor do documento com 10(dez) caracteres, sem separadores e sem edição
$campo5 = fator_venc($_SESSION['datavenc']) . zero_esquerda($_SESSION['valor_boleto1'],10);

// LINHA DIGITÁVEL
$linha_digitavel = substr($campo1,0,5) . "." . substr($campo1,5,5) . $dac_campo1 . " ";
$linha_digitavel = $linha_digitavel . substr($campo2,0,5) . "." . substr($campo2,5,5) . $dac_campo2 . " ";
$linha_digitavel = $linha_digitavel . substr($campo3,0,5) . "." . substr($campo3,5,5) . $dac_campo3 . " ";
$linha_digitavel = $linha_digitavel . $campo4 . " " . $campo5;

// *************** FUNÇÕES
// CALCULO DO FATOR DE VENCIMENTO DO BOLETO
// Parâmetro: $data = Data de vencimento do boleto no formato aaaa-mm-dd
function fator_venc($data) {
	// Separa a data em dia, mês e ano
	$dia = substr($data,8,2);
	$mes = substr($data,5,2);
	$ano = substr($data,0,4);
	// calcula o timestamp da data 07/10/1997 (base de cálculo do fator de vencimento)
	$timestamp_data1 = mktime(0,0,0,10,07,1997);
	// calcula o timestamp da data de vencimento do boleto
	$timestamp_data2 = mktime(0,0,0,$mes,$dia,$ano);
	// Calcula a diferença de dias entre as duas datas. Como esta diferença é calculada em segundos, 
	// é necessário se dividir esse resultado por 86.400 (número de segundos de 1 dia)
	$dif_dias = round(($timestamp_data2 - $timestamp_data1) / 86400);
return $dif_dias;
}

// INSERE ZEROS À ESQUERDA DE UM NÚMERO
// Parâmetros: $numero = número considerado, $zeros = tamanho do número (com zeros)
function zero_esquerda($numero,$zeros) {	
	// Retira o ponto decimal do número	
	$numero = str_replace(".","",$numero);
	// Define o número de zeros a serem inseridos à esquerda do número
	$loop = $zeros - strlen($numero);				
	for($i=0; $i < $loop; $i++) {
		$numero = "0" . $numero;
	}
return $numero;
}

// Função formatar CNPJ
function formatar_cnpj($n) {
$cnpj_formatado = substr($n,0,2).".".substr($n,2,3).".".substr($n,5,3)."/".substr($n,8,4)."-".substr($n,12,2);
return $cnpj_formatado;
}

// Cálculo do Dígito de auto conferência (DAC) da linha digitável para o campo 1
function calculo_dac1($campo) {
for($i=0; $i < 9; $i++) {
	// Varifica a posição do número. Se impar $fator_dac = 2. Se par $fator_dac = 1
	if ($i % 2 == 0) {
		$fator_dac = 2;
	} else {
		$fator_dac = 1;
	}
	// Multiplica a posição do número pelo $fator_dac
	$dac1 = (substr($campo,$i,1) * $fator_dac);
	// Se o valor de $dac1 for maior do que 9, somam-se os dois dígitos, ex:
	// Se $dac1 = 12 teremos como resultado final 1 + 2, ou seja 3.
	if ($dac1 > 9) {
		$dac2 = substr($dac1,0,1) + substr($dac1,1,1);
	} else {
		$dac2 = $dac1;
	}
	
    //Declarando Variável
    $soma_dac = 0;
	
	$soma_dac = $soma_dac + $dac2;
	// Divide-se o resultado por 10, se resto = 0 o DAC será 0
	// Se resto diferente de 0 o DAC será: 10 - resto
	if ($soma_dac % 10 == 0) {
		$dac = 0;
	} else {
		$dac = 10 - ($soma_dac % 10);
	}
}
return $dac;
}	

// Cálculo do Dígito de auto conferência (DAC) da linha digitável para o campo 2 e 3
function calculo_dac2($campo) {
for($i=0; $i < 10; $i++) {
	// Varifica a posição do número. Se impar $fator_dac = 2. Se par $fator_dac = 1
	if ($i % 2 == 0) {
		$fator_dac = 1;
	} else {
		$fator_dac = 2;
	}
	// Multiplica a posição do número pelo $fator_dac
	$dac1 = (substr($campo,$i,1) * $fator_dac);
	// Se o valor de $dac1 for maior do que 9, somam-se os dois dígitos, ex:
	// Se $dac1 = 12 teremos como resultado final 1 + 2, ou seja 3.
	if ($dac1 > 9) {
		$dac2 = substr($dac1,0,1) + substr($dac1,1,1);
	} else {
		$dac2 = $dac1;
	}
	
	//Declarando Variável
    $soma_dac = 0;

	$soma_dac = $soma_dac + $dac2;
	// Divide-se o resultado por 10, se resto = 0 o DAC será 0
	// Se resto diferente de 0 o DAC será: 10 - resto
	if ($soma_dac % 10 == 0) {
		$dac = 0;
	} else {
		$dac = 10 - ($soma_dac % 10);
	}
}
return $dac;
}	
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Faça um Site - Boleto Bancário</title>
<style type="text/css">
<!--
.linha_inf {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 10px;
}
.linha_dir {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 10px;
}
.titulo_inf {
	font-size: 8px;
	line-height: 10px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
}
.titulo_dir {
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	font-size: 8px;
	line-height: 10px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
}
.logo_banco {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 0px;
}
.logo_fs {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 0px;
}
.num_banco {
	padding: 2px;
	font-size: 18px;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	text-align: center;
}
body {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #000000;
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
.linha_digitavel {
	padding: 2px;
	font-size: 16px;
	font-weight: normal;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	text-align: right;
}
.valor {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 15px;
	padding-bottom: 2px;
	padding-left: 10px;
	text-align: right;
}
.sacado {
	font-weight: bold;
	padding-top: 3px;
	padding-right: 15px;
	padding-bottom: 3px;
	padding-left: 30px;
}
.avalista {
	font-size: 8px;
	line-height: 10px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
}
.autenticacao {
	font-size: 9px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
}
.instrucoes {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 10px;
}
p {
	padding-top: 1px;
	padding-right: 0px;
	padding-bottom: 1px;
	padding-left: 0px;
	margin: 0px;
}
.linha_digitavelA {
	padding: 2px;
	font-size: 20px;
	font-weight: normal;
}
.titulo {
	padding: 2px;
	font-size: 14px;
	font-weight: normal;
	text-align: right;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
}
-->
</style>
</head>
<body onload="javascript:window.print();">
<!-- Menu de emissão do boleto -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
	<td height="28" valign="top" background="../siteLoja/imagens/menu_boleto.gif"><div align="right">
		<a href="javascript:window.print();"><img src="../siteLoja/imagens/btn_transparente.gif" width="85" height="23" hspace="3" border="0" /></a>
		<a href="index.php"><img src="../siteLoja/imagens/btn_transparente.gif" width="80" height="23" hspace="3" border="0" /></a>		
		<a href="pedidos.php"><img src="../siteLoja/imagens/btn_transparente.gif" alt="Ver meus pedidos" width="100" height="23" hspace="3" border="0" /></a>
		<a href="encerrar.php"><img src="../siteLoja/imagens/btn_transparente.gif" alt="Encerrar seção" width="71" height="23" hspace="3" border="0" /></a>		
	</div></td>
</tr>
</table>

<!-- Recibo do Sacado -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td class="logo_fs"><a href="index.php"><img src="../siteLoja/imagens/logo_fsboleto.gif" width="178" height="37" vspace="2" border="0" /></a></td>
    <td width="439" class="titulo">Boleto para pagamento do pedido nº<strong> <?PHP print $_SESSION['num_ped']; ?></strong></td>
  </tr>
</table>

<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="5" class="titulo_dir">Local de Pagamento</td>
    <td width="146" class="titulo_inf">Vencimento</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir">PAGAVEL PREFERENCIALMENTE EM QUALQUER AGÊNCIA BANCO TESTE</td>
    <td class="linha_inf"><?PHP print substr($_SESSION['datavenc'],8,2) . "/" . substr($_SESSION['datavenc'],5,2) . "/" . substr($_SESSION['datavenc'],0,4); ?></td>	
  </tr>
  <tr>
    <td colspan="5" class="titulo_dir">Cedente</td>
    <td class="titulo_inf">Agência/Código Cedente</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir"><?PHP print strtoupper($boleto["cedente_nome"]); ?></td>
    <td class="linha_inf"><?PHP print $boleto["num_agencia"] . "-" . $boleto["dv_agencia"] . "/" . $boleto["num_conta"] . "-" . $boleto["dv_conta"]; ?></td>
  </tr>
  <tr>
    <td width="109" class="titulo_dir">Data do Documento </td>
    <td width="129" class="titulo_dir">Nº do Documento </td>
    <td width="113" class="titulo_dir">Espécie Documento </td>
    <td width="84" class="titulo_dir">Aceite</td>
    <td width="119" class="titulo_dir">Data do Processamento</td>
    <td class="titulo_inf">Nosso Número</td>
  </tr>
  <tr>
    <td class="linha_dir"><?PHP print substr($_SESSION['dataped'],8,2) . "/" . substr($_SESSION['dataped'],5,2) . "/" . substr($_SESSION['dataped'],0,4); ?></td>
    <td class="linha_dir"><?PHP print $_SESSION['num_ped']; ?></td>
    <td class="linha_dir"><?PHP print $boleto["especie_doc"]; ?></td>
    <td class="linha_dir"><?PHP print $boleto["aceite"]; ?></td>
    <td class="linha_dir"><?PHP print date('d/m/Y'); ?></td>
    <td class="linha_inf"><?PHP print $boleto['carteira'] . "-" . $boleto['nosso_numero']; ?></td>
  </tr>
  <tr>
    <td class="titulo_dir">Uso do Banco </td>
    <td class="titulo_dir">Carteira</td>
    <td class="titulo_dir">Espécie</td>
    <td class="titulo_dir">Quantidade</td>
    <td class="titulo_dir">Valor</td>
    <td class="titulo_inf">(=) Valor do Documento </td>
  </tr>
  <tr>
    <td class="linha_dir"> </td>
    <td class="linha_dir"><?PHP print $boleto['carteira']; ?></td>
    <td class="linha_dir"><?PHP print $boleto['especie']; ?></td>
    <td class="linha_dir"> </td>
    <td class="linha_dir"> </td>
    <td class="valor"><?PHP print number_format($_SESSION['valor_boleto'],2,',','.'); ?></td>
  </tr>
  <tr>
    <td colspan="5" class="titulo_inf"> </td>
    <td class="titulo_inf"> </td>
  </tr>
  <tr>
    <td colspan="6" valign="top" class="instrucoes">
		<p><strong>Instruções de impressão</strong></p>
		<p>- Imprima em impressora jato de tinta (ink jet) ou laser em qualidade normal ou alta (Não use modo econômico).</p>
		<p>- Utilize folha A4 (210 x 297 mm) ou Carta (216 x 279 mm) e margens mínimas à esquerda e à direita do formulário.</p>
		<p>- Corte na linha indicada. Não rasure, risque, fure ou dobre a região onde se encontra o código de barras.</p>
		<p> </p>
		<p><strong>Pagamento via Internet Banking</strong></p>
		<p>Caso tenha problemas ao imprimir este boleto, ou se desejar pagá-lo através do Internet Banking, utilize a linha digitável descrita abaixo:</p>
		<p> </p>
		<p align="center" class="linha_digitavelA"><?PHP print $linha_digitavel; ?></p>
		<p> </p>	
		</td>
  </tr>
  
  <tr>
    <td colspan="6" class="titulo_inf">Sacado</td>
  </tr>
  <tr>
    <td colspan="6" class="sacado">
		<?PHP print $boleto['sacado_nome']; ?><br />
		<?PHP print $boleto['sacado_end1']; ?><br />
		<?PHP print $boleto['sacado_end2']; ?></td>
  </tr>
  <tr>
    <td colspan="6" class="avalista">Sacador/Avalista</td>
  </tr>
  <tr>
    <td colspan="6"><div align="right"><strong>Recibo do Sacado  -</strong> <span class="autenticacao">Autenticação Mecânica</span> </div></td>
  </tr>
	
  <tr>
    <td colspan="6"> </td>
  </tr>		
  <tr>
    <td colspan="6"> </td>
  </tr>	
  <tr>
    <td colspan="6"> </td>
  </tr>	
  <tr>
    <td colspan="6"><img src="../siteLoja/imagens/corte.gif" width="700" height="12" /></td>
  </tr>	
  <tr>
    <td colspan="6"> </td>
  </tr>	
  <tr>
    <td colspan="6"> </td>
  </tr>						
</table>

<!-- Ficha de Compensação -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="157" class="logo_banco"><img src="../siteLoja/imagens/logo_banco.gif" width="140" height="23" /></td>
    <td width="51" class="num_banco"><?PHP print $boleto['num_banco'] . "-" . $boleto['dv_banco']; ?></td>
    <td width="492" class="linha_digitavel"><?PHP print $linha_digitavel; ?></td>
  </tr>
</table>

<!-- Ficha de compensação -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="5" class="titulo_dir">Local de Pagamento</td>
    <td width="146" class="titulo_inf">Vencimento</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir">PAGAVEL PREFERENCIALMENTE EM QUALQUER AGÊNCIA BANCO TESTE</td>
    <td class="linha_inf"><?PHP print substr($_SESSION['datavenc'],8,2) . "/" . substr($_SESSION['datavenc'],5,2) . "/" . substr($_SESSION['datavenc'],0,4); ?></td>
  </tr>
  <tr>
    <td colspan="5" class="titulo_dir">Cedente</td>
    <td class="titulo_inf">Agência/Código Cedente</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir"><?PHP print strtoupper($boleto["cedente_nome"]); ?></td>
    <td class="linha_inf"><?PHP print $boleto["num_agencia"] . "-" . $boleto["dv_agencia"] . "/" . $boleto["num_conta"] . "-" . $boleto["dv_conta"]; ?></td>
  </tr>
  <tr>
    <td width="109" class="titulo_dir">Data do Documento </td>
    <td width="129" class="titulo_dir">Nº do Documento </td>
    <td width="113" class="titulo_dir">Espécie Documento </td>
    <td width="84" class="titulo_dir">Aceite</td>
    <td width="119" class="titulo_dir">Data do Processamento</td>
    <td class="titulo_inf">Nosso Número</td>
  </tr>
  <tr>
    <td class="linha_dir"><?PHP print substr($_SESSION['dataped'],8,2) . "/" . substr($_SESSION['dataped'],5,2) . "/" . substr($_SESSION['dataped'],0,4); ?></td>
    <td class="linha_dir"><?PHP print $_SESSION['num_ped']; ?></td>
    <td class="linha_dir"><?PHP print $boleto["especie_doc"]; ?></td>
    <td class="linha_dir"><?PHP print $boleto["aceite"]; ?></td>
    <td class="linha_dir"><?PHP print date('d/m/Y'); ?></td>
    <td class="linha_inf"><?PHP print $boleto['carteira'] . "-" . $boleto['nosso_numero']; ?></td>
  </tr>
  <tr>
    <td class="titulo_dir">Uso do Banco </td>
    <td class="titulo_dir">Carteira</td>
    <td class="titulo_dir">Espécie</td>
    <td class="titulo_dir">Quantidade</td>
    <td class="titulo_dir">Valor</td>
    <td class="titulo_inf">(=) Valor do Documento </td>
  </tr>
  <tr>
    <td class="linha_dir"> </td>
    <td class="linha_dir"><?PHP print $boleto['carteira']; ?></td>
    <td class="linha_dir"><?PHP print $boleto['especie']; ?></td>
    <td class="linha_dir"> </td>
    <td class="linha_dir"> </td>
    <td class="valor"><?PHP print number_format($_SESSION['valor_boleto'],2,',','.'); ?></td>
  </tr>
  <tr>
    <td colspan="5" class="titulo_dir">INSTRUÇÕES (Texto de responsabilidade do Cedente) </td>
    <td class="titulo_inf">(-) Desconto/Abatimento </td>
  </tr>
  <tr>
    <td colspan="5" rowspan="9" valign="top" class="linha_dir">
		<p> </p>
		<p>ATENÇÂO:</p>
		<p>- Não pague este boleto após o seu vencimento.</p>
		<p>- Após esta data o pedido será cancelado e o boleto perderá a validade.
		<p> </p>
		<p>BOLETO PARA FINS DIDÁTICOS   *** NUNCA EFETUE SEU PAGAMENTO ***</p>
		</td>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(-) Outras Deduções </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(+) Mora/Multa </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(+) Outros Acréscimos </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(=) Valor Cobrado </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td colspan="6" class="titulo_inf">Sacado</td>
  </tr>
  <tr>
    <td colspan="6" class="sacado">
		<?PHP print $boleto['sacado_nome']; ?><br />
		<?PHP print $boleto['sacado_end1']; ?><br />
		<?PHP print $boleto['sacado_end2']; ?></td>
  </tr>
  <tr>
    <td colspan="5" class="avalista">Sacador/Avalista</td>
    <td class="avalista"><div align="right">Código de Baixa </div></td>
  </tr>
  <tr>
    <td colspan="6"><div align="right"><strong>Ficha de Compensação -</strong> <span class="autenticacao">Autenticação Mecânica</span> </div></td>
  </tr>
	
  <tr>
    <td colspan="6"><?PHP print $boleto['cod_grafico']; ?></td>
  </tr>		
</table>
</body>
</html>
<?PHP
// Destroi variáveis de seção
session_destroy();

// Libera os recursos usados pela conexão atual
mysql_free_result($rs);
mysql_close ($conexao);
?>

 

Espero ter ajudado no seu problema.

 

Cesar

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 04/01/2019 at 14:01, violin101 disse:

Caro amigo, rnicson, saudações...

 

Tenho o seguinte código para gerar Boleto Bancário em PHP, na qual tirei de um livro Faça um Site com PHP.

 

Abaixo o código:


<?PHP
// +---------------------------------------------------------+
// | Emissão do boleto bancário                              |
// +---------------------------------------------------------+

 session_start (); 

 include "inc_dbConexao.php";

 //Captura os itens da cesta
 $sql = "SELECT * ";
 $sql = $sql . " FROM pedidos ";
 $sql = $sql . " WHERE num_ped = '" . $_SESSION['num_ped1'] . "' ";
 $rs = mysql_query($sql, $conexao);
 $reg = mysql_fetch_array($rs);

 $_SESSION['id_cli'] = $reg['id_cliente'];
 $_SESSION['dataped'] = $reg['data'];  //data do pedido
 $_SESSION['horaped'] = $reg['hora'];
 $_SESSION['valor'] = $reg['valor'];
 $_SESSION['valor_frete'] = $reg['frete'];
 $_SESSION['peso'] = $reg['peso'];
 $_SESSION['desconto'] = $reg['desconto'];
 $_SESSION['num_ped'] = $reg['num_ped'];
 $_SESSION['id'] = $reg['id'];
 $_SESSION['datavenc'] = $reg['vencimento']; //data de vencimento
 
// Calcula o valor do boleto
$_SESSION['valor_boleto'] = $_SESSION['valor'] + $_SESSION['valor_frete'] - $_SESSION['desconto'];

// Mantém zeros na casa decimal sem formatação para o cálculo da linha digitável
$_SESSION['valor_boleto1'] = number_format($_SESSION['valor_boleto'],2,'','');

// ******** DADOS DO BOLETO
// DADOS FIXOS DE CONFIGURAÇÃO DO BOLETO
// 1. Dados da sua empresa
$boleto["cedente_nome"] = "Faça um Site Miniaturas Ltda";
$boleto["cedente_cnpj"] = "33.333.333/0001-33";

// 2. Dados da conta bancária da empresa (devem ser confirmados com o banco do cedente)
$boleto['num_banco'] = "000";			// Identificação do Banco (Banco teste = 935)
$boleto['dv_banco'] = "6";				// Identificação do Banco (Banco teste = 935)
$boleto['moeda'] = "9";					// Código da Moeda (Real = 9)
$boleto["num_agencia"] = "1111";		// Num da agência - sem digito verificador
$boleto["dv_agencia"] = "8";			// Dígito verificador da agência
$boleto["num_conta"] = "1234567";		// Num da conta corrente sem o dígito verificador
$boleto["dv_conta"] = "8";				// Digito verificador da conta corrente

// 3. Dados restritos do banco (devem ser confirmados com o banco do cedente)
$boleto["carteira"] = "06";		// Código da Carteira: Consultar seu banco
$boleto["aceite"] = "N";		// Aceite: Consultar seu banco
$boleto["especie"] = "R$";		// Espécie: Consultar seu banco
$boleto["especie_doc"] = "99";	// Espécie documento: Consultar seu banco
$boleto["fixo"] = "0";			// posicao 44 do código de barras

// 4. Informações gerais do boleto
$boleto['dv_codbar'] = "";	// Dígito verificador do Código de Barras

$boleto['fator'] = fator_venc($_SESSION['datavenc']);
$boleto['valor_zeroesq'] = zero_esquerda($_SESSION['valor_boleto1'],10);
$boleto['nosso_numero'] = zero_esquerda($_SESSION['id'],11);

// Taxa de cobrança para envio do boleto
$taxa_boleto = 3.00;

// Dados do Sacado
$boleto['sacado_nome'] = $_SESSION['nome_cli'];
$boleto['sacado_end1'] = ltrim($_SESSION['end_nome']) . ", " . ltrim($_SESSION['end_num']) . " " . ltrim($_SESSION['end_comp']); 
$boleto['sacado_end2'] = substr($_SESSION['cep'],0,5)."-" . substr($_SESSION['cep'],5,3) . "    " . ltrim($_SESSION['bairro']) . "    " . ltrim($_SESSION['cidade']) . "    " . ltrim($_SESSION['uf']);

// *************** CÓDIGO DE BARRAS
// Monta cógigo de barras sem o dígito verificador
$boleto['codbarra_sem_dv'] = $boleto['num_banco'] . $boleto['moeda'] . $boleto['fator'] . $boleto['valor_zeroesq'] . $boleto['num_agencia'] . $boleto['carteira'] . $boleto['nosso_numero'] . $boleto['num_conta'] . $boleto['fixo'];

// Cálculo do dígito verificador (dv) do código de barras
// Inverte o código de barras para cálculo do dígito verificador
$boleto1 = strrev($boleto['codbarra_sem_dv']);
$soma = 0;
for($i=0; $i <= 42; $i++) {
	$a[$i] = substr($boleto1,$i,1);
	// Multiplica as posições de 0 a 7 por 2,3,4,5,6,7,8 e 9
	if ($i <= 7) {
		$fator[$i] = $a[$i] * ($i + 2);
	}
	// Multiplica as posições de 8 a 15 por 2,3,4,5,6,7,8 e 9
	if ($i >= 8 and $i <= 15) {
		$fator[$i] = $a[$i] * ($i - 6);
	}
	// Multiplica as posições de 16 a 23 por 2,3,4,5,6,7,8 e 9
	if ($i >= 16 and $i <= 23) {
		$fator[$i] = $a[$i] * ($i - 14);
	}
	// Multiplica as posições de 24 a 31 por 2,3,4,5,6,7,8 e 9
	if ($i >= 24 and $i <= 31) {
		$fator[$i] = $a[$i] * ($i - 22);
	}
	// Multiplica as posições de 42 a 39 por 2,3,4,5,6,7,8 e 9
	if ($i >= 32 and $i <= 39) {
		$fator[$i] = $a[$i] * ($i - 30);
	}
	// Multiplica as posições de 40 a 42 por 2,3 e 4
	if ($i >= 40) {
		$fator[$i] = $a[$i] * ($i - 38);
	}
	// Soma os números de cada posição do código de barras invertido pelo respectivo fator
	$soma = $soma + $fator[$i];
	// Calcula o resto da divisão entre a soma e 11
	$dv = 11 - ($soma % 11);
	// Se o resultado da subtração (11 - resto de $soma) for igual a 0 (Zero), 1 (um)
	// ou maior que 9 (nove) deverão assumir o dígito igual a 1 (um).
	if ($dv == 0 or $dv == 1 or $dv > 9) {
		$dv = 1;
	}
}
// Monta o código de barras com o dígito verificador (dv)
$boleto['codbarra_dv'] = substr($boleto['codbarra_sem_dv'],0,4) . $dv . substr($boleto['codbarra_sem_dv'],4,39);

// TRANSFORMA O CÓDIGO DE BARRAS NUMÉRICO (base 10) EM BINÁRIO
$n[0] = "00110";
$n[1] = "10001";
$n[2] = "01001";
$n[3] = "11000";
$n[4] = "00101";
$n[5] = "10100";
$n[6] = "01100";
$n[7] = "00011";
$n[8] = "10010";
$n[9] = "01010";

$boleto['codbarra_binario'] = "";
for($z=0; $z < 44; $z = $z+2) {
	for($i=0; $i < 5; $i++) {
		$x1 = substr($boleto['codbarra_dv'],$z,1);
		$x2 = substr($boleto['codbarra_dv'],$z+1,1);
		$boleto['codbarra_binario'] = $boleto['codbarra_binario'] . substr($n[$x1],$i,1) . substr($n[$x2],$i,1);
	}
}

// prepara as barras para impressão
$boleto['cod_grafico'] = "";	// Contém as imagens das barras (preta e branca)
for($i=0; $i < strlen($boleto['codbarra_binario']); $i++) {
	// Verifica se a posição da barra é par
	if ($i % 2 == 0) {
		// Se o número for zero imprime barra preta estreita
		if (substr($boleto['codbarra_binario'],$i,1) == 0) {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/p.png' width='1' height='50' border='0' />";
		// Se o número for 1 imprime barra preta larga
		} else {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/p.png' width='3' height='50' border='0' />";
		}
	} 
	
	// Verifica se a posição da barra é ímpar
	if ($i % 2 == 1) {	
		// Se o número for zero imprime barra branca estreita	
		if (substr($boleto['codbarra_binario'],$i,1) == 0) {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/b.png' width='1' height='50' border='0' />";
		// Se o número for 1 imprime barra branca larga		
		} else {
			$boleto['cod_grafico'] = $boleto['cod_grafico'] . "<img src='../siteLoja/imagens/b.png' width='3' height='50' border='0' />";
		}
	}
}
// Insere ao código de barras as barras start
$bar_start = "<img src='../siteLoja/imagens/p.png' width='1' height='50' />";
$bar_start = $bar_start . "<img src='../siteLoja/imagens/b.png' width='1' height='50' />";
$bar_start = $bar_start . "<img src='../siteLoja/imagens/p.png' width='1' height='50' />";
$bar_start = $bar_start . "<img src='../siteLoja/imagens/b.png' width='1' height='50' />";
$boleto['cod_grafico'] = $bar_start . $boleto['cod_grafico'];

// Insere ao código de barras as barras stop
$bar_stop = "<img src='../siteLoja/imagens/p.png' width='3' height='50' />";
$bar_stop = $bar_stop . "<img src='../siteLoja/imagens/b.png' width='1' height='50' />";
$bar_stop = $bar_stop . "<img src='../siteLoja/imagens/p.png' width='1' height='50' />";
$boleto['cod_grafico'] = $boleto['cod_grafico'] . $bar_stop;


// *************** LINHA DIGITÁVEL
// Campo livre = Agência (cedente) + Carteira + Nosso número + Conta corrente (cedente) + Fixo (0)
$campo_livre = $boleto['num_agencia'] . $boleto["carteira"] . $boleto["nosso_numero"] . $boleto["num_conta"] . $boleto["fixo"];

// 1º campo
// Composto pelo código de Banco, código da moeda, as cinco primeiras posições do campo livre e o dígito de auto conferência(DAC) deste campo
$campo1 = $boleto['num_banco'] . $boleto['moeda'] . substr($campo_livre,0,5);
$dac_campo1 = calculo_dac1($campo1);

// 2º campo
// Composto pelas posições 6ª a 15ª do campo livre e o dígito verificador deste campo
$campo2 = substr($campo_livre,5,10);
$dac_campo2 = calculo_dac2($campo2);

// 3º campo
// Composto pelas posições 16ª a 25ª do campo livre e o dígito verificador deste campo deste campo
$campo3 = substr($campo_livre,15,10);
$dac_campo3 = calculo_dac2($campo3);

// 4º campo
// Composto pelo dígito verificador do código de barras, ou seja, a 5ª posição do código de barras
$campo4 = $dv;

// 5º campo
// Composto pelo fator de vencimento com 4(quatro) caracteres e o valor do documento com 10(dez) caracteres, sem separadores e sem edição
$campo5 = fator_venc($_SESSION['datavenc']) . zero_esquerda($_SESSION['valor_boleto1'],10);

// LINHA DIGITÁVEL
$linha_digitavel = substr($campo1,0,5) . "." . substr($campo1,5,5) . $dac_campo1 . " ";
$linha_digitavel = $linha_digitavel . substr($campo2,0,5) . "." . substr($campo2,5,5) . $dac_campo2 . " ";
$linha_digitavel = $linha_digitavel . substr($campo3,0,5) . "." . substr($campo3,5,5) . $dac_campo3 . " ";
$linha_digitavel = $linha_digitavel . $campo4 . " " . $campo5;

// *************** FUNÇÕES
// CALCULO DO FATOR DE VENCIMENTO DO BOLETO
// Parâmetro: $data = Data de vencimento do boleto no formato aaaa-mm-dd
function fator_venc($data) {
	// Separa a data em dia, mês e ano
	$dia = substr($data,8,2);
	$mes = substr($data,5,2);
	$ano = substr($data,0,4);
	// calcula o timestamp da data 07/10/1997 (base de cálculo do fator de vencimento)
	$timestamp_data1 = mktime(0,0,0,10,07,1997);
	// calcula o timestamp da data de vencimento do boleto
	$timestamp_data2 = mktime(0,0,0,$mes,$dia,$ano);
	// Calcula a diferença de dias entre as duas datas. Como esta diferença é calculada em segundos, 
	// é necessário se dividir esse resultado por 86.400 (número de segundos de 1 dia)
	$dif_dias = round(($timestamp_data2 - $timestamp_data1) / 86400);
return $dif_dias;
}

// INSERE ZEROS À ESQUERDA DE UM NÚMERO
// Parâmetros: $numero = número considerado, $zeros = tamanho do número (com zeros)
function zero_esquerda($numero,$zeros) {	
	// Retira o ponto decimal do número	
	$numero = str_replace(".","",$numero);
	// Define o número de zeros a serem inseridos à esquerda do número
	$loop = $zeros - strlen($numero);				
	for($i=0; $i < $loop; $i++) {
		$numero = "0" . $numero;
	}
return $numero;
}

// Função formatar CNPJ
function formatar_cnpj($n) {
$cnpj_formatado = substr($n,0,2).".".substr($n,2,3).".".substr($n,5,3)."/".substr($n,8,4)."-".substr($n,12,2);
return $cnpj_formatado;
}

// Cálculo do Dígito de auto conferência (DAC) da linha digitável para o campo 1
function calculo_dac1($campo) {
for($i=0; $i < 9; $i++) {
	// Varifica a posição do número. Se impar $fator_dac = 2. Se par $fator_dac = 1
	if ($i % 2 == 0) {
		$fator_dac = 2;
	} else {
		$fator_dac = 1;
	}
	// Multiplica a posição do número pelo $fator_dac
	$dac1 = (substr($campo,$i,1) * $fator_dac);
	// Se o valor de $dac1 for maior do que 9, somam-se os dois dígitos, ex:
	// Se $dac1 = 12 teremos como resultado final 1 + 2, ou seja 3.
	if ($dac1 > 9) {
		$dac2 = substr($dac1,0,1) + substr($dac1,1,1);
	} else {
		$dac2 = $dac1;
	}
	
    //Declarando Variável
    $soma_dac = 0;
	
	$soma_dac = $soma_dac + $dac2;
	// Divide-se o resultado por 10, se resto = 0 o DAC será 0
	// Se resto diferente de 0 o DAC será: 10 - resto
	if ($soma_dac % 10 == 0) {
		$dac = 0;
	} else {
		$dac = 10 - ($soma_dac % 10);
	}
}
return $dac;
}	

// Cálculo do Dígito de auto conferência (DAC) da linha digitável para o campo 2 e 3
function calculo_dac2($campo) {
for($i=0; $i < 10; $i++) {
	// Varifica a posição do número. Se impar $fator_dac = 2. Se par $fator_dac = 1
	if ($i % 2 == 0) {
		$fator_dac = 1;
	} else {
		$fator_dac = 2;
	}
	// Multiplica a posição do número pelo $fator_dac
	$dac1 = (substr($campo,$i,1) * $fator_dac);
	// Se o valor de $dac1 for maior do que 9, somam-se os dois dígitos, ex:
	// Se $dac1 = 12 teremos como resultado final 1 + 2, ou seja 3.
	if ($dac1 > 9) {
		$dac2 = substr($dac1,0,1) + substr($dac1,1,1);
	} else {
		$dac2 = $dac1;
	}
	
	//Declarando Variável
    $soma_dac = 0;

	$soma_dac = $soma_dac + $dac2;
	// Divide-se o resultado por 10, se resto = 0 o DAC será 0
	// Se resto diferente de 0 o DAC será: 10 - resto
	if ($soma_dac % 10 == 0) {
		$dac = 0;
	} else {
		$dac = 10 - ($soma_dac % 10);
	}
}
return $dac;
}	
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Faça um Site - Boleto Bancário</title>
<style type="text/css">
<!--
.linha_inf {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 10px;
}
.linha_dir {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 10px;
}
.titulo_inf {
	font-size: 8px;
	line-height: 10px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
}
.titulo_dir {
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	font-size: 8px;
	line-height: 10px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
}
.logo_banco {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 0px;
}
.logo_fs {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 0px;
}
.num_banco {
	padding: 2px;
	font-size: 18px;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #000000;
	text-align: center;
}
body {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #000000;
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
.linha_digitavel {
	padding: 2px;
	font-size: 16px;
	font-weight: normal;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	text-align: right;
}
.valor {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	font-weight: bold;
	padding-top: 0px;
	padding-right: 15px;
	padding-bottom: 2px;
	padding-left: 10px;
	text-align: right;
}
.sacado {
	font-weight: bold;
	padding-top: 3px;
	padding-right: 15px;
	padding-bottom: 3px;
	padding-left: 30px;
}
.avalista {
	font-size: 8px;
	line-height: 10px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
}
.autenticacao {
	font-size: 9px;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 0px;
	padding-left: 2px;
}
.instrucoes {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
	padding-top: 0px;
	padding-right: 2px;
	padding-bottom: 2px;
	padding-left: 10px;
}
p {
	padding-top: 1px;
	padding-right: 0px;
	padding-bottom: 1px;
	padding-left: 0px;
	margin: 0px;
}
.linha_digitavelA {
	padding: 2px;
	font-size: 20px;
	font-weight: normal;
}
.titulo {
	padding: 2px;
	font-size: 14px;
	font-weight: normal;
	text-align: right;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	border-bottom-color: #000000;
}
-->
</style>
</head>
<body onload="javascript:window.print();">
<!-- Menu de emissão do boleto -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
	<td height="28" valign="top" background="../siteLoja/imagens/menu_boleto.gif"><div align="right">
		<a href="javascript:window.print();"><img src="../siteLoja/imagens/btn_transparente.gif" width="85" height="23" hspace="3" border="0" /></a>
		<a href="index.php"><img src="../siteLoja/imagens/btn_transparente.gif" width="80" height="23" hspace="3" border="0" /></a>		
		<a href="pedidos.php"><img src="../siteLoja/imagens/btn_transparente.gif" alt="Ver meus pedidos" width="100" height="23" hspace="3" border="0" /></a>
		<a href="encerrar.php"><img src="../siteLoja/imagens/btn_transparente.gif" alt="Encerrar seção" width="71" height="23" hspace="3" border="0" /></a>		
	</div></td>
</tr>
</table>

<!-- Recibo do Sacado -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td class="logo_fs"><a href="index.php"><img src="../siteLoja/imagens/logo_fsboleto.gif" width="178" height="37" vspace="2" border="0" /></a></td>
    <td width="439" class="titulo">Boleto para pagamento do pedido nº<strong> <?PHP print $_SESSION['num_ped']; ?></strong></td>
  </tr>
</table>

<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="5" class="titulo_dir">Local de Pagamento</td>
    <td width="146" class="titulo_inf">Vencimento</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir">PAGAVEL PREFERENCIALMENTE EM QUALQUER AGÊNCIA BANCO TESTE</td>
    <td class="linha_inf"><?PHP print substr($_SESSION['datavenc'],8,2) . "/" . substr($_SESSION['datavenc'],5,2) . "/" . substr($_SESSION['datavenc'],0,4); ?></td>	
  </tr>
  <tr>
    <td colspan="5" class="titulo_dir">Cedente</td>
    <td class="titulo_inf">Agência/Código Cedente</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir"><?PHP print strtoupper($boleto["cedente_nome"]); ?></td>
    <td class="linha_inf"><?PHP print $boleto["num_agencia"] . "-" . $boleto["dv_agencia"] . "/" . $boleto["num_conta"] . "-" . $boleto["dv_conta"]; ?></td>
  </tr>
  <tr>
    <td width="109" class="titulo_dir">Data do Documento </td>
    <td width="129" class="titulo_dir">Nº do Documento </td>
    <td width="113" class="titulo_dir">Espécie Documento </td>
    <td width="84" class="titulo_dir">Aceite</td>
    <td width="119" class="titulo_dir">Data do Processamento</td>
    <td class="titulo_inf">Nosso Número</td>
  </tr>
  <tr>
    <td class="linha_dir"><?PHP print substr($_SESSION['dataped'],8,2) . "/" . substr($_SESSION['dataped'],5,2) . "/" . substr($_SESSION['dataped'],0,4); ?></td>
    <td class="linha_dir"><?PHP print $_SESSION['num_ped']; ?></td>
    <td class="linha_dir"><?PHP print $boleto["especie_doc"]; ?></td>
    <td class="linha_dir"><?PHP print $boleto["aceite"]; ?></td>
    <td class="linha_dir"><?PHP print date('d/m/Y'); ?></td>
    <td class="linha_inf"><?PHP print $boleto['carteira'] . "-" . $boleto['nosso_numero']; ?></td>
  </tr>
  <tr>
    <td class="titulo_dir">Uso do Banco </td>
    <td class="titulo_dir">Carteira</td>
    <td class="titulo_dir">Espécie</td>
    <td class="titulo_dir">Quantidade</td>
    <td class="titulo_dir">Valor</td>
    <td class="titulo_inf">(=) Valor do Documento </td>
  </tr>
  <tr>
    <td class="linha_dir"> </td>
    <td class="linha_dir"><?PHP print $boleto['carteira']; ?></td>
    <td class="linha_dir"><?PHP print $boleto['especie']; ?></td>
    <td class="linha_dir"> </td>
    <td class="linha_dir"> </td>
    <td class="valor"><?PHP print number_format($_SESSION['valor_boleto'],2,',','.'); ?></td>
  </tr>
  <tr>
    <td colspan="5" class="titulo_inf"> </td>
    <td class="titulo_inf"> </td>
  </tr>
  <tr>
    <td colspan="6" valign="top" class="instrucoes">
		<p><strong>Instruções de impressão</strong></p>
		<p>- Imprima em impressora jato de tinta (ink jet) ou laser em qualidade normal ou alta (Não use modo econômico).</p>
		<p>- Utilize folha A4 (210 x 297 mm) ou Carta (216 x 279 mm) e margens mínimas à esquerda e à direita do formulário.</p>
		<p>- Corte na linha indicada. Não rasure, risque, fure ou dobre a região onde se encontra o código de barras.</p>
		<p> </p>
		<p><strong>Pagamento via Internet Banking</strong></p>
		<p>Caso tenha problemas ao imprimir este boleto, ou se desejar pagá-lo através do Internet Banking, utilize a linha digitável descrita abaixo:</p>
		<p> </p>
		<p align="center" class="linha_digitavelA"><?PHP print $linha_digitavel; ?></p>
		<p> </p>	
		</td>
  </tr>
  
  <tr>
    <td colspan="6" class="titulo_inf">Sacado</td>
  </tr>
  <tr>
    <td colspan="6" class="sacado">
		<?PHP print $boleto['sacado_nome']; ?><br />
		<?PHP print $boleto['sacado_end1']; ?><br />
		<?PHP print $boleto['sacado_end2']; ?></td>
  </tr>
  <tr>
    <td colspan="6" class="avalista">Sacador/Avalista</td>
  </tr>
  <tr>
    <td colspan="6"><div align="right"><strong>Recibo do Sacado  -</strong> <span class="autenticacao">Autenticação Mecânica</span> </div></td>
  </tr>
	
  <tr>
    <td colspan="6"> </td>
  </tr>		
  <tr>
    <td colspan="6"> </td>
  </tr>	
  <tr>
    <td colspan="6"> </td>
  </tr>	
  <tr>
    <td colspan="6"><img src="../siteLoja/imagens/corte.gif" width="700" height="12" /></td>
  </tr>	
  <tr>
    <td colspan="6"> </td>
  </tr>	
  <tr>
    <td colspan="6"> </td>
  </tr>						
</table>

<!-- Ficha de Compensação -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="157" class="logo_banco"><img src="../siteLoja/imagens/logo_banco.gif" width="140" height="23" /></td>
    <td width="51" class="num_banco"><?PHP print $boleto['num_banco'] . "-" . $boleto['dv_banco']; ?></td>
    <td width="492" class="linha_digitavel"><?PHP print $linha_digitavel; ?></td>
  </tr>
</table>

<!-- Ficha de compensação -->
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="5" class="titulo_dir">Local de Pagamento</td>
    <td width="146" class="titulo_inf">Vencimento</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir">PAGAVEL PREFERENCIALMENTE EM QUALQUER AGÊNCIA BANCO TESTE</td>
    <td class="linha_inf"><?PHP print substr($_SESSION['datavenc'],8,2) . "/" . substr($_SESSION['datavenc'],5,2) . "/" . substr($_SESSION['datavenc'],0,4); ?></td>
  </tr>
  <tr>
    <td colspan="5" class="titulo_dir">Cedente</td>
    <td class="titulo_inf">Agência/Código Cedente</td>
  </tr>
  <tr>
    <td colspan="5" class="linha_dir"><?PHP print strtoupper($boleto["cedente_nome"]); ?></td>
    <td class="linha_inf"><?PHP print $boleto["num_agencia"] . "-" . $boleto["dv_agencia"] . "/" . $boleto["num_conta"] . "-" . $boleto["dv_conta"]; ?></td>
  </tr>
  <tr>
    <td width="109" class="titulo_dir">Data do Documento </td>
    <td width="129" class="titulo_dir">Nº do Documento </td>
    <td width="113" class="titulo_dir">Espécie Documento </td>
    <td width="84" class="titulo_dir">Aceite</td>
    <td width="119" class="titulo_dir">Data do Processamento</td>
    <td class="titulo_inf">Nosso Número</td>
  </tr>
  <tr>
    <td class="linha_dir"><?PHP print substr($_SESSION['dataped'],8,2) . "/" . substr($_SESSION['dataped'],5,2) . "/" . substr($_SESSION['dataped'],0,4); ?></td>
    <td class="linha_dir"><?PHP print $_SESSION['num_ped']; ?></td>
    <td class="linha_dir"><?PHP print $boleto["especie_doc"]; ?></td>
    <td class="linha_dir"><?PHP print $boleto["aceite"]; ?></td>
    <td class="linha_dir"><?PHP print date('d/m/Y'); ?></td>
    <td class="linha_inf"><?PHP print $boleto['carteira'] . "-" . $boleto['nosso_numero']; ?></td>
  </tr>
  <tr>
    <td class="titulo_dir">Uso do Banco </td>
    <td class="titulo_dir">Carteira</td>
    <td class="titulo_dir">Espécie</td>
    <td class="titulo_dir">Quantidade</td>
    <td class="titulo_dir">Valor</td>
    <td class="titulo_inf">(=) Valor do Documento </td>
  </tr>
  <tr>
    <td class="linha_dir"> </td>
    <td class="linha_dir"><?PHP print $boleto['carteira']; ?></td>
    <td class="linha_dir"><?PHP print $boleto['especie']; ?></td>
    <td class="linha_dir"> </td>
    <td class="linha_dir"> </td>
    <td class="valor"><?PHP print number_format($_SESSION['valor_boleto'],2,',','.'); ?></td>
  </tr>
  <tr>
    <td colspan="5" class="titulo_dir">INSTRUÇÕES (Texto de responsabilidade do Cedente) </td>
    <td class="titulo_inf">(-) Desconto/Abatimento </td>
  </tr>
  <tr>
    <td colspan="5" rowspan="9" valign="top" class="linha_dir">
		<p> </p>
		<p>ATENÇÂO:</p>
		<p>- Não pague este boleto após o seu vencimento.</p>
		<p>- Após esta data o pedido será cancelado e o boleto perderá a validade.
		<p> </p>
		<p>BOLETO PARA FINS DIDÁTICOS   *** NUNCA EFETUE SEU PAGAMENTO ***</p>
		</td>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(-) Outras Deduções </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(+) Mora/Multa </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(+) Outros Acréscimos </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td class="titulo_inf">(=) Valor Cobrado </td>
  </tr>
  <tr>
    <td class="linha_inf"> </td>
  </tr>
  <tr>
    <td colspan="6" class="titulo_inf">Sacado</td>
  </tr>
  <tr>
    <td colspan="6" class="sacado">
		<?PHP print $boleto['sacado_nome']; ?><br />
		<?PHP print $boleto['sacado_end1']; ?><br />
		<?PHP print $boleto['sacado_end2']; ?></td>
  </tr>
  <tr>
    <td colspan="5" class="avalista">Sacador/Avalista</td>
    <td class="avalista"><div align="right">Código de Baixa </div></td>
  </tr>
  <tr>
    <td colspan="6"><div align="right"><strong>Ficha de Compensação -</strong> <span class="autenticacao">Autenticação Mecânica</span> </div></td>
  </tr>
	
  <tr>
    <td colspan="6"><?PHP print $boleto['cod_grafico']; ?></td>
  </tr>		
</table>
</body>
</html>
<?PHP
// Destroi variáveis de seção
session_destroy();

// Libera os recursos usados pela conexão atual
mysql_free_result($rs);
mysql_close ($conexao);
?>

 

Espero ter ajudado no seu problema.

 

Cesar

Valeu amigo,mas seu boleto não está gerando o código de barras,e o que postei está quase tudo pronto,falta só algumas conclusões que é justamente ele gerar o valor no arquivo função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

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