Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   ¿ llamar a la EZnewpage() de la clase R&OS ¿ (https://www.clubdelphi.com/foros/showthread.php?t=55477)

lakers 17-04-2008 21:15:54

¿ llamar a la EZnewpage() de la clase R&OS ¿
 
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ódigo PHP:

$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:

Código PHP:

<?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:


La franja horaria es GMT +2. Ahora son las 15:10:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi