[Resuelto] Multiples Tablas En Un Reporte

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:

[size="3"]Cuenta Sub-Cuenta Análisis Elemento[/size] #[size="3"] Factura DEBE HABER[/size]

[size="3"]188 0140 201 2-3232 0.00 105.00[/size]

[size="3"]330 0050 100 2-3232 105.00 0.00[/size]

[size="3"]Total faltantes 105.00 105.00[/size]

[size="3"]Total General 105.00 105.00[/size]

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.

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.

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.

Pues perfecto, un problema menos.

Ya vi el otro post, voy a volver a leerlo y te comento allí.

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,[color="#FF0000"] si me pudieras adelantar sobre eso?[/color], te lo agradeceria mucho.