Ir para conteúdo

POWERED BY:

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 violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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