<?php

class sigesp_scv_class_report
{
	var $obj="";
	var $io_sql;
	var $ds;
	var $ds_detalle;
	var $siginc;
	var $con;

	function sigesp_scv_class_report()
	{
		require_once("../../shared/class_folder/class_sql.php");
		require_once("../../shared/class_folder/class_mensajes.php");
		require_once("../../shared/class_folder/sigesp_include.php");
		require_once("../../shared/class_folder/class_funciones.php");
		$this->io_msg=new class_mensajes();
		$this->dat_emp=$_SESSION["la_empresa"];
		$in=new sigesp_include();
		$this->con=$in->uf_conectar();
		//$this->con->debug=true;
		$this->io_sql=new class_sql($this->con);
		$this->io_funcion = new class_funciones();
		$this->ds=new class_datastore();
		$this->ds_detalle=new class_datastore();
		$this->ds_detpersonal=new class_datastore();
		$this->ds_detcontable=new class_datastore();
		$this->ds_detpresup=new class_datastore();
		$this->ds_solicitud=new class_datastore();
        $this->ls_codemp=$_SESSION["la_empresa"]["codemp"];
	}

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//////////////////////////         Funciones del formato de salida de la solicitud de viaticos          ///////////////////////
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	function uf_select_solicitudviaticos($as_codemp,$as_codsolvia,$ad_fecdes,$ad_fechas,$as_codsoldes,$as_codsolhas,
										 $as_coduniadm,$as_codper,$as_codestpro1,$as_codestpro2,$as_codestpro3,
										 $as_codestpro4,$as_codestpro5,$as_estcla,$ai_orden)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_solicitudviaticos
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // numero de la solicitud de viaticos
		//  			       $ad_fecdes     // fecha de inicio del periodo de busqueda
		//  			       $ad_fechas     // fecha de cierre del periodo de busqueda
		//  			       $as_codsoldes  // numero de la solicitud de viaticos Desde
		//  			       $as_codsolhas  // numero de la solicitud de viaticos Hasta
		//  			       $as_coduniadm  // codigo de unidad ejecutora
		//  			       $as_codper     // codigo de personal / beneficiario
		//        			   $as_codestpro1 // codigo de estructura programatica nivel 1
		//        			   $as_codestpro2 // codigo de estructura programatica nivel 2
		//        			   $as_codestpro3 // codigo de estructura programatica nivel 3
		//        			   $as_codestpro4 // codigo de estructura programatica nivel 4
		//        			   $as_codestpro5 // codigo de estructura programatica nivel 5
		//                     $as_estcla     // estatus de la estructura programatica
		//  			       $ai_orden      // parametro por el cual vamos a ordenar los resultados
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de la busqueda de un maestro de solititud de viaticos
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 29/11/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql="SELECT scv_solicitudviatico.codsolvia, denuniadm, MAX(scv_solicitudviatico.codmis) AS codmis, MAX(scv_solicitudviatico.codrut) AS codrut, 
		               MAX(scv_solicitudviatico.coduniadm) AS coduniadm, MAX(scv_solicitudviatico.fecsalvia) AS fecsalvia, MAX(scv_solicitudviatico.fecregvia) AS fecregvia, 
				       MAX(scv_solicitudviatico.fecsolvia) AS fecsolvia, MAX(scv_solicitudviatico.numdiavia) AS numdiavia, 
					   MAX(scv_solicitudviatico.solviaext) AS solviaext, 
				       MAX(scv_solicitudviatico.obssolvia) AS obssolvia, 
					   MAX(scv_solicitudviatico.estsolvia) AS estsolvia, 
					   MAX(scv_solicitudviatico.monsolvia) AS monsolvia,
				       (SELECT denmis
				          FROM scv_misiones
				         WHERE scv_solicitudviatico.codemp=scv_misiones.codemp
				           AND scv_solicitudviatico.codmis=scv_misiones.codmis) AS denmis, 
				       (SELECT desrut
				          FROM scv_rutas
				         WHERE scv_solicitudviatico.codemp=scv_rutas.codemp
				           AND scv_solicitudviatico.codrut=scv_rutas.codrut
				         GROUP BY codrut,desrut) AS desrut 				
				  FROM scv_solicitudviatico,scv_dt_personal,spg_unidadadministrativa,spg_dt_unidadadministrativa
				 WHERE scv_solicitudviatico.codemp='".$as_codemp."'
				   AND scv_solicitudviatico.codemp=scv_dt_personal.codemp
				   AND scv_solicitudviatico.codsolvia=scv_dt_personal.codsolvia
				   AND (scv_solicitudviatico.estsolvia='P' OR scv_solicitudviatico.estsolvia='C')  
				   AND scv_solicitudviatico.codemp=spg_unidadadministrativa.codemp
				   AND scv_solicitudviatico.coduniadm=spg_unidadadministrativa.coduniadm 
				   AND spg_dt_unidadadministrativa.codemp=scv_solicitudviatico.codemp 
				   AND spg_dt_unidadadministrativa.estcla=scv_solicitudviatico.estcla 
				   AND spg_dt_unidadadministrativa.codestpro1=scv_solicitudviatico.codestpro1 
				   AND spg_dt_unidadadministrativa.codestpro2=scv_solicitudviatico.codestpro2 
				   AND spg_dt_unidadadministrativa.codestpro3=scv_solicitudviatico.codestpro3 
				   AND spg_dt_unidadadministrativa.codestpro4=scv_solicitudviatico.codestpro4 
				   AND spg_dt_unidadadministrativa.codestpro5=scv_solicitudviatico.codestpro5 ";
		if(!empty($as_codsolvia))
		{
			$ls_sql=$ls_sql."   AND scv_solicitudviatico.codsolvia='". $as_codsolvia ."'";
		}
		if((!empty($ad_fecdes))&&(!empty($ad_fechas)))
		{
			$ad_fecdes=$this->io_funcion->uf_convertirdatetobd($ad_fecdes);
			$ad_fechas=$this->io_funcion->uf_convertirdatetobd($ad_fechas);
			$ls_sql=$ls_sql." AND scv_solicitudviatico.fecsolvia >= '".$ad_fecdes."'".
							" AND scv_solicitudviatico.fecsolvia <='".$ad_fechas."'";
		}
		if((!empty($as_codsoldes))&&(!empty($as_codsolhas)))
		{
			$ls_sql=$ls_sql."   AND scv_solicitudviatico.codsolvia>='".$as_codsoldes."' ".
					  		"   AND scv_solicitudviatico.codsolvia<='".$as_codsolhas."' ";
		}
		if(!empty($as_coduniadm))
		{
			$ls_sql=$ls_sql." AND scv_solicitudviatico.coduniadm='".$as_coduniadm."'";
			$ls_sql=$ls_sql." AND scv_solicitudviatico.codestpro1='".$as_codestpro1."'";
			$ls_sql=$ls_sql." AND scv_solicitudviatico.codestpro2='".$as_codestpro2."'";
			$ls_sql=$ls_sql." AND scv_solicitudviatico.codestpro3='".$as_codestpro3."'";
			$ls_sql=$ls_sql." AND scv_solicitudviatico.codestpro4='".$as_codestpro4."'";
			$ls_sql=$ls_sql." AND scv_solicitudviatico.codestpro5='".$as_codestpro5."'";
			$ls_sql=$ls_sql." AND scv_solicitudviatico.estcla='".$as_estcla."'";
		}
		if(!empty($as_codper))
		{
			$ls_sql=$ls_sql." AND scv_dt_personal.codper::integer='".$as_codper."'";
		}
		$ls_sql=$ls_sql." GROUP BY scv_solicitudviatico.codsolvia, scv_solicitudviatico.codemp, 
		                           scv_solicitudviatico.codmis, scv_solicitudviatico.codrut, 
                                   scv_solicitudviatico.coduniadm, denuniadm,scv_solicitudviatico.fecsolvia ";
		if(!empty($ai_orden))
		{
			if($ai_orden==1)
				$ls_sql=$ls_sql." ORDER BY scv_solicitudviatico.fecsolvia DESC";
			else
				$ls_sql=$ls_sql." ORDER BY scv_solicitudviatico.fecsolvia ";
				
		}
		else
		{
			$ls_sql=$ls_sql." ORDER BY scv_solicitudviatico.codsolvia ";
		}	
	
	    $rs_data=$this->io_sql->select($ls_sql);
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_solicitudviaticos ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds->data=$data;
				$lb_valido=true;
			}
			
		}
		return $lb_valido; 
	} //fin  function uf_select_solicitudviaticos

	function uf_select_dt_asignaciones($as_codemp,$as_codsolvia,$ad_fecdes,$ad_fechas,$ai_orden)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_dt_asignaciones
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // codigo de la solicitud de viaticos
		//  			       $ad_fecdes     // fecha de inicio del periodo de busqueda
		//  			       $ad_fechas     // fecha de cierre del periodo de busqueda
		//  			       $ai_orden      // parametro por el cual vamos a ordenar los resultados
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de buscar las asignaciones de una solicitud de viaticos
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 13/09/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql= "SELECT scv_dt_asignaciones.codemp, scv_dt_asignaciones.codsolvia, scv_dt_asignaciones.codasi,".
				 "       scv_dt_asignaciones.proasi, scv_dt_asignaciones.canasi, ".
				 "       (CASE scv_dt_asignaciones.proasi".
				 "        WHEN 'TVS' THEN (SELECT scv_tarifas.dentar".
				 "                           FROM scv_tarifas".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_tarifas.codemp".
				 " 							  AND scv_dt_asignaciones.codasi=scv_tarifas.codtar)".
				 "        WHEN 'TRP' THEN (SELECT scv_transportes.dentra".
				 "                           FROM scv_transportes".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_transportes.codemp".
				 "                            AND scv_dt_asignaciones.codasi=scv_transportes.codtra)".
				 "        WHEN 'TOA' THEN (SELECT scv_otrasasignaciones.denotrasi".
				 "                           FROM scv_otrasasignaciones".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_otrasasignaciones.codemp".
				 "                            AND scv_dt_asignaciones.codasi=scv_otrasasignaciones.codotrasi)".
				 "		  ELSE (SELECT scv_tarifakms.dentar".
				 "                FROM scv_tarifakms".
				 "               WHERE scv_dt_asignaciones.codemp=scv_tarifakms.codemp".
				 "                 AND scv_dt_asignaciones.codasi=scv_tarifakms.codtar) END) AS denasi".
				 "  FROM scv_solicitudviatico,scv_dt_asignaciones".
				 " WHERE scv_solicitudviatico.codemp='".$as_codemp."'".
				 "   AND scv_solicitudviatico.codsolvia='".$as_codsolvia."'".
				 "   AND scv_solicitudviatico.codsolvia=scv_dt_asignaciones.codsolvia";
	
	    $rs_data=$this->io_sql->select($ls_sql);
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_dt_asignaciones ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds_detalle->data=$data;
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido; 
	} //fin  function uf_select_dt_asignaciones

	function uf_select_dt_personal($as_codemp,$as_codsolvia,$ad_fecdes,$ad_fechas,$ai_orden,&$lb_existe)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_dt_personal
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // codigo de la solicitud de viaticos
		//  			       $ad_fecdes     // fecha de inicio del periodo de busqueda
		//  			       $ad_fechas     // fecha de cierre del periodo de busqueda
		//  			       $ai_orden      // parametro por el cual vamos a ordenar los resultados
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de buscar las asignaciones de una solicitud de viaticos
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 13/09/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$lb_existe=$this->uf_scv_select_categoria_personal($as_codemp,$as_codsolvia);
		if($lb_existe)
		{
			$ls_sql=" SELECT (CASE sno_nomina.racnom WHEN '1' THEN sno_asignacioncargo.denasicar ELSE sno_cargo.descar END) AS cargo,
					       scv_dt_personal.codclavia,sno_personalnomina.codper,
							(SELECT nomper FROM sno_personal
					  		  WHERE sno_personal.codper=sno_personalnomina.codper) as nomper,
							(SELECT apeper FROM sno_personal
					   	  WHERE sno_personal.codper=sno_personalnomina.codper) as apeper,
							(SELECT cedper FROM sno_personal
							  WHERE sno_personal.codper=sno_personalnomina.codper) as cedper
					  FROM sno_personalnomina, sno_nomina, sno_cargo, sno_asignacioncargo,sno_personal,scv_dt_personal
					 WHERE scv_dt_personal.codemp='".$as_codemp."'
					   AND scv_dt_personal.codsolvia='".$as_codsolvia."'
					   AND scv_dt_personal.codemp=sno_personal.codemp
					   AND scv_dt_personal.codper=sno_personal.codper
					   AND sno_nomina.espnom='0'
					   AND sno_personalnomina.codnom = scv_dt_personal.codnom
					   AND sno_personalnomina.codemp = sno_nomina.codemp
					   AND sno_personalnomina.codnom = sno_nomina.codnom
					   AND sno_personalnomina.codper = sno_personal.codper
					   AND sno_personalnomina.codemp = sno_cargo.codemp
					   AND sno_personalnomina.codnom = sno_cargo.codnom
					   AND sno_personalnomina.codcar = sno_cargo.codcar
					   AND sno_personalnomina.codemp = sno_asignacioncargo.codemp
					   AND sno_personalnomina.codnom = sno_asignacioncargo.codnom
					   AND sno_personalnomina.codasicar = sno_asignacioncargo.codasicar
					 GROUP BY sno_personalnomina.codper, sno_nomina.racnom, 
					          sno_asignacioncargo.denasicar,sno_cargo.descar, 
                              scv_dt_personal.codclavia,sno_personalnomina.codper 
					 ORDER BY sno_personalnomina.codper,codclavia ";
					
		}
		else
		{
			$ls_sql="SELECT scv_dt_personal.codper,rpc_beneficiario.ced_bene,".
					"       (SELECT nombene ".
					"          FROM rpc_beneficiario".
					"         WHERE scv_dt_personal.codemp=rpc_beneficiario.codemp".
					"           AND scv_dt_personal.codper=rpc_beneficiario.ced_bene) AS nombene,".
					"       (SELECT apebene ".
					"          FROM rpc_beneficiario".
					"         WHERE scv_dt_personal.codemp=rpc_beneficiario.codemp".
					"           AND scv_dt_personal.codper=rpc_beneficiario.ced_bene) AS apebene".
					"  FROM scv_dt_personal,rpc_beneficiario".
					" WHERE scv_dt_personal.codemp='".$as_codemp."'".
					"   AND scv_dt_personal.codsolvia='".$as_codsolvia."'".
					"   AND scv_dt_personal.codper=rpc_beneficiario.ced_bene";
		}
	    $rs_data=$this->io_sql->select($ls_sql);
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_dt_personal ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds_detpersonal->data=$data;
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido; 
	} //fin  function uf_select_dt_personal

	function uf_select_dt_spg($as_codemp,$as_codsolvia)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_dt_spg
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // codigo de la solicitud de viaticos
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de buscar las asignaciones de una solicitud de viaticos
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 13/09/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql= "SELECT codemp,codsolvia, codestpro1, codestpro2, codestpro3, codestpro4, codestpro5, estcla, monto, spg_cuenta".
				 "  FROM scv_dt_spg ".
				 " WHERE codemp='".$as_codemp."'".
				 "   AND codsolvia='".$as_codsolvia."'";
				 
	    $rs_data=$this->io_sql->select($ls_sql);
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_dt_spg ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds_detpresup->data=$data;
				$this->ds_detpresup->group_by(array('0'=>'codemp','1'=>'codsolvia','2'=>'spg_cuenta'),array('0'=>'monto'),'monto');	
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido; 
	} //fin  function uf_select_dt_spg

	function uf_select_dt_scg($as_codemp,$as_codsolvia)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_dt_scg
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // codigo de la solicitud de viaticos
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de buscar las asignaciones de una solicitud de viaticos
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 13/09/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql= "SELECT codemp, codsolvia, sc_cuenta, debhab, monto".
				 "  FROM scv_dt_scg".
				 " WHERE codemp='".$as_codemp."'".
				 "   AND codsolvia='".$as_codsolvia."'";
	    $rs_data=$this->io_sql->select($ls_sql);
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_dt_scg ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds_detcontable->data=$data;
				$this->ds_detcontable->group_by(array('0'=>'codemp','1'=>'codsolvia','2'=>'sc_cuenta','3'=>'debhab'),array('0'=>'monto'),'monto');	
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido; 
	} //fin  function uf_select_dt_scg

	function uf_scv_select_categoria_personal($as_codemp,$as_codsolvia)
	{
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	     Function: uf_scv_select_categoria_personal
		//         Access: public 
		//      Argumento: $as_codemp    // codigo de empresa
		//  			   $as_codsolvia // codigo de solicitud de viaticos
		//	      Returns: Retorna un Booleano
		//    Description: Funcion que verifica la existencia de una solicitud de viaticos
		//	   Creado Por: Ing. Luis Anibal Lang
		// Fecha Creación: 09/11/2006 								Fecha Última Modificación :  
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql="SELECT codclavia".
		        "  FROM scv_dt_personal".
				" WHERE codemp='". $as_codemp ."'".
				"   AND codsolvia='". $as_codsolvia ."'";
		$rs_data=$this->io_sql->select($ls_sql);
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->solicitud_viaticos MÉTODO->uf_scv_select_categoria_personal ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
			$lb_valido=false;
		}
		else
		{
			if($row=$this->io_sql->fetch_row($rs_data))
			{
				$ls_codclavia=$row["codclavia"];
				if($ls_codclavia!="")
				{$lb_valido=true;}
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido;
	}  // end function uf_scv_select_categoria_personal

	function uf_select_solicitudpago_personal($as_codemp,$as_codsoldes,$as_codsolhas,$ad_fecdes,$ad_fechas,$ai_orden,$as_codsolvia,&$rs_data)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_solicitudpago_personal
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsoldes  // numero de la solicitud de viaticos Desde
		//  			       $as_codsolhas  // numero de la solicitud de viaticos Hasta
		//  			       $ad_fecdes     // fecha de inicio del periodo de busqueda
		//  			       $ad_fechas     // fecha de cierre del periodo de busqueda
		//  			       $ai_orden      // parametro por el cual vamos a ordenar los resultados
		//  			       $as_codsolvia  // codigo de solicitud de viaticos
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de la busqueda del personal asociado a una solicitud de viatico
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 29/11/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_criterio="";
		if((!empty($as_codsoldes))&&(!empty($as_codsolhas)))
		{
			$ls_criterio=$ls_criterio."   AND scv_solicitudviatico.codsolvia>='".$as_codsoldes."' ".
					  				  "   AND scv_solicitudviatico.codsolvia<='".$as_codsolhas."' ";
		}
		if((!empty($ad_fecdes))&&(!empty($ad_fechas)))
		{
			$ad_fecdes=$this->io_funcion->uf_convertirdatetobd($ad_fecdes);
			$ad_fechas=$this->io_funcion->uf_convertirdatetobd($ad_fechas);
			$ls_criterio=$ls_criterio." AND scv_solicitudviatico.fecsolvia >= '".$ad_fecdes."'".
									  " AND scv_solicitudviatico.fecsolvia <='".$ad_fechas."'";
		}
		if(!empty($as_codsolvia))
		{
			$ls_criterio=$ls_criterio."   AND scv_solicitudviatico.codsolvia='".$as_codsolvia."' ";
		}
				
		$ls_sql="SELECT DISTINCT(sno_personal.cedper) as cedper, sno_personal.nomper, sno_personal.apeper, sno_unidadadmin.desuniadm, ".
				"		sno_personal.telhabper,sno_personal.telmovper,sno_personalnomina.sueper,".
				"       sno_personalnomina.codcueban, sno_personalnomina.tipcuebanper, sno_dedicacion.desded, ".
				"       sno_tipopersonal.destipper, scv_dt_personal.codclavia, scv_solicitudviatico.fecsolvia,scv_solicitudviatico.fecsalvia, ".
				"       scv_solicitudviatico.fecregvia, scv_solicitudviatico.fecsolvia, scv_solicitudviatico.numdiavia, scv_misiones.denmis, ".
				"		scv_solicitudviatico.codsolvia,scv_solicitudviatico.solviaext,scv_solicitudviatico.obssolvia, sno_nomina.racnom,scv_solicitudviatico.coduniadm, ".
				"       (SELECT COUNT(codper) FROM scv_dt_personal ".
				"		  WHERE scv_dt_personal.codemp = scv_solicitudviatico.codemp  ".
				"			AND scv_dt_personal.codsolvia = scv_solicitudviatico.codsolvia ) AS acompanante,spg_unidadadministrativa.denuniadm,  ".
			    "       (CASE sno_nomina.racnom ".
			    "        WHEN '1' THEN (SELECT denasicar FROM sno_asignacioncargo ".
			    "   	                 WHERE sno_personalnomina.codemp = sno_asignacioncargo.codemp ".
			    "		                   AND sno_personalnomina.codnom = sno_asignacioncargo.codnom ".
			    "           			   AND sno_personalnomina.codasicar = sno_asignacioncargo.codasicar)".
				"        WHEN '0' THEN (SELECT descar FROM sno_cargo ".
				"   	                 WHERE sno_personalnomina.codemp = sno_cargo.codemp ".
				"		                   AND sno_personalnomina.codnom = sno_cargo.codnom ".
				"                          AND sno_personalnomina.codcar = sno_cargo.codcar) END) AS cargo".
				"  FROM scv_dt_personal, sno_personal, sno_personalnomina, sno_nomina, sno_unidadadmin, sno_dedicacion, ".
				"       sno_tipopersonal, scv_solicitudviatico, scv_misiones,spg_unidadadministrativa 
				
				    
				".
				" WHERE scv_solicitudviatico.codemp='".$as_codemp."' ".
				$ls_criterio.
				"   AND sno_nomina.espnom = '0' ".
				"   AND sno_personalnomina.staper = '1' ".
				"   AND scv_dt_personal.codemp = scv_solicitudviatico.codemp ".
				"   AND scv_dt_personal.codsolvia = scv_solicitudviatico.codsolvia ".
				"   AND scv_dt_personal.codemp = sno_personalnomina.codemp ".
				"   AND scv_dt_personal.codnom = sno_personalnomina.codnom ".
				"   AND scv_solicitudviatico.codemp = scv_misiones.codemp ".
				"   AND scv_solicitudviatico.codmis = scv_misiones.codmis ".
				"   AND scv_dt_personal.codemp = sno_personal.codemp ".
				"   AND scv_dt_personal.codper = sno_personal.codper ".
				"   AND sno_personal.codemp = sno_personalnomina.codemp ".
				"   AND sno_personal.codper = sno_personalnomina.codper ".
				"   AND sno_personalnomina.codemp = sno_nomina.codemp ".
				"   AND sno_personalnomina.codnom = sno_nomina.codnom ".
				"   AND sno_personalnomina.codemp = sno_unidadadmin.codemp ".
				"   AND sno_personalnomina.minorguniadm = sno_unidadadmin.minorguniadm ".
				"   AND sno_personalnomina.ofiuniadm = sno_unidadadmin.ofiuniadm ".
				"   AND sno_personalnomina.uniuniadm = sno_unidadadmin.uniuniadm ".
				"   AND sno_personalnomina.depuniadm = sno_unidadadmin.depuniadm ".
				"   AND sno_personalnomina.prouniadm = sno_unidadadmin.prouniadm ".
				"   AND sno_personalnomina.codemp = sno_dedicacion.codemp ".
				"   AND sno_personalnomina.codded = sno_dedicacion.codded ".
				"   AND sno_personalnomina.codemp = sno_tipopersonal.codemp ".
				"   AND sno_personalnomina.codded = sno_tipopersonal.codded ".
				"   AND sno_personalnomina.codtipper = sno_tipopersonal.codtipper
				    AND spg_unidadadministrativa.codemp = scv_solicitudviatico.codemp 
				    AND spg_unidadadministrativa.coduniadm = scv_solicitudviatico.coduniadm
				".
				"   ORDER BY scv_solicitudviatico.codsolvia";
				
	    $rs_data=$this->io_sql->select($ls_sql);
		
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_solicitudpago_personal ERROR->".$this->io_sql->message);
			return false;
		}
		
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($li_numrows==0)
		{
			$this->io_sql->free_result($rs_data);
			$ls_sql="SELECT rpc_beneficiario.ced_bene AS cedper, MAX(rpc_beneficiario.nombene) AS nomper, ".
			        "       MAX(rpc_beneficiario.apebene) AS apeper, '' AS desuniadm, MAX(rpc_beneficiario.telbene) AS telhabper,".
                    "       '' AS telmovper,'' AS sueper, '' AS codcueban, '' AS tipcuebanper, '' AS desded, '' AS destipper, ".
                    "       '' AS codclavia, MAX(scv_solicitudviatico.fecsalvia) AS fecsalvia, ".
					"       MAX(scv_solicitudviatico.fecsolvia) AS fecsolvia, MAX(scv_solicitudviatico.fecregvia) AS fecregvia, ".
                    "       MAX(scv_solicitudviatico.numdiavia) AS numdiavia, MAX(scv_misiones.denmis) AS denmis, ".
                    "       MAX(scv_misiones.denmis) AS denmis, MAX(scv_solicitudviatico.codsolvia) AS codsolvia, ".
					"       MAX(scv_solicitudviatico.solviaext) AS solviaext, ".
                    "       MAX(scv_solicitudviatico.obssolvia) AS obssolvia, '' AS racnom,  ".
					"       (SELECT COUNT(codper) FROM scv_dt_personal ".
					"		  WHERE scv_dt_personal.codemp = scv_solicitudviatico.codemp  ".
					"			AND scv_dt_personal.codsolvia = scv_solicitudviatico.codsolvia ) AS acompanante,  ".
					"       '' AS cargo".
					"  FROM scv_dt_personal,  scv_solicitudviatico, scv_misiones, rpc_beneficiario ".
					" WHERE scv_solicitudviatico.codemp='".$as_codemp."' ".
					$ls_criterio.
					"   AND scv_dt_personal.codemp = scv_solicitudviatico.codemp ".
					"   AND scv_dt_personal.codsolvia = scv_solicitudviatico.codsolvia ".
					"   AND scv_solicitudviatico.codemp = scv_misiones.codemp ".
					"   AND scv_solicitudviatico.codmis = scv_misiones.codmis ".
					"   AND scv_dt_personal.codemp = rpc_beneficiario.codemp ".
					"   AND scv_dt_personal.codper = rpc_beneficiario.ced_bene ".
					" GROUP BY rpc_beneficiario.ced_bene, scv_solicitudviatico.codemp, scv_solicitudviatico.codsolvia ".
					"   ORDER BY scv_solicitudviatico.codsolvia";
			$rs_data=$this->io_sql->select($ls_sql);
			$li_numrows=$this->io_sql->num_rows($rs_data);	
		}
		//echo $ls_sql;
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_solicitudpago_personal ERROR->".$this->io_sql->message);
		}
		else
		{
			if ($li_numrows>0)
			{
				
				$lb_valido=true;
			}
			
		}
		return $lb_valido; 
	} //fin  function uf_select_pagosolicitud_personal

	function uf_select_solicitudpago_beneficiario($as_codemp,$as_codsoldes,$as_codsolhas,$ad_fecdes,$ad_fechas,$ai_orden,$as_codsolvia)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_solicitudpago_beneficiario
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsoldes  // numero de la solicitud de viaticos Desde
		//  			       $as_codsolhas  // numero de la solicitud de viaticos Hasta
		//  			       $ad_fecdes     // fecha de inicio del periodo de busqueda
		//  			       $ad_fechas     // fecha de cierre del periodo de busqueda
		//  			       $ai_orden      // parametro por el cual vamos a ordenar los resultados
		//  			       $as_codsolvia  // codigo de solicitud de viaticos
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de la busqueda del personal asociado a una solicitud de viatico
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 29/11/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_criterio="";
		if((!empty($as_codsoldes))&&(!empty($as_codsolhas)))
		{
			$ls_criterio=$ls_criterio."   AND scv_solicitudviatico.codsolvia>='".$as_codsoldes."' ".
					  				  "   AND scv_solicitudviatico.codsolvia<='".$as_codsolhas."' ";
		}
		if((!empty($ad_fecdes))&&(!empty($ad_fechas)))
		{
			$ad_fecdes=$this->io_funcion->uf_convertirdatetobd($ad_fecdes);
			$ad_fechas=$this->io_funcion->uf_convertirdatetobd($ad_fechas);
			$ls_criterio=$ls_criterio." AND scv_solicitudviatico.fecsolvia >= '".$ad_fecdes."'".
									  " AND scv_solicitudviatico.fecsolvia <='".$ad_fechas."'";
		}
		if(!empty($as_codsolvia))
		{
			$ls_criterio=$ls_criterio."   AND scv_solicitudviatico.codsolvia='".$as_codsolvia."' ";
		}
		$ls_sql="SELECT rpc_beneficiario.ced_bene AS cedper, rpc_beneficiario.nombene AS nomper, rpc_beneficiario.apebene AS apeper, '' AS desuniadm, ".
				"		rpc_beneficiario.telbene AS telhabper,'' AS telmovper,'' AS sueper,".
				"       '' AS codcueban, '' AS tipcuebanper, '' AS desded, ".
				"       '' AS destipper, '' AS codclavia, scv_solicitudviatico.fecsalvia, ".
				"       scv_solicitudviatico.fecregvia,scv_solicitudviatico.fecsolvia, scv_solicitudviatico.numdiavia, scv_misiones.denmis, ".
				"		scv_solicitudviatico.codsolvia,scv_solicitudviatico.solviaext,scv_solicitudviatico.obssolvia, '' AS racnom, ".
				"       (SELECT COUNT(codper) FROM scv_dt_personal ".
				"		  WHERE scv_dt_personal.codemp = scv_solicitudviatico.codemp  ".
				"			AND scv_dt_personal.codsolvia = scv_solicitudviatico.codsolvia ) AS acompanante,  ".
			    "       '' AS cargo".
				"  FROM scv_dt_personal,  scv_solicitudviatico, scv_misiones, rpc_beneficiario ".
				" WHERE scv_solicitudviatico.codemp='".$as_codemp."' ".
				$ls_criterio.
				"   AND scv_dt_personal.codemp = scv_solicitudviatico.codemp ".
				"   AND scv_dt_personal.codsolvia = scv_solicitudviatico.codsolvia ".
				"   AND scv_solicitudviatico.codemp = scv_misiones.codemp ".
				"   AND scv_solicitudviatico.codmis = scv_misiones.codmis ".
				"   AND scv_dt_personal.codemp = rpc_beneficiario.codemp ".
				"   AND scv_dt_personal.codper = rpc_beneficiario.ced_bene ".
				" GROUP BY rpc_beneficiario.ced_bene ";
		
	    $rs_data=$this->io_sql->select($ls_sql);
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_solicitudpago_beneficiario ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds->data=$data;
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido; 
	} //fin  function uf_select_solicitudpago_beneficiario

	function uf_select_solicitudpago_asignaciones($as_codemp,$as_codsolvia)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_solicitudpago_asignaciones
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // codigo de la solicitud de viaticos
		//  			       $ai_orden      // parametro por el cual vamos a ordenar los resultados
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de buscar las asignaciones de una solicitud de viaticos
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 13/09/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql= "SELECT scv_dt_asignaciones.codemp, scv_dt_asignaciones.codsolvia, scv_dt_asignaciones.codasi,".
				 "       scv_dt_asignaciones.proasi, scv_dt_asignaciones.canasi, ".
				 "       (CASE scv_dt_asignaciones.proasi ".
				 "        WHEN 'TVS' THEN (SELECT scv_tarifas.dentar".
				 "                           FROM scv_tarifas".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_tarifas.codemp".
				 " 							  AND scv_dt_asignaciones.codasi=scv_tarifas.codtar)".
				 "        WHEN 'TRP' THEN (SELECT scv_transportes.dentra".
				 "                           FROM scv_transportes".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_transportes.codemp".
				 "                            AND scv_dt_asignaciones.codasi=scv_transportes.codtra)".
				 "        WHEN 'TOA' THEN (SELECT scv_otrasasignaciones.denotrasi".
				 "                           FROM scv_otrasasignaciones".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_otrasasignaciones.codemp".
				 "                            AND scv_dt_asignaciones.codasi=scv_otrasasignaciones.codotrasi)".
				 "		  ELSE (SELECT scv_tarifakms.dentar".
				 "                FROM scv_tarifakms".
				 "               WHERE scv_dt_asignaciones.codemp=scv_tarifakms.codemp".
				 "                 AND scv_dt_asignaciones.codasi=scv_tarifakms.codtar) END) AS denasi, ".
				 "       (CASE scv_dt_asignaciones.proasi ".
				 "        WHEN 'TVS' THEN (SELECT (scv_tarifas.monbol+scv_tarifas.monpas+scv_tarifas.monhos+scv_tarifas.monali+scv_tarifas.monmov)".
				 "                           FROM scv_tarifas".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_tarifas.codemp".
				 " 							  AND scv_dt_asignaciones.codasi=scv_tarifas.codtar)".
				 "        WHEN 'TRP' THEN (SELECT scv_transportes.tartra".
				 "                           FROM scv_transportes".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_transportes.codemp".
				 "                            AND scv_dt_asignaciones.codasi=scv_transportes.codtra)".
				 "        WHEN 'TOA' THEN (SELECT scv_otrasasignaciones.tarotrasi".
				 "                           FROM scv_otrasasignaciones".
				 "                          WHERE scv_dt_asignaciones.codemp=scv_otrasasignaciones.codemp".
				 "                            AND scv_dt_asignaciones.codasi=scv_otrasasignaciones.codotrasi)".
				 "		  ELSE (SELECT scv_tarifakms.montar".
				 "                FROM scv_tarifakms".
				 "               WHERE scv_dt_asignaciones.codemp=scv_tarifakms.codemp".
				 "                 AND scv_dt_asignaciones.codasi=scv_tarifakms.codtar) END) AS monto, 
						 (CASE scv_dt_asignaciones.proasi 
							WHEN 'TRP' THEN (SELECT scv_transportes.codtiptra 
											FROM 	scv_transportes 
											WHERE 	scv_dt_asignaciones.codemp=scv_transportes.codemp AND 
												scv_dt_asignaciones.codasi=scv_transportes.codtra) 	 
							ELSE (	'---' ) 
							END) AS codtiptra						".
				 "  FROM scv_solicitudviatico,scv_dt_asignaciones".
				 " WHERE scv_solicitudviatico.codemp='".$as_codemp."'".
				 "   AND scv_solicitudviatico.codsolvia='".$as_codsolvia."'".
				 "   AND scv_solicitudviatico.codsolvia=scv_dt_asignaciones.codsolvia";
	    $rs_data=$this->io_sql->select($ls_sql); //print $ls_sql;
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_dt_asignaciones ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds_detalle->data=$data;
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido; 
	} //fin  function uf_select_solicitudpago_asignaciones

	function uf_select_solicitudpago_spg($as_codemp,$as_codsolvia)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_solicitudpago_spg
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // codigo de la solicitud de viaticos
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de buscar las asignaciones de una solicitud de viaticos
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 13/09/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql= "SELECT codestpro1, codestpro2, codestpro3, codestpro4, codestpro5, spg_cuenta, estcla, ".
				 "      (SELECT denestpro1 ".
				 "		   FROM spg_ep1 ".
				 "        WHERE spg_ep1.codestpro1 = scv_dt_spg.codestpro1 ".
				 "          AND spg_ep1.estcla = scv_dt_spg.estcla) AS denestpro1, ".
				 "      (SELECT denestpro2 ".
				 "		  FROM spg_ep2 ".
				 "        WHERE spg_ep2.codestpro1 = scv_dt_spg.codestpro1 ".
				 "		    AND spg_ep2.codestpro2 = scv_dt_spg.codestpro2 ".
				 "          AND spg_ep2.estcla = scv_dt_spg.estcla) AS denestpro2, ".
				 "      (SELECT denestpro3 ".
				 "		  FROM spg_ep3 ".
				 "       WHERE spg_ep3.codestpro1 = scv_dt_spg.codestpro1 ".
				 "		   AND spg_ep3.codestpro2 = scv_dt_spg.codestpro2 ".
				 "         AND spg_ep3.codestpro3 = scv_dt_spg.codestpro3 ".
				 "         AND spg_ep3.estcla = scv_dt_spg.estcla) AS denestpro3, ".
				 "      (SELECT denestpro4 ".
				 "		  FROM spg_ep4 ".
				 "       WHERE spg_ep4.codestpro1 = scv_dt_spg.codestpro1 ".
				 "		   AND spg_ep4.codestpro2 = scv_dt_spg.codestpro2 ".
				 "         AND spg_ep4.codestpro3 = scv_dt_spg.codestpro3 ".
				 "         AND spg_ep4.codestpro4 = scv_dt_spg.codestpro4 ".
				 "         AND spg_ep4.estcla = scv_dt_spg.estcla) AS denestpro4, ".
				 "      (SELECT denestpro5 ".
				 "		  FROM spg_ep5 ".
				 "       WHERE spg_ep5.codestpro1 = scv_dt_spg.codestpro1 ".
				 "		   AND spg_ep5.codestpro2 = scv_dt_spg.codestpro2 ".
				 "         AND spg_ep5.codestpro3 = scv_dt_spg.codestpro3 ".
				 "         AND spg_ep5.codestpro4 = scv_dt_spg.codestpro4 ".
				 "         AND spg_ep5.codestpro5 = scv_dt_spg.codestpro5 ".
				 "         AND spg_ep5.estcla = scv_dt_spg.estcla) AS denestpro5 ".
				 "  FROM scv_dt_spg ".
				 " WHERE codemp='".$as_codemp."'".
				 "   AND codsolvia='".$as_codsolvia."'".
				 " GROUP BY codestpro1, codestpro2, codestpro3, codestpro4, codestpro5, estcla, spg_cuenta ";
			
	    $rs_data=$this->io_sql->select($ls_sql);
	    $li_numrows=$this->io_sql->num_rows($rs_data);	
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_solicitudpago_spg ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
		}
		else
		{
			if ($li_numrows>0)
			{
				$data=$this->io_sql->obtener_datos($rs_data);
				$this->ds_detpresup->data=$data;
				$this->ds_detpresup->group_by(array('0'=>'codemp','1'=>'codsolvia'),array('0'=>'monto'),'monto');	
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido; 
	} //fin  function uf_select_solicitudpago_spg

	function uf_select_ruta($as_codemp,$as_codsolvia)	
	{
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	         Function: uf_select_ruta
		//	           Access: public
		//  		Arguments: $as_codemp     // codigo de empresa
		//  			       $as_codsolvia  // codigo de la solicitud de viaticos
		//	         Returns : $lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//	      Description: Función que se encarga de buscar la rutaque presenta 
		//         Creado por: Ing. Luis Anibal Lang           
		//   Fecha de Cracion: 13/09/2006							Fecha de Ultima Modificación:   
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$ls_denrut="";
		$ls_sql= "SELECT scv_rutas.desrut ".
				 "  FROM scv_rutas,scv_solicitudviatico ".
				 " WHERE scv_solicitudviatico.codemp='".$as_codemp."'".
				 "   AND scv_solicitudviatico.codsolvia='".$as_codsolvia."'".
				 "   AND scv_solicitudviatico.codemp=scv_rutas.codemp".
				 "   AND scv_solicitudviatico.codrut=scv_rutas.codrut".
				 " GROUP BY scv_rutas.desrut ";
	    $rs_data=$this->io_sql->select($ls_sql);
		if($rs_data===false)
		{
		//	$this->io_msg->message("ERROR");
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_ruta ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
			return false;
		}
		else
		{
			if($row=$this->io_sql->fetch_row($rs_data))
			{
				$ls_denrut=$row["desrut"];
			}
			$this->io_sql->free_result($rs_data);
		}
		return $ls_denrut; 
	} //fin  function uf_select_ruta
	
	function uf_scv_load_codigopersonal($as_codemp,$as_cedper,&$as_codper)
	{
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	     Function: uf_scv_select_categoria_personal
		//         Access: public 
		//      Argumento: $as_codemp  // codigo de empresa
		//  			   $as_cedper  // cedula de personal
		//  			   $as_codper  // codigo de personal
		//	      Returns: Retorna un Booleano
		//    Description: Funcion que obtiene el codigo de un personal dado su cedula
		//	   Creado Por: Ing. Luis Anibal Lang
		// Fecha Creación: 17/04/2007								Fecha Última Modificación :  
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=false;
		$ls_sql="SELECT codper".
		        "  FROM sno_personal".
				" WHERE codemp='". $as_codemp ."'".
				"   AND cedper='". $as_cedper ."'";
		$rs_data=$this->io_sql->select($ls_sql);
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->solicitud_viaticos MÉTODO->uf_scv_load_codigopersonal ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
			$lb_valido=false;
		}
		else
		{
			if($row=$this->io_sql->fetch_row($rs_data))
			{
				$as_codper=$row["codper"];
				$lb_valido=true;
			}
			$this->io_sql->free_result($rs_data);
		}
		return $lb_valido;
	}  // end function uf_scv_load_codigopersonal

	//-----------------------------------------------------------------------------------------------------------------------------------
	function uf_select_listadosolicitudes($ad_fecregdes,$ad_fecreghas,$as_coduniadm,$as_orden)
	{
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//       Function: uf_select_listadosolicitudes
		//         Access: public  
		//	    Arguments: ad_fecregdes // Inicio del Intervalo de Fecha del Reporte
		//	    		   ad_fecreghas // Fin del Intervalo de Fecha del Reporte
		//	    		   as_coduniadm // Codigo de unidad administrativa
		//	    		   as_orden     // Variable de orden
		//	      Returns: lb_valido True si se creo el Data stored correctamente ó False si no se creo
		//    Description: Funcion que busca la informacion basica de los beneficiarios de un viatico en un 
		//                 lapso de tiempo indicado
		//	   Creado Por: Ing. Luis Anibal Lang
		// Fecha Creación: 08/06/2007									  
		// Modificado Por: Lic. Edgar A. Quintero U.     Fecha Última Modificación : 29/07/2013
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=true;
		$ls_criterio="";
		if(!empty($ad_fecregdes))
		{
			$ad_fecregdes=$this->io_funcion->uf_convertirdatetobd($ad_fecregdes);
			$ls_criterio=$ls_criterio. "  AND sv.fecsolvia>='".$ad_fecregdes."'";
		}
		if(!empty($ad_fecreghas))
		{
			$ad_fecreghas=$this->io_funcion->uf_convertirdatetobd($ad_fecreghas);
			$ls_criterio=$ls_criterio. "  AND sv.fecsolvia<='".$ad_fecreghas."'";
		}
		if(!empty($as_coduniadm)){$ls_criterio=$ls_criterio. "  AND sv.coduniadm='".$as_coduniadm."'";}
		if($_GET['estsolvia']){$ls_criterio=$ls_criterio. "  AND sv.estsolvia='".$_GET['estsolvia']."'";}
		if($_GET['solviaext']!=""){$ls_criterio=$ls_criterio. "  AND sv.solviaext='".$_GET['solviaext']."'";}
		
		switch ($_SESSION["ls_gestor"])
		{
			case "MYSQLT":
				$ls_cadenaben="CONCAT(rpc_beneficiario.nombene,' ',rpc_beneficiario.apebene)";
				$ls_cadenaper="CONCAT(p.nomper,' ',p.apeper)";
				break;
			case "POSTGRES":
				$ls_cadenaben="rpc_beneficiario.nombene||' '||rpc_beneficiario.apebene";
				$ls_cadenaper="p.nomper||' '||p.apeper";
				break;
		}
		
		$as_orden = str_replace('scv_solicitudviatico.','sv.',$as_orden);
		$as_orden = str_replace('scv_rutas.','ru.',$as_orden);
		$as_orden = str_replace('scv_dt_personal.','dt.',$as_orden);
		
		$ls_sql="SELECT sv.codsolvia,sv.fecsalvia,
		                MAX(dp.monpervia) AS monto,sv.fecregvia,
						ru.desrut,dp.codper,
				        (CASE dp.codclavia WHEN '' THEN (SELECT ".$ls_cadenaben." 
				                                                       FROM rpc_beneficiario
				                                                      WHERE rpc_beneficiario.codemp=dp.codemp
				                                                        AND rpc_beneficiario.ced_bene=dp.codper)
				                                       ELSE (SELECT ".$ls_cadenaper." 
				                                               FROM sno_personalnomina pn
															   LEFT JOIN sno_personal p ON p.codemp = pn.codemp
																					   AND p.codper = lpad(pn.codper,10,'0')
				                                              WHERE pn.codemp=dp.codemp
				                                                AND pn.codper=dp.codper
																AND pn.codnom = dp.codnom) END ) AS nombre,
				       (CASE dp.codclavia WHEN '' THEN (SELECT ced_bene
				                                                       FROM rpc_beneficiario
				                                                      WHERE rpc_beneficiario.codemp=dp.codemp
				                                                        AND rpc_beneficiario.ced_bene=dp.codper)
				                                       ELSE (SELECT cedper
				                                               FROM sno_personalnomina pn
															   LEFT JOIN sno_personal p ON p.codemp = pn.codemp
																					   AND p.codper = lpad(pn.codper,10,'0')
				                                              WHERE pn.codemp=dp.codemp
				                                                AND pn.codper=dp.codper
																AND pn.codnom = dp.codnom) END ) AS cedula,
				  sv.estsolvia,e_estsolvia.descequiv AS desc_estsolvia,
				  (abs((sv.fecsalvia::date-sv.fecregvia::date)) + 1) as dias,
				  (CASE sv.solviaext WHEN '1' THEN 'INTERNACIONAL'
				                     WHEN '0' THEN 'NACIONAL'
				                     ELSE 'NACIONAL'
									 END) AS destipovia,
				  sv.solviaext
				  FROM scv_solicitudviatico sv
				  INNER JOIN scv_rutas ru ON sv.codemp=ru.codemp
				                         AND sv.codrut=ru.codrut
				  INNER JOIN scv_dt_personal dp ON sv.codemp=dp.codemp
				                               AND sv.codsolvia=dp.codsolvia
				  LEFT JOIN covensol_sigesp_equiv e_estsolvia ON e_estsolvia.dominio='scv_solicitudviatico'
													         AND e_estsolvia.campo='estsolvia'
													         AND e_estsolvia.valor= sv.estsolvia::text
				 WHERE sv.codemp='".$this->ls_codemp."'
				     ".$ls_criterio."
				  GROUP BY sv.codsolvia,ru.desrut,dp.codper,dp.codnom, 
				           sv.fecsalvia, sv.fecregvia, ru.desrut, 
				           dp.codper,dp.codclavia,dp.codemp, 
				           dp.codsolvia,sv.estsolvia,e_estsolvia.descequiv,sv.solviaext 
				  ORDER BY ".$as_orden."";
				
				
		$rs_data=$this->io_sql->select($ls_sql);
		$this->rsSol = $rs_data; 
		if($rs_data===false)
		{
			$this->io_msg->message("CLASE->Report MÉTODO->uf_select_listadosolicitudes ERROR->".$this->io_funcion->uf_convertirmsg($this->io_sql->message));
			return false;
		}
		
		return $rs_data;
	}// end function uf_select_listadosolicitudes
	//-----------------------------------------------------------------------------------------------------------------------------------


} //fin  class sigesp_siv_class_report
?>
