PDA

Ver la Versión Completa : ¿ llamar a la EZnewpage() de la clase R&OS ¿


lakers
17-04-2008, 21:15:54
hola
muy wenas a td@s.
haber si me podéis hechar la mano en este tema yak me ase falta urgentemente.
pues mi intención de generar nuevos informes(facturas en pdf) a cada vez que se cambie
el nombre del cliente,con el total de compra de éste último.estuve mirando manual R&OS precisamente viene la función EZnewpage() para generar
nuevas páginas,pero no viene ningun ejemplo,ni cómo usarla ni para para llamarla¿
este es el script que hice

$c=mysql_connect("localhost","","hosting") or die(" problemas al establecer la conexión");
mysql_select_db("pruebas") or die ("problemas al seleccionar la base de datos");
$consulta="select cliente.nombre as nombre,
producto.descrip,
producto.precio,
sum(compra.cantidad),
sum(producto.precio * compra.cantidad) AS total
from cliente,producto,compra
where compra.id_cliente = cliente.id
and compra.id_prod = producto.id
group by cliente.nombre,
producto.descrip,
producto.precio";
$r=mysql_query($consulta,$c) or die ("error al ejecutar la query ");
$cont=0;
$num_res=mysql_num_rows($r);

$row=mysql_fetch_array($r);
/*aqui lo que hago es el resultado del query que son 5 columnas
guardo solamente lo que es la primera columna que es el nombre
de cada cliente y lo meto en un array para que posteriormente
mediante do while puedo recorrerlo e ir preguntando si el
nombre es distinto o no
*/
$nombre = $row["nombre"];
$total = 0;
do {
/*lo que me falta para implementar
k nosé cómo meterle mano entonces una vez
que se cambia el nombre habrá que mostrar un nuevo pdf con el total
de su compra asi sucesivmente*/
if($nombre != $row["nombre"]) {
echo "Salto de pagina pdf-- ";
$total = 0;
$nombre = $row["nombre"];
}
echo $nombre." -- ";
$total++;
echo $total;
} while($row=mysql_fetch_array($r));
mysql_free_result($r);
mysql_close($c);
exit;

maestro lucasarts y compañia si tenéis otra solución alternativa o habéis utilizado dicha función estaré agradecido si me la podéis facilitar.
espero vuestra colaboración.
saludos

lucasarts_18
17-04-2008, 22:50:46
Hola:

Tengo un ejemplo completo de algo similar a lo que quieres, el reporte que tengo lo que hace es que cuando cambia el número de un registro me suma los totales y me crea una nueva página, sim embargo, está implementada con las librerias FPDF.

Si quereís echar un vistazo al algoritmo en sí (se trata de darse cuenta cuando el cambio de registro se produce) y de esta forma crear una nueva página. Puedes sacar la idea de ahí, estudiar su código, tratar de asimilarlo (esto puede ser un poco complejo, entender código de terceros siempre es complicado :D), en fin lo demás depende de ti, quizás utilizar las mismas librerias o migrar la lógica a la librería que tienes tú.

Por ahora no lo tengo a mano, a la noche te subo el código fuente completo de ese reporte.

Hasta Luego .-

lakers
18-04-2008, 00:28:12
muchisima gracias maestro lucasarts
si la libreria fpdf me permite ejecutar lo que quiero puedo cambiar al fpdf
me da = io :p,solamente lo que quiero que me funciona el salto de página a cada vez que se cambie el nombre con el total de compra de cada uno.
muchisima gracias
saludos
:):D

lucasarts_18
18-04-2008, 05:34:32
Hola:

Aquí tienes el código:


<?php
/*
* @Autor: Aarón García A
* @Fecha: 26 de Febrero de 2008
* @Descripción: Permite mostrar reporte detallado de cajones.
*/

session_start();
include ('../../../libs_php/fpdf/fpdf.php');
include ('../../includes/funciones.php');
include ('../../includes/informes.inc.php');


class PDF extends FPDF {
function Footer() {
//Go to 1.5 cm from bottom
$this->SetY(-15);
//Select Arial italic 8
$this->SetFont('Arial','I',8);
//Print centered page number
$this->Cell(0,10,'Página '.$this->PageNo(),0,0,'C');
}
}

$pdf = new PDF();
$pdf->AddPage();


$despNum = $_GET['despnum'];

$cajones = listarReporteCajonesDetallado($despNum);
$nroCajon = -999;
$i = 0;

for ($j = 0; $j < count($cajones); $j++){

if ($j == 0) {
$pdf->SetFont('Arial','B',10);
$pdf->Text(11,30,'Número de Despacho: ');
$pdf->Text(120,30,'Fecha de Despacho: ');

$pdf->SetFont('Arial','',10);
$pdf->Text(50,30,$cajones[$j]['DespNum']);
$pdf->Text(155,30,$cajones[$j]['DespFec']);
}

//si cambia de cajón y no es el primer registro genero resumen de cajón
//en caso contrario sigo llenando los datos del producto que contiene el cajón.
if ($cajones[$j]['EmbNumCaja'] <> $nroCajon) {
if ($j > 0){
$pdf->SetFont('Arial','B',8);
$pdf->Ln(10);

$idxAnt = $j - 1;

$pdf->Cell(40,5,'NUMERO CAJON:',0);
$pdf->Cell(15,5,$nroCajon,0,0,'R');
$pdf->Ln(5);
$pdf->Cell(40,5,'COSTO CAJON EXTERNO: $',0);
$pdf->Cell(15,5,convertirMiles($cajones[$idxAnt]['CostoCajonExterno']),0,0,'R');
$pdf->Ln(5);
$pdf->Cell(40,5,'COSTO CAJON INTERNO : $',0);
$pdf->Cell(15,5,convertirMiles($cajones[$idxAnt]['CostoCajonInterno']),0,0,'R');
$pdf->AddPage();

}


$nroCajon = $cajones[$j]['EmbNumCaja'];

$pdf->SetFont('Arial','B',10);
$pdf->Text(11,35,'Número de Cajón: ');
$pdf->Text(11,45,'Fecha Cajón: ');
$pdf->Text(11,55,'Nombre: ');
$pdf->Text(100,55,'Rut: ');
$pdf->Text(11,60,'Dirección:');
$pdf->Text(100,60,'Ciudad:');
$pdf->SetFont('Arial','',10);

$pdf->Text(42,35,$cajones[$j]['EmbNumCaja']);
$pdf->Text(35,45,$cajones[$j]['EmbFec']);
$pdf->Text(30,55,$cajones[$j]['ClieNom']);
$pdf->Text(110,55,$cajones[$j]['ClieRut']);
$pdf->Text(30,60,$cajones[$j]['ClieDir']);
$pdf->Text(115,60,$cajones[$j]['ClieCiu']);
$pdf->Ln(70);

$pdf->SetFont('Arial','B',10);

$pdf->Cell(15,5,'Código',0);
$pdf->Cell(80,5,'Descripción',0);
$pdf->Cell(20,5,'Cantidad',0);
$pdf->Cell(20,5,'Factor',0);
$pdf->Cell(15,5,'Subt.',0);
$pdf->Cell(15,5,'Costo',0);
$pdf->Cell(15,5,'C.Flete',0);

$pdf->Line(5,85,200,85);
$pdf->Ln(7);
$pdf->SetFont('Arial','',8);

$pdf->Cell(15,5,$cajones[$j]['ProdCod'],0);
$pdf->Cell(80,5,$cajones[$j]['ProdNom'],0);
$pdf->Cell(17,5,$cajones[$j]['Det_EmbProdCant'],0,0,'R');
$pdf->Cell(20,5,$cajones[$j]['Det_EmbFactor'],0,0,'C');
$pdf->Cell(15,5,'',0);
$pdf->Cell(15,5,'',0);
$pdf->Cell(15,5,'',0);

}else{
$pdf->Ln(5);
$pdf->Cell(15,5,$cajones[$j]['ProdCod'],0);
$pdf->Cell(80,5,$cajones[$j]['ProdNom'],0);
$pdf->Cell(17,5,$cajones[$j]['Det_EmbProdCant'],0,0,'R');
$pdf->Cell(20,5,$cajones[$j]['Det_EmbFactor'],0,0,'C');
$pdf->Cell(15,5,'',0);
$pdf->Cell(15,5,'',0);
$pdf->Cell(15,5,'',0);
}

$i = $j;
}



$pdf->SetFont('Arial','B',8);
$pdf->Ln(10);

$pdf->Cell(40,5,'NUMERO CAJON:',0);
$pdf->Cell(15,5,$cajones[$i]['EmbNumCaja'],0,0,'R');
$pdf->Ln(5);
$pdf->Cell(40,5,'COSTO CAJON EXTERNO: $',0);
$pdf->Cell(15,5,convertirMiles($cajones[$i]['CostoCajonExterno']),0,0,'R');
$pdf->Ln(5);
$pdf->Cell(40,5,'COSTO CAJON INTERNO : $',0);
$pdf->Cell(15,5,convertirMiles($cajones[$i]['CostoCajonInterno']),0,0,'R');



$pdf->Output();

?>
Hay que masticarlo su resto, pero ese reporte hace salto de página con la instrucción $pdf->AddPage();

Hasta Luego .-

lakers
18-04-2008, 13:36:52
gracias lucasarts por tu script,
intentraré adecuarlo con lo que tengo
saludos
:D:cool: