Yii Framework Forum: [Resuelto] Multiples Tablas En Un Reporte - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Resuelto] Multiples Tablas En Un Reporte Ver en un reporte en html varias consultas Rate Topic: -----

#1 User is offline   rafaelrosales 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 88
  • Joined: 02-October 13

Posted 21 April 2014 - 08:10 AM

Hola a todos estoy haciendo un reporte en html y necesito ejecutar dentro del mismo varias consultas y mostrarlas con su dataReader, para ello hice lo siguiente:
//Comprobante de operaciones	
public function actionComprobante()
		{
        	$this->render('Comprobante');
    	}
		public function actionReporteComprobante()
	{    	
 			$desde = date('Y-m-d',strtotime($_POST['fechainicio']));
        	$hasta = date('Y-m-d',strtotime($_POST['fechafin'])); 
			$codUEB = $_POST['entidad']; 
			$Ent = "asad";
  		
   		$model=$this->loadModel(); 
  	$sql='SELECT `entidades`.`NEnt` AS `Entidad` FROM `entidades` WHERE `CodUEB` = "'.$codUEB.'"';
        	$Ent = Yii::app()->db->createCommand($sql);
        	$dataReader = $Ent->queryAll();
         	foreach($dataReader as $row)
         	{   			
 			$Ent=$row['Entidad'];
         	}		
   //Consultas laboratorios 

$sql1='SELECT
  	`entidades`.`NEnt` AS `Entidad`,
  	`nmcuen`.`Cuenta`,
  	`nmcuen`.`SubCuenta`,
  	`nmcuen`.`Analisis`,
  	`nmcuen`.`Subanalisis`,
  	`nmcuen`.`Naturaleza`,
  	`detallesfact`.`cantidad`,
  	`datossal`.`nfactura`,
  	`datossal`.`fecha`,
  	`detallesfact`.`Codprod`,
  	CASE when clientes.UPMin= 2 THEN productos.PreMin
   		when (clientes.UPMay= 2) THEN productos.PreMay else 0 end AS PrecioMN,
  	CASE when (`nmcuen`.`Cuenta` = 731 AND
  				`nmcuen`.`subcuenta` = 0100 AND
  				`nmcuen`.`Analisis` = 25059 AND
  				`nmcuen`.`Subanalisis` = 800305) THEN (CASE when (clientes.UPMay= 2) THEN (productos.PreMay)end)*(`detallesfact`.`cantidad`) else 0 end AS DEBE,
  	CASE when (`nmcuen`.`Cuenta` = 188 AND
  				`nmcuen`.`subcuenta` = 0140 AND
  				`nmcuen`.`Analisis` = 206) THEN (CASE when (clientes.UPMay= 2) THEN (productos.PreMay)end)*(`detallesfact`.`cantidad`) else 0 end AS HABER
	FROM
  	`datossal`
  	INNER JOIN `detallesfact` ON (`datossal`.`id` = `detallesfact`.`Id_sal`)
  	INNER JOIN `tiposalida` ON (`datossal`.`Codsalida` = `tiposalida`.`Codsalida`)
  	INNER JOIN `productos` ON (`detallesfact`.`Codprod` = `productos`.`Codprod`)
  	INNER JOIN `clientes` ON (`datossal`.`CodCliente` = `clientes`.`CodCliente`)
  	INNER JOIN `entidades` ON (`datossal`.`CodUEB` = `entidades`.`CodUEB`),
  	`nmcuen`
  	WHERE
  	((`datossal`.`fecha`) Between "'.$desde.'" And "'.$hasta.'") AND 	
   	(`entidades`.`CodUEB` = "'.$codUEB.'") AND 
  	((`nmcuen`.`Cuenta` = 731 AND
  	`nmcuen`.`subcuenta` = 0100 AND
  	`nmcuen`.`Analisis` = 25059 AND
  	`nmcuen`.`Subanalisis` = 800305) OR
  	(`nmcuen`.`Cuenta` = 188 AND
  	`nmcuen`.`subcuenta` = 0140 AND
  	`nmcuen`.`Analisis` = 206)) AND
  	`tiposalida`.`Codsalida` = 4
 	GROUP BY
  	datossal.nfactura,
  	nmcuen.Cuenta,
  	`detallesfact`.`Codprod`
	ORDER BY
   	`nmcuen`.`Cuenta`,
  	`nmcuen`.`SubCuenta`,
  	`nmcuen`.`Analisis`,
  	`nmcuen`.`Subanalisis`';                	
 

        	$command = Yii::app()->db->createCommand($sql1);		
        	$dataReader1 = $command->queryAll();
			
		                     		
			$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';
			$html.='<th><div align="left">Cuenta</div></th>';
			$html.='<th><div align="left">Sub-Cuenta</div></th>';
			$html.='<th><div align="left">Analisis</div></th>';
			$html.='<th><div align="left">Elemento</div></th>';
			$html.='<th><div align="left">#Factura</div></th>';
			$html.='<th><div align="left">DEBE</div></th>';
			$html.='<th><div align="left">HABER</div></th>';
			
			$html.='</tr>';		
			
			$totalDEBE=0;
			$totalHABER=0;	
			
  		foreach($dataReader1 as $row1){   			
            	$html.='<tr>';
				$html.='<td><div align="left">'.$row1['Cuenta'].'</div></td>';
				$html.='<td><div align="center">'.$row1['SubCuenta'].'</div></td>';	
				$html.='<td><div align="center">'.$row1['Analisis'].'</div></td>';	
				$html.='<td><div align="center">'.$row1['Subanalisis'].'</div></td>';					
				$html.='<td><div align="center">'.$row1['nfactura'].'</div></td>';
				$html.='<td><div align="right">'.number_format($row1['DEBE'],2).'</div></td>';
				$html.='<td><div align="right">'.number_format($row1['HABER'],2).'</div></td>';
				$html.='</tr>';
			
           		$totalDEBE+=$row1['DEBE'];
				$totalHABER+=$row1['HABER'];				
        	}
				$html.='<tr>';
				$html.='<td><div align="left"><strong>TOTAL MUESTRAS LAB</strong></div></td>';
				$html.='<td><div align="center"></div></td>';						
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalDEBE,2).'</strong></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalHABER,2).'</strong></div></td>';	
				$html.='<td><div align="center"></div></td>';
         	$html.='</tr>';
        	
        	$html.='</table><br/>';	

//Consulta Mermas	
	$sql2='SELECT
   	`entidades`.`NEnt`,
  	`nmcuen`.`Cuenta`,
  	`nmcuen`.`SubCuenta`,
  	`nmcuen`.`Analisis`,
  	`nmcuen`.`Subanalisis`,
  	`detallesfact`.`cantidad`,
  	`datossal`.`nfactura`,
  	`datossal`.`fecha`,
  	`detallesfact`.`Codprod`,
  	`productos`.`PrCUC`,
  	`datossal`.`Codsalida`,
  	CASE when clientes.UPMin= 2 THEN productos.PreMin
			when clientes.UPMay= 2 THEN productos.PreMay else 0 end AS PrecioMN,
   	`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
   		when clientes.UPMay= 2 THEN productos.PreMay else 0 end) AS Valor,
  	CASE when (`nmcuen`.`Cuenta` = 188) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
			when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS HABER,
   	CASE when (`nmcuen`.`Cuenta` = 819) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
   		when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS DEBE
	FROM
  	`datossal`
  	INNER JOIN `detallesfact` ON (`datossal`.`id` = `detallesfact`.`Id_sal`)
  	INNER JOIN `tiposalida` ON (`datossal`.`Codsalida` = `tiposalida`.`Codsalida`)
  	INNER JOIN `productos` ON (`detallesfact`.`Codprod` = `productos`.`Codprod`)
  	INNER JOIN `clientes` ON (`datossal`.`CodCliente` = `clientes`.`CodCliente`)
  	INNER JOIN `entidades` ON (`datossal`.`CodUEB` = `entidades`.`CodUEB`)
  	INNER JOIN `nmcuen` ON (`nmcuen`.`CodUEB` = `entidades`.`CodUEB`)
  	AND (`datossal`.`CodUEB` = `nmcuen`.`CodUEB`)
	WHERE
 	((`datossal`.`fecha`) Between "'.$desde.'" And "'.$hasta.'") AND 	
   	(`entidades`.`CodUEB` = "'.$codUEB.'") AND 
  	(`nmcuen`.`Cuenta` = 819 AND
  	`nmcuen`.`SubCuenta` = 0100 OR
  	`nmcuen`.`Cuenta` = 188 AND
  	`nmcuen`.`SubCuenta` = 0140) AND
  	`datossal`.`Codsalida` = 8
	ORDER BY
  	`nmcuen`.`Cuenta`';  
  
   		$command = Yii::app()->db->createCommand($sql2);		
        	$dataReader2= $command->queryAll();
			
		
         	$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';
			$html.='<th><div align="left">Cuenta</div></th>';
			$html.='<th><div align="left">Sub-Cuenta</div></th>';
			$html.='<th><div align="left">Analisis</div></th>';
			$html.='<th><div align="left">Elemento</div></th>';
			$html.='<th><div align="left">#Factura</div></th>';
			$html.='<th><div align="left">DEBE</div></th>';
			$html.='<th><div align="left">HABER</div></th>';
					
      	
			$html.='</tr>';		
			
			$totalDEBE=0;
			$totalHABER=0;	
			
  		foreach($dataReader2 as $row2){   			
            	$html.='<tr>';
				$html.='<td><div align="left">'.$row2['Cuenta'].'</div></td>';
				$html.='<td><div align="center">'.$row2['SubCuenta'].'</div></td>';	
				$html.='<td><div align="center">'.$row2['Analisis'].'</div></td>';	
				$html.='<td><div align="center">'.$row2['Subanalisis'].'</div></td>';		
				$html.='<td><div align="center">'.$row2['nfactura'].'</div></td>';
				$html.='<td><div align="right">'.number_format($row2['DEBE'],2).'</div></td>';
				$html.='<td><div align="right">'.number_format($row2['HABER'],2).'</div></td>';
				$html.='</tr>';
			
           		$totalDEBE+=$row2['DEBE'];
				$totalHABER+=$row2['HABER'];				
        	}
				$html.='<tr>';
				$html.='<td><div align="left"><strong>TOTAL MERMAS</strong></div></td>';
				$html.='<td><div align="center"></div></td>';						
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalDEBE,2).'</strong></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalHABER,2).'</strong></div></td>';	
				$html.='<td><div align="center"></div></td>';
         	$html.='</tr>';
        	
        	$html.='</table><br/>';	
	
	//Costo de la produccion vendida
	//Consulta
	$sql3='SELECT DISTINCT
  		`entidades`.`NEnt`,
  		`nmcuen`.`Cuenta`,
  		`nmcuen`.`SubCuenta`,
  		`nmcuen`.`Analisis`,
  		`nmcuen`.`Subanalisis`,
  		`detallesfact`.`cantidad`,
  		`datossal`.`nfactura`,
  		`datossal`.`fecha`,
  		`detallesfact`.`Codprod`,
  		`productos`.`PrCUC`,
  		`datossal`.`Codsalida`,
  		`productos`.`PrCosto`,
			CASE when (`nmcuen`.`Cuenta` = 188) THEN `detallesfact`.`cantidad`* productos.PrCosto END AS HABER,
   		CASE when (`nmcuen`.`Cuenta` = 810) THEN `detallesfact`.`cantidad`* productos.PrCosto END AS DEBE
		FROM
  		`datossal`
  		INNER JOIN `detallesfact` ON (`datossal`.`id` = `detallesfact`.`Id_sal`)
  		INNER JOIN `tiposalida` ON (`datossal`.`Codsalida` = `tiposalida`.`Codsalida`)
  		INNER JOIN `productos` ON (`detallesfact`.`Codprod` = `productos`.`Codprod`)
  		INNER JOIN `clientes` ON (`datossal`.`CodCliente` = `clientes`.`CodCliente`)
  		INNER JOIN `entidades` ON (`datossal`.`CodUEB` = `entidades`.`CodUEB`)
  		INNER JOIN `nmcuen` ON (`nmcuen`.`CodUEB` = `entidades`.`CodUEB`)
  		AND (`datossal`.`CodUEB` = `nmcuen`.`CodUEB`)
			WHERE
         	((`datossal`.`fecha`) Between "'.$desde.'" And "'.$hasta.'") AND 	
           	(`entidades`.`CodUEB` = "'.$codUEB.'") AND 
  			(`nmcuen`.`Cuenta` = 810 AND
  			`nmcuen`.`SubCuenta` = 0100 OR
  			`nmcuen`.`Cuenta` = 188 AND
  			`nmcuen`.`SubCuenta` = 0130) AND
  			(`datossal`.`Codsalida` = 1 OR
  			`datossal`.`Codsalida` = 2)
			ORDER BY
  			`nmcuen`.`Cuenta`';  
  
  $command = Yii::app()->db->createCommand($sql3);		
        	$dataReader3 = $command->queryAll();
		
 		$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';
			$html.='<th><div align="left">Cuenta</div></th>';
			$html.='<th><div align="left">Sub-Cuenta</div></th>';
			$html.='<th><div align="left">Analisis</div></th>';
			$html.='<th><div align="left">Elemento</div></th>';
			$html.='<th><div align="left">#Factura</div></th>';
			$html.='<th><div align="left">DEBE</div></th>';
			$html.='<th><div align="left">HABER</div></th>';
					
   		
			$html.='</tr>';		
			
			$totalDEBE=0;
			$totalHABER=0;	
			
  		foreach($dataReader3 as $row3){   			
            	$html.='<tr>';
				$html.='<td><div align="left">'.$row3['Cuenta'].'</div></td>';
				$html.='<td><div align="center">'.$row3['SubCuenta'].'</div></td>';	
				$html.='<td><div align="center">'.$row3['Analisis'].'</div></td>';	
				$html.='<td><div align="center">'.$row3['Subanalisis'].'</div></td>';		
				$html.='<td><div align="center">'.$row3['nfactura'].'</div></td>';
				$html.='<td><div align="right">'.number_format($row3['DEBE'],2).'</div></td>';
				$html.='<td><div align="right">'.number_format($row3['HABER'],2).'</div></td>';
					$html.='</tr>';
			
           		$totalDEBE+=$row3['DEBE'];
				$totalHABER+=$row3['HABER'];				
        	}
				$html.='<tr>';
				$html.='<td><div align="left"><strong>TOTAL COSTO DE LA PRODUCCION</strong></div></td>';
				$html.='<td><div align="center"></div></td>';						
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalDEBE,2).'</strong></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalHABER,2).'</strong></div></td>';	
				$html.='<td><div align="center"></div></td>';
         	$html.='</tr>';
        	
        	$html.='</table><br/>';	
//Transferencias enviadas
//Consulta
		$sql4='SELECT DISTINCT
  		`entidades`.`NEnt`,
  		`nmcuen`.`Cuenta`,
  		`nmcuen`.`SubCuenta`,
  		`nmcuen`.`Analisis`,
  		`nmcuen`.`Subanalisis`,
  		`detallesfact`.`cantidad`,
  		`datossal`.`nfactura`,
  		`datossal`.`fecha`,
  		`detallesfact`.`Codprod`,
  		`productos`.`PrCUC`,
  		`datossal`.`Codsalida`,
   		CASE when clientes.UPMin= 2 THEN productos.PreMin
				when clientes.UPMay= 2 THEN productos.PreMay else 0 end AS PrecioMN,
   		`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
				when clientes.UPMay= 2 THEN productos.PreMay else 0 end) AS Valor,
   		CASE when (`nmcuen`.`Cuenta` = 188) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
           	when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS HABER,
   		CASE when (`nmcuen`.`Cuenta` = 696) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
				when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS DEBE
	FROM
  	`datossal`
  	INNER JOIN `detallesfact` ON (`datossal`.`id` = `detallesfact`.`Id_sal`)
  	INNER JOIN `tiposalida` ON (`datossal`.`Codsalida` = `tiposalida`.`Codsalida`)
  	INNER JOIN `productos` ON (`detallesfact`.`Codprod` = `productos`.`Codprod`)
  	INNER JOIN `clientes` ON (`datossal`.`CodCliente` = `clientes`.`CodCliente`)
  	INNER JOIN `entidades` ON (`datossal`.`CodUEB` = `entidades`.`CodUEB`)
  	INNER JOIN `nmcuen` ON (`nmcuen`.`CodUEB` = `entidades`.`CodUEB`)
  	AND (`datossal`.`CodUEB` = `nmcuen`.`CodUEB`)
	WHERE
 	((`datossal`.`fecha`) Between "'.$desde.'" And "'.$hasta.'") AND 	
   	(`entidades`.`CodUEB` = "'.$codUEB.'") AND 
	(`nmcuen`.`Cuenta` = 696 AND
  	`nmcuen`.`SubCuenta` = 0100 AND
  	`nmcuen`.`Analisis` = 0030 OR
  	`nmcuen`.`Cuenta` = 188 AND
  	`nmcuen`.`SubCuenta` = 0140) AND
   	(`datossal`.`Codsalida` = 3 or `datossal`.`Codsalida` = 5)
	ORDER BY
  	`nmcuen`.`Cuenta`';  
  
	$command = Yii::app()->db->createCommand($sql4);		
        	$dataReader4 = $command->queryAll();
			
         	$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';
			$html.='<th><div align="left">Cuenta</div></th>';
			$html.='<th><div align="left">Sub-Cuenta</div></th>';
			$html.='<th><div align="left">Analisis</div></th>';
			$html.='<th><div align="left">Elemento</div></th>';
			$html.='<th><div align="left">#Factura</div></th>';
			$html.='<th><div align="left">DEBE</div></th>';
			$html.='<th><div align="left">HABER</div></th>';
					
   					
			$html.='</tr>';		
			
			$totalDEBE=0;
			$totalHABER=0;	
			
 		foreach($dataReader4 as $row4){   			
            	$html.='<tr>';
				$html.='<td><div align="left">'.$row4['Cuenta'].'</div></td>';
				$html.='<td><div align="center">'.$row4['SubCuenta'].'</div></td>';	
				$html.='<td><div align="center">'.$row4['Analisis'].'</div></td>';	
				$html.='<td><div align="center">'.$row4['Subanalisis'].'</div></td>';		
				$html.='<td><div align="center">'.$row4['nfactura'].'</div></td>';
				$html.='<td><div align="right">'.number_format($row4['DEBE'],2).'</div></td>';
				$html.='<td><div align="right">'.number_format($row4['HABER'],2).'</div></td>';
					$html.='</tr>';
			
           		$totalDEBE+=$row4['DEBE'];
				$totalHABER+=$row4['HABER'];				
        	}
				$html.='<tr>';
				$html.='<td><div align="left"><strong>TOTAL TRANSFERENCIAS ENVIADAS</strong></div></td>';
				$html.='<td><div align="center"></div></td>';						
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalDEBE,2).'</strong></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalHABER,2).'</strong></div></td>';	
				$html.='<td><div align="center"></div></td>';
         	$html.='</tr>';
        	
        	$html.='</table><br/>';	
			
//Transferencias Recibidas
//Consulta
	$sql5='SELECT DISTINCT
  	`entidades`.`NEnt` AS `EntidadEnvia`,
  	`nmcuen`.`Cuenta`,
  	`nmcuen`.`SubCuenta`,
  	`nmcuen`.`Analisis`,
  	`nmcuen`.`Subanalisis`,
  	`detallesfact`.`cantidad`,
  	`datossal`.`nfactura`,
  	`datossal`.`fecha`,
  	`detallesfact`.`Codprod`,
  	`productos`.`PrCUC`,
  	`datossal`.`Codsalida`,
  	`clientes`.`Descripcion` AS EntidadRec,
   	CASE when clientes.UPMin= 2 THEN productos.PreMin
			when clientes.UPMay= 2 THEN productos.PreMay else 0 end AS PrecioMN,
   	`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
   		when clientes.UPMay= 2 THEN productos.PreMay else 0 end) AS Valor,
  	CASE when (`nmcuen`.`Cuenta` = 696) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
   		when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS HABER,
   	CASE when (`nmcuen`.`Cuenta` = 188) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
   		when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS DEBE
 	FROM
  	`datossal`
  	INNER JOIN `detallesfact` ON (`datossal`.`id` = `detallesfact`.`Id_sal`)
  	INNER JOIN `tiposalida` ON (`datossal`.`Codsalida` = `tiposalida`.`Codsalida`)
  	INNER JOIN `productos` ON (`detallesfact`.`Codprod` = `productos`.`Codprod`)
  	INNER JOIN `clientes` ON (`datossal`.`CodCliente` = `clientes`.`CodCliente`)
  	INNER JOIN `entidades` ON (`datossal`.`CodUEB` = `entidades`.`CodUEB`)
  	INNER JOIN `nmcuen` ON (`nmcuen`.`CodUEB` = `entidades`.`CodUEB`)
  	AND (`datossal`.`CodUEB` = `nmcuen`.`CodUEB`)   	
	WHERE
 	((`datossal`.`fecha`) Between "'.$desde.'" And "'.$hasta.'") AND 	
   	(`entidades`.`CodUEB` = "'.$codUEB.'") AND 
 	(`nmcuen`.`Cuenta` = 696 AND
  	`nmcuen`.`SubCuenta` = 0100 AND
  	`nmcuen`.`Analisis` = 0030 OR
  	`nmcuen`.`Cuenta` = 188 AND
  	`nmcuen`.`SubCuenta` = 0140) AND
  	(`datossal`.`Codsalida` = 3 or `datossal`.`Codsalida` = 5)
	ORDER BY
  	`nmcuen`.`Cuenta`';  
 
	$command = Yii::app()->db->createCommand($sql5);		
        	$dataReader5 = $command->queryAll();
		
         	$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';
			$html.='<th><div align="left">Cuenta</div></th>';
			$html.='<th><div align="left">Sub-Cuenta</div></th>';
			$html.='<th><div align="left">Analisis</div></th>';
			$html.='<th><div align="left">Elemento</div></th>';
			$html.='<th><div align="left">#Factura</div></th>';
			$html.='<th><div align="left">DEBE</div></th>';
			$html.='<th><div align="left">HABER</div></th>';
					
      					
			$html.='</tr>';		
			
			$totalDEBE=0;
			$totalHABER=0;	
			
  		foreach($dataReader5 as $row5){   			
            	$html.='<tr>';
				$html.='<td><div align="left">'.$row5['Cuenta'].'</div></td>';
				$html.='<td><div align="center">'.$row5['SubCuenta'].'</div></td>';	
				$html.='<td><div align="center">'.$row5['Analisis'].'</div></td>';	
				$html.='<td><div align="center">'.$row5['Subanalisis'].'</div></td>';		
				$html.='<td><div align="center">'.$row5['nfactura'].'</div></td>';
				$html.='<td><div align="right">'.number_format($row5['DEBE'],2).'</div></td>';
				$html.='<td><div align="right">'.number_format($row5['HABER'],2).'</div></td>';
					$html.='</tr>';
			
           		$totalDEBE+=$row5['DEBE'];
				$totalHABER+=$row5['HABER'];				
        	}
				$html.='<tr>';
				$html.='<td><div align="left"><strong>TOTAL TRANSFERENCIAS RECIBIDAS</strong></div></td>';
				$html.='<td><div align="center"></div></td>';						
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalDEBE,2).'</strong></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalHABER,2).'</strong></div></td>';	
				$html.='<td><div align="center"></div></td>';
         	$html.='</tr>';
        	
        	$html.='</table><br/>';		
  
//Faltantes o decomiso
//Consulta
	$sql6='SELECT DISTINCT
  	`entidades`.`NEnt`,
  	`nmcuen`.`Cuenta`,
  	`nmcuen`.`SubCuenta`,
  	`nmcuen`.`Analisis`,
  	`nmcuen`.`Subanalisis`,
  	`detallesfact`.`cantidad`,
  	`datossal`.`nfactura`,
  	`datossal`.`fecha`,
  	`detallesfact`.`Codprod`,
  	`productos`.`PrCUC`,
  	`datossal`.`Codsalida`,
  	`monedas`.`CodMon`,
		CASE when clientes.UPMin= 2 THEN productos.PreMin
  			when clientes.UPMay= 2 THEN productos.PreMay else 0 end AS PrecioMN,
   		`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
           	when clientes.UPMay= 2 THEN productos.PreMay else 0 end) AS Valor,
 		CASE when (`nmcuen`.`Cuenta` = 188) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
           	when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS HABER, 	
  		CASE when (`nmcuen`.`Cuenta` = 330) THEN (`detallesfact`.`cantidad`*(CASE when clientes.UPMin= 2 THEN productos.PreMin
           	when clientes.UPMay= 2 THEN productos.PreMay else 0 end)) end AS DEBE
	FROM
  	`datossal`
  	INNER JOIN `detallesfact` ON (`datossal`.`id` = `detallesfact`.`Id_sal`)
  	INNER JOIN `tiposalida` ON (`datossal`.`Codsalida` = `tiposalida`.`Codsalida`)
  	INNER JOIN `productos` ON (`detallesfact`.`Codprod` = `productos`.`Codprod`)
  	INNER JOIN `clientes` ON (`datossal`.`CodCliente` = `clientes`.`CodCliente`)
  	INNER JOIN `entidades` ON (`datossal`.`CodUEB` = `entidades`.`CodUEB`)
  	INNER JOIN `nmcuen` ON (`nmcuen`.`CodUEB` = `entidades`.`CodUEB`)
  	AND (`datossal`.`CodUEB` = `nmcuen`.`CodUEB`)
  	INNER JOIN `monedas` ON (`datossal`.`CodMon` = `monedas`.`CodMon`)   	
	WHERE
 	((`datossal`.`fecha`) Between "'.$desde.'" And "'.$hasta.'") AND 	
   	(`entidades`.`CodUEB` = "'.$codUEB.'") AND 
 	(`nmcuen`.`Cuenta` = 330 AND
  	`nmcuen`.`SubCuenta` = 0050 OR
  	`nmcuen`.`Cuenta` = 188 AND
  	`nmcuen`.`SubCuenta` = 0140) AND
  	`datossal`.`Codsalida` = 6
	ORDER BY
  	`nmcuen`.`Cuenta`';  

  $command = Yii::app()->db->createCommand($sql6);		
        	$dataReader6 = $command->queryAll();
		
			$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';
			$html.='<th><div align="left">Cuenta</div></th>';
			$html.='<th><div align="left">Sub-Cuenta</div></th>';
			$html.='<th><div align="left">Analisis</div></th>';
			$html.='<th><div align="left">Elemento</div></th>';
			$html.='<th><div align="left">#Factura</div></th>';
			$html.='<th><div align="left">DEBE</div></th>';
			$html.='<th><div align="left">HABER</div></th>';
			
			$html.='</tr>';		
			
			$totalDEBE=0;
			$totalHABER=0;	
		
  		foreach($dataReader6 as $row6){   			
            	$html.='<tr>';
				$html.='<td><div align="left">'.$row6['Cuenta'].'</div></td>';
				$html.='<td><div align="center">'.$row6['SubCuenta'].'</div></td>';	
				$html.='<td><div align="center">'.$row6['Analisis'].'</div></td>';	
				$html.='<td><div align="center">'.$row6['Subanalisis'].'</div></td>';		
				$html.='<td><div align="center">'.$row6['nfactura'].'</div></td>';
				$html.='<td><div align="right">'.number_format($row6['DEBE'],2).'</div></td>';
				$html.='<td><div align="right">'.number_format($row6['HABER'],2).'</div></td>';
				$html.='</tr>';
			
           		$totalDEBE+=$row6['DEBE'];
				$totalHABER+=$row6['HABER'];				
        	}
				$html.='<tr>';
				$html.='<td><div align="left"><strong>TOTAL FALTANTES O DECOMISO</strong></div></td>';
				$html.='<td><div align="center"></div></td>';						
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalDEBE,2).'</strong></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalHABER,2).'</strong></div></td>';	
				$html.='<td><div align="center"></div></td>';
			
  				//Totalizar todas las consultas   
				$html.='<tr>';
				$html.='<th>TOTAL GENERAL</th>';
				$html.='<td><div align="center"></div></td>';						
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="center"></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalDEBE,2).'</strong></div></td>';
				$html.='<td><div align="right"><strong>'.number_format($totalHABER,2).'</strong></div></td>';                       				
				$html.='</tr>';
   		
   		$html.='</table><br/>';   	
   				
		$temp=$html;
		$html=$this->generarSuperior($desde.'',$hasta.'',$Ent.'',$codUEB.'','Comprobante Producción Terminada');
		$html.=$temp;   		
    	
		$this->renderPartial('print', array('html'=>$html));   		

 }	

Necesito ver lo que tengo mal, ya que me debe mostrar en una tabla todas las consultas sql, desde sql1 hasta sql6 con sus respectivos dataReader mas o menos de la iguiente forma:
El primer sql sin numero es para el encabezado del informe donde escoje la Entidad,
despues debe mostrar todas las consultas mas o menos asi:
Cuenta Sub-Cuenta Análisis Elemento # Factura DEBE HABER

188 0140 201 2-3232 0.00 105.00

330 0050 100 2-3232 105.00 0.00

Total faltantes 105.00 105.00

Total General 105.00 105.00

Pero como ven solo me muestra la ultima consulta y el total general que es la suma de todas las consultas, las demas no las muestra, primero deberia mostrar las demas consultas y al final esa que aparece con el total general.
0

#2 User is offline   a18327 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 14-August 13
  • Location:México

Posted 21 April 2014 - 10:54 AM

En cada consulta reinicias el valor de la variable $html, eso es lo que pasa.
Cambia las lineas donde tienes
$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';

por
$html.='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';

Fijate del punto de concatenación antes del igual.
0

#3 User is offline   rafaelrosales 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 88
  • Joined: 02-October 13

Posted 21 April 2014 - 03:44 PM

View Posta18327, on 21 April 2014 - 10:54 AM, said:

En cada consulta reinicias el valor de la variable $html, eso es lo que pasa.
Cambia las lineas donde tienes
$html='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';

por
$html.='<table style="width:100%" border=1 cellspacing=0 cellpadding=0>';

Fijate del punto de concatenación antes del igual.

Ok gracias por responder salio bien, de todas formas en la primera consulta tuve que manterla como estaba sin el punto de concatenación, ya que me dio el error: Undefined variable: html, Ademas me doy cuenta ahora que el total general solo suma la ultima consulta no la suma todas como debia ser asi que te pido me revises eso y muy agradecido por la respuesta.
0

#4 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 11-July 13

Posted 23 April 2014 - 01:38 AM

Es el mismo problema que comenta a18327, antes con html, y en este caso con totalDEBE y totalHABER.
Ambas variables se inicializan a cero después de cada sql, con lo que pierdes el subtotal.
Si solo mantienes la 1ª inicialización a cero y eliminas las demás te sumará bien.

De todas maneras es una función muy grande, es suficientemente compleja para dividirla en partes para hacerla más manejable.
Intenta llevar las sql al modelo, 6 sql -> 6 funciones, aquí no vas a escribir menos pero cada función será más pequeña y manejable, por ejemplo con la 1º //Consultas laboratorios
en el modelo que corresponda pon una función del estilo,
public function consultaLaboratorios($options) {
  //options que sea un array clave-valor ----> array('desde'=>$desde,'hasta'=>$hasta,'codUEB'=>$codUEB)
  $sql ='tu query con las condiciones que pongas';
  $command = Yii::app()->db->createCommand($sql1);                
  return ($command->queryAll());
}


En cuanto a las tablas son iguales, puedes hacer una función en el controlador que dado un datareader devuelva el html, totaldebe, totalhaber, es decir un array y simplificaría esta función mucho.

Todo esto no es necesario, solo es como yo lo veo, lo 1º es que funcione,
Un saludo
0

#5 User is offline   rafaelrosales 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 88
  • Joined: 02-October 13

Posted 23 April 2014 - 08:38 AM

View Postrahif, on 23 April 2014 - 01:38 AM, said:

Es el mismo problema que comenta a18327, antes con html, y en este caso con totalDEBE y totalHABER.
Ambas variables se inicializan a cero después de cada sql, con lo que pierdes el subtotal.
Si solo mantienes la 1ª inicialización a cero y eliminas las demás te sumará bien.

De todas maneras es una función muy grande, es suficientemente compleja para dividirla en partes para hacerla más manejable.
Intenta llevar las sql al modelo, 6 sql -> 6 funciones, aquí no vas a escribir menos pero cada función será más pequeña y manejable, por ejemplo con la 1º //Consultas laboratorios
en el modelo que corresponda pon una función del estilo,
public function consultaLaboratorios($options) {
  //options que sea un array clave-valor ----> array('desde'=>$desde,'hasta'=>$hasta,'codUEB'=>$codUEB)
  $sql ='tu query con las condiciones que pongas';
  $command = Yii::app()->db->createCommand($sql1);                
  return ($command->queryAll());
}


En cuanto a las tablas son iguales, puedes hacer una función en el controlador que dado un datareader devuelva el html, totaldebe, totalhaber, es decir un array y simplificaría esta función mucho.

Todo esto no es necesario, solo es como yo lo veo, lo 1º es que funcione,
Un saludo

Ok Resuelto, gracias rahif por tu valiosa respuesta, en realidad era eso que inicializaba todos los $totalDEBE a 0 y los $totalHABER a 0, pero en realidad los necesitaba ya que de esa forma me calculaba los subtotales para cada query por separado y en el reporte me los pone al final de cada tabla, si le quitaba los demas y solo dejaba el primero entonces me hiba sumando los subtotales el del sql1=sql1, el del sql2=sql1+sql2 y asi sucesivamente, en realidad lo que hice fue diferenciar los $totalDEBE1, $totalDEBE2... y los $totalHABER1, $totalHABER2... y al final sume los sume y me dio el total general para el debe y para el haber.
Gracias de todos modos y voy a meterle coco a la forma que me propones a ver si lo hago asi, pero por ahora ya me funciona.
Ademas te agradeceria, ya que veo tienes grandes conocimiento en esto me revises el otro tema que tengo en el FORO pendiente sobre las salva, el problema es que quiero hacer una salva pero que no restaure totalmente la BD, sino solo los datos de una UEB que tengo en una tabla Entidades, ya que las UEB hacen sus salvas la envian por correo y en el servidor hay que restaurar solo los datos de esa UEB, pero ahi estan todas las UEB, por eso solo quiero restaurar solo los de esa UEB, manteniendo intocable las otras UEB.
0

#6 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 11-July 13

Posted 23 April 2014 - 03:44 PM

Pues perfecto, un problema menos.
Ya vi el otro post, voy a volver a leerlo y te comento allí.
0

#7 User is offline   migueArgentina 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 139
  • Joined: 09-March 11

Posted 28 April 2014 - 07:04 PM

Pregunto: para qué usar SQL de esa manera? Por qué no usar la excelente abstracción a la DB que te brinda el framework? Qué pasaría si debieras migrar de DB? Ni hablar de buscar un bug...
0

#8 User is offline   rafaelrosales 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 88
  • Joined: 02-October 13

Posted 29 April 2014 - 11:43 AM

View PostmigueArgentina, on 28 April 2014 - 07:04 PM, said:

Pregunto: para qué usar SQL de esa manera? Por qué no usar la excelente abstracción a la DB que te brinda el framework? Qué pasaría si debieras migrar de DB? Ni hablar de buscar un bug...

Gracias por responder migueArgentina, me gustaria hecharle un vistazo a eso que me dices pero en realidad no se como, para esto es el foro para colaborar y tomar experiencia de los que mejor dominen el framework, si me pudieras adelantar sobre eso?, te lo agradeceria mucho.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users