Você está na página 1de 8

Archivo

demo.php

001
<!DOCTYPE HTML>
002
<html>
003
<head>
004
<meta charset="ISO-8859-1">
005
<title>DEMO FACTURAS PDF</title>
006
<style>
007
body {
008
font-family: sans-serif, verdana, arial;
009
}
010
011
table tr td:first-child
012
{
013
text-align: right;
014
}
015
</style>
016
</head>
017
<body>
018
<center>
019 <h3>DEMO DE GENERAR FACTURAS EN FORMATO PDF CON PHP</h3>
<h4>El script crear la factura para que la guardes en tu PC
020 personal, el script elimina automticamente la factura, de modo
que slo pueda tener acceso a la misma el administrador.</h4>
021
022
023
024
025
026
027
028
029
030
031
032
033

<form method="post" action="facturas/facturas.php">


<button type="submit">GENERAR FACTURA PDF</button>
<h3>Los datos de la factura demo son los siguientes ...</h3>
<table>
<tr>
<td>ID de factura:</td>
<td><input
type="text" name="id_factura" value="1" size="5"></td>
</tr>
<tr>
<td>fecha emisin de factura:</td>

<td><input type="text" name="fecha_factura" value="<?php echo


date("d-m-Y"); ?>" size="15"></td>
035
</tr>
036
<tr>
037
<td>Nombre de la tienda:</td>
034

<td><input type="text" name="nombre_tienda" value="Nombre de la


tienda S.L" size="50"></td>
039
</tr>
040
<tr>
041
<td>Direccin de la tienda:</td>
038

<td><input type="text" name="direccion_tienda" value="C/


demostracin n 1" size="50"></td>
043
</tr>
042

044
045
046
047
048
049
050
051
052
053
054
055
056
057

<tr>
<td>Poblacin de la tienda:</td>
<td><input
type="text" name="poblacion_tienda" value="Madrid" size="25"></td>
</tr>
<tr>
<td>Provincia de la tienda:</td>
<td><input
type="text" name="provincia_tienda" value="Madrid" size="25"></td>
</tr>
<tr>
<td>Cdigo Postal de la tienda:</td>
<td><input
type="text" name="codigo_postal_tienda" value="28080" size="5"></td>
</tr>
<tr>
<td>Telfono de la tienda:</td>

<td><input type="text" name="telefono_tienda" value="900 00 00


00"size="15"></td>
059
</tr>
060
<tr>
061
<td>Fax de la tienda:</td>
058

<td><input type="text" name="fax_tienda" value="900 00 00


00" size="15"></td>
063
</tr>
064
<tr>
065
<td>Identificacion Fiscal de la tienda:</td>
<td><input
06
type="text"
name="identificacion_fiscal_tienda"value="11223344N" siz
6
e="15"></td>
067
</tr>
068
<tr>
069
<td><hr></td>
070
<td><hr></td>
071
</tr>
072
<tr>
073
<td>Nombre del cliente:</td>
<td><input
074
type="text" name="nombre_cliente" value="Fernando" size="15"></td>
075
</tr>
076
<tr>
077
<td>Apellidos del cliente:</td>
062

<td><input type="text" name="apellidos_cliente" value="Garca


Garca"size="15"></td>
079
</tr>
080
<tr>
081
<td>Direccin del cliente:</td>
078

082
083
084
085
086

<td><input type="text" name="direccion_cliente" value="C/


cualquiera n 1"size="50"></td>
</tr>
<tr>
<td>Poblacin del cliente:</td>
<td><input

type="text" name="poblacion_cliente" value="Sevilla" size="25"></td>


</tr>
<tr>
<td>Provincia del cliente:</td>
<td><input
090
type="text" name="provincia_cliente" value="Sevilla" size="25"></td>
091
</tr>
092
<tr>
093
<td>Cdigo Postal del cliente:</td>
<td><input
094
type="text" name="codigo_postal_cliente" value="41070"size="5"></td>
095
</tr>
096
<tr>
097
<td>Identificacion Fiscal del cliente:</td>
<td><input
09
8 type="text" name="identificacion_fiscal_cliente"value="44332211N" si
ze="15"></td>
099
</tr>
100
</table>
101
102
<h3>PRODUCTOS</h3>
103
087
088
089

104
105
106
107
108
109
110

<table cellpadding="5" border="1">


<tr>
<td>Impuestos:</td>

<td><input type="text" name="iva" value="21" size="5"> %</td>


</tr>
<tr>
<td>Gastos de envo</td>
<td><input
111
type="text" name="gastos_de_envio" value="5.95" size="5"> </td>
112 </tr>
113
</table>
114
<p><mark>Ver cdigo fuente para ver simulacin de extraccin de
115
los datos de productos de una base de datos!</mark></p>
116
117 <table cellpadding="5" border="1">
<tr><th>Unidades</th><th>Productos</th><th>Precio
118
unidad</th></tr>
119 <?php
//Demo de Array de productos simulando extraccin de datos de una
120
base de datos.
121
$array_productos = array
122
(
123 "unidades" => array(1, 4, 3),
124 "productos" => array("Zapatos", "Camisetas", "Pantalones"),
125
"precio_unidad" => array(20.30, 15, 50)
126
);
127 $x = 0;
128 while($x <= count($array_productos["unidades"]) - 1)

129
{
130
echo
131
"
132
<tr>
133 <td>".$array_productos["unidades"][$x]."</td>
134 <td>".$array_productos["productos"][$x]."</td>
135 <td>".$array_productos["precio_unidad"][$x]." </td>
136 </tr>
137
";
138
$x++;
139 }
// A continuacin se guardan en variables los datos de los
140
productos, separados por comas
// que luego sern extrados a travs de la funcin explode a la
141
hora de generar la factura
142 $unidades = implode(",", $array_productos["unidades"]);
143 $productos = implode(",", $array_productos["productos"]);
144 $precio_unidad = implode(",", $array_productos["precio_unidad"]);
// A continuacin se guardarn los datos de los productos a travs
145
de campos ocultos
146 ?>
147
</table>
148
149 <input type="hidden" name="unidades" value="<?php echo $unidades; ?
>">
150 <input type="hidden" name="productos" value="<?php echo $productos;
?>">
151 <input type="hidden" name="precio_unidad" value="<?php echo
$precio_unidad; ?>">
152 <!-- Campo que hace la llamada al script que genera la factura -->
153 <input type="hidden" name="generar_factura" value="true">
154 </form>
155
156
157
158
159
160
161
162
163

</center>
</body>
</html>

Archivo
001
002
003
004
005
006

facturas.php ...

<?php
if ($_POST["generar_factura"] == "true")
{
//Recibir detalles de factura
$id_factura = $_POST["id_factura"];

007

$fecha_factura = $_POST["fecha_factura"];

008
009
010

//Recibir los datos de la empresa


$nombre_tienda = $_POST["nombre_tienda"];

011

$direccion_tienda = $_POST["direccion_tienda"];

012

$poblacion_tienda = $_POST["poblacion_tienda"];

013 $provincia_tienda = $_POST["provincia_tienda"];


014 $codigo_postal_tienda = $_POST["codigo_postal_tienda"];
015

$telefono_tienda = $_POST["telefono_tienda"];

016

$fax_tienda = $_POST["fax_tienda"];

017 $identificacion_fiscal_tienda = $_POST["identificacion_fiscal_tiend


a"];
018
019 //Recibir los datos del cliente
020 $nombre_cliente = $_POST["nombre_cliente"];
021

$apellidos_cliente = $_POST["apellidos_cliente"];

022

$direccion_cliente = $_POST["direccion_cliente"];

023

$poblacion_cliente = $_POST["poblacion_cliente"];

024

$provincia_cliente = $_POST["provincia_cliente"];

025 $codigo_postal_cliente = $_POST["codigo_postal_cliente"];


026 $identificacion_fiscal_cliente = $_POST["identificacion_fiscal_clie
nte"];
027
028
//Recibir los datos de los productos
029 $iva = $_POST["iva"];
030

$gastos_de_envio = $_POST["gastos_de_envio"];

031

$unidades = $_POST["unidades"];

032

$productos = $_POST["productos"];

033
034
035
036
037
038
039
040
041
042
043

$precio_unidad = $_POST["precio_unidad"];
//variable que guarda el nombre del archivo PDF
$archivo="factura-$id_factura.pdf";
//Llamada al script fpdf
require('fpdf.php');

$archivo_de_salida=$archivo;

044

$pdf=new FPDF(); //crea el objeto


$pdf->AddPage(); //aadimos una pgina. Origen coordenadas,
045 esquina superior izquierda, posicin por defeto a 1 cm de los
bordes.
046
047
048

//logo de la tienda

049 $pdf->Image('../empresa.jpg' , 0 ,0, 40 , 40,'JPG', 'http://phpestudios.blogspot.com');

050
051
052
053
054

// Encabezado de la factura
$pdf->SetFont('Arial','B',14);
$pdf->Cell(190, 10, "FACTURA", 0, 2, "C");
$pdf->SetFont('Arial','B',10);
$pdf->MultiCell(190,5, "Nmero de factura:
055
$id_factura"."\n"."Fecha: $fecha_factura", 0, "C", false);
056 $pdf->Ln(2);
057
058
// Datos de la tienda
059
$pdf->SetFont('Arial','B',12);
060
$top_datos=45;
061 $pdf->SetXY(40, $top_datos);
062 $pdf->Cell(190, 10, "Datos de la tienda:", 0, 2, "J");
063
$pdf->SetFont('Arial','',9);
064
$pdf->MultiCell(190, //posicin X
065
5, //posicin Y
066
$nombre_tienda."\n".
067
"Direccin: ".$direccion_tienda."\n".
068
"Poblacin: ".$poblacion_tienda."\n".
069 "Provincia: ".$provincia_tienda."\n".
070 "Cdigo Postal: ".$codigo_postal_tienda."\n".
071
"Telfono: ".$telefono_tienda."\n".
072
"Fax: ".$fax_tienda."\n".
073 "Indentificacin Fiscal: ".$identificacion_fiscal_tienda,
074 0, // bordes 0 = no | 1 = si
075
"J", // texto justificado
076
false);
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101

// Datos del cliente


$pdf->SetFont('Arial','B',12);
$pdf->SetXY(125, $top_datos);
$pdf->Cell(190, 10, "Datos del cliente:", 0, 2, "J");
$pdf->SetFont('Arial','',9);
$pdf->MultiCell(
190, //posicin X
5, //posicion Y
"Nombre: ".$nombre_cliente."\n".
"Apellidos: ".$apellidos_cliente."\n".
"Direccin: ".$direccion_cliente."\n".
"Poblacin: ".$poblacion_cliente."\n".
"Provincia: ".$provincia_cliente."\n".
"Cdigo Postal: ".$codigo_postal_cliente."\n".
"Identificacin Fiscal: ".$identificacion_fiscal_cliente,
0, // bordes 0 = no | 1 = si
"J", // texto justificado
false);
//Salto de lnea
$pdf->Ln(2);

102
103

// extraccin de los datos de los productos a travs de la funcin


explode

104 $e_productos = explode(",", $productos);


105 $e_unidades = explode(",", $unidades);
106 $e_precio_unidad = explode(",", $precio_unidad);
107
108 //Creacin de la tabla de los detalles de los productos productos
109
$top_productos = 110;
110
$pdf->SetXY(45, $top_productos);
111
$pdf->Cell(40, 5, 'UNIDADES', 0, 1, 'C');
112
$pdf->SetXY(80, $top_productos);
113
$pdf->Cell(40, 5, 'PRODUCTOS', 0, 1, 'C');
114
$pdf->SetXY(115, $top_productos);
115
$pdf->Cell(40, 5, 'PRECIO UNIDAD', 0, 1, 'C');
116
117 $precio_subtotal = 0; // variable para almacenar el subtotal
118 $y = 115; // variable para la posicin top desde la cual se
empezarn a agregar los datos
119
$x=0;
120
while($x <= count($e_productos) - 1)
121
{
122
$pdf->SetFont('Arial','',8);
123
124
$pdf->SetXY(45, $y);
125
$pdf->Cell(40, 5, $e_unidades[$x], 0, 1, 'C');
126
$pdf->SetXY(80, $y);
127
$pdf->Cell(40, 5, $e_productos[$x], 0, 1, 'C');
128
$pdf->SetXY(115, $y);
129
$pdf->Cell(40, 5, $e_precio_unidad[$x]." ", 0, 1, 'C');
130
131 //Clculo del subtotal
132 $precio_subtotal += $e_precio_unidad[$x] * $e_unidades[$x];
133
$x++;
134
135
// aumento del top 5 cm
136
$y = $y + 5;
137
}
138
139
//Clculo del Impuesto
140
$add_iva = $precio_subtotal * $iva / 100;
141
142

//Clculo del precio total

143 $total_mas_iva = round($precio_subtotal + $add_iva + $gastos_de_envi


o, 2);
144
145
$pdf->Ln(2);
146
$pdf->SetFont('Arial','B',10);
$pdf->Cell(190, 5, "Gastos de envo: $gastos_de_envio ", 0,
147
1, "C");

148 $pdf->Cell(190, 5, "I.V.A: $iva %", 0, 1, "C");


149 $pdf->Cell(190, 5, "Subtotal: $precio_subtotal ", 0, 1, "C");
150 $pdf->Cell(190, 5, "TOTAL: ".$total_mas_iva." ", 0, 1, "C");
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165

$pdf->Output($archivo_de_salida);//cierra el objeto pdf


//Creacion de las cabeceras que generarn el archivo pdf
header ("Content-Type: application/download");
header ("Content-Disposition: attachment; filename=$archivo");
header("Content-Length: " . filesize("$archivo"));
$fp = fopen($archivo, "r");
fpassthru($fp);
fclose($fp);
//Eliminacin del archivo en el servidor
unlink($archivo);
}

http://php-estudios.blogspot.pe/2013/02/generar-facturas-pdf-con-php.html

Você também pode gostar