<?php

class covensol_srh_c_rrhh {

	function covensol_srh_c_rrhh($propiedades=array()){		
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// Function: srh
		// Access: public (covensol_srh_c_rrhh)
		// Description: Constructor de la Clase
		// Creado Por: Lic. Edgar A. Quintero
		// Fecha Creación: 04/11/2013 								
		// Fecha Última Modificación : 
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		global $ruta;
		if($ruta==''){$ruta="../";}		
		//require_once($ruta."shared/class_folder/sigesp_include.php");
		require_once($ruta."shared/class_folder/sigesp_include_covensol.php");
		$io_include=new sigesp_include_covensol();
		$io_conexion=$io_include->uf_conectar();
		//require_once($ruta."shared/class_folder/class_sql.php");
		require_once($ruta."shared/class_folder/class_sql_covensol.php");
		$this->io_sql=new class_sql_covensol($io_conexion);	
		require_once($ruta."shared/class_folder/class_mensajes.php");
		$this->io_mensajes=new class_mensajes();
		require_once($ruta."shared/class_folder/sigesp_conexiones.php");
		$this->io_conexiones=new conexiones();
		require_once($ruta."shared/class_folder/class_funciones.php");
		$this->io_funciones=new class_funciones();		
		require_once($ruta."shared/class_folder/sigesp_c_seguridad.php");
		$this->io_seguridad= new sigesp_c_seguridad();				
        $this->ls_codemp=$_SESSION["la_empresa"]["codemp"];
		
		if($propiedades['habilitar_json_lib']){
			require_once($ruta.'shared/class_folder/JSON.php');
			$this->json = new JSON();
		}	
		$this->postgres_ilike = '';
		if($_SESSION["ls_gestor"] == 'POSTGRES'){$this->postgres_ilike = 'I';}
		
		$this->codemp=$_SESSION["la_empresa"]['codemp'];
		if($_SESSION["la_nomina"]["codnom"]){
			//$this->codemp=$_SESSION["la_empresa"]["codemp"];
			$this->codnom=$_SESSION["la_nomina"]["codnom"];
			$this->peractnom=$_SESSION["la_nomina"]["peractnom"];
		}
		//$this->cfg_codsis = 'FOP';
		//$this->cfg_seccion = 'SEGURIDAD';
		//$this->cfg_type ='C';
		//$this->nominas   = $this->obtCfg('NOMINAS_PERSONAL');
		
	}
	
	function ValidarSesion($opciones = array()){
	//==========================================================================================================================
	//	Function:      ValidarSesion
	//  Elaborado por: Lic. Edgar A. Quintero U.
	//	Returns:	   
	//	Description:   Ejecuta la acción en caso de no haber obtenido las credenciales necesarias.
	//==========================================================================================================================
		if(!array_key_exists("la_logusr",$_SESSION)){
			echo '<script type="text/javascript">';			
			echo "if(window.opener!=null){opener.location.href='../sigesp_inicio_sesion.php'; window.close();}";
			echo "else{location.href='../sigesp_inicio_sesion.php';}";		
			echo '</script>';		
			return false;
		}
		return true;	
	}
	
   function cargar_seguridad($as_sistema,$as_ventanas)
   {
		$ls_empresa=$_SESSION["la_empresa"]["codemp"];
		$ls_logusr=$_SESSION["la_logusr"];
		$this->seguridad["empresa"]=$ls_empresa;
		$this->seguridad["logusr"]=$ls_logusr;
		$this->seguridad["sistema"]=$as_sistema;
		$this->seguridad["ventanas"]=$as_ventanas;
		$this->permisos="";
		$this->la_permisos = array();
		$this->la_permisos["leer"]="";
		$this->la_permisos["incluir"]="";
		$this->la_permisos["cambiar"]="";
		$this->la_permisos["eliminar"]="";
		$this->la_permisos["imprimir"]="";
		$this->la_permisos["anular"]="";
		$this->la_permisos["ejecutar"]="";
		if (array_key_exists("permisos",$_POST)||($ls_logusr=="PSEGIS"))
		{	
			if($ls_logusr=="PSEGIS")
			{
				$this->permisos="1";
				$this->la_permisos=$this->io_seguridad->uf_sss_load_permisossigesp();
			}
			else
			{
				$this->permisos=$_POST["permisos"];
				$this->la_permisos["leer"]=$_POST["leer"];
				$this->la_permisos["incluir"]=$_POST["incluir"];
				$this->la_permisos["cambiar"]=$_POST["cambiar"];
				$this->la_permisos["eliminar"]=$_POST["eliminar"];
				$this->la_permisos["imprimir"]=$_POST["imprimir"];
				$this->la_permisos["anular"]=$_POST["anular"];
				$this->la_permisos["ejecutar"]=$_POST["ejecutar"];
			}
		}
		else
		{
			$this->permisos=$this->io_seguridad->uf_sss_load_permisos($ls_empresa,$ls_logusr,$as_sistema,$as_ventanas,$this->la_permisos);
		}
		
   }// end function cargar_seguridad
   
   function guardar_seguridad($param=array()){
	   $resp = $this->io_seguridad->uf_sss_insert_eventos_ventana( $this->seguridad["empresa"],
																   $this->seguridad["sistema"],
																   $this->seguridad['evento'],
																   $this->seguridad["logusr"],
																   $this->seguridad["ventanas"],
	   															   $this->seguridad['descripcion']);
	   return true;
	   
   }
   
   function imprimir_permisos($as_permisos,$aa_permisos,$as_logusr,$as_accion)
   {
		if (($as_permisos)||($as_logusr=="PSEGIS"))
		{
			print("<input type=hidden name=permisos id=permisos value='$as_permisos'>");
			print("<input type=hidden name=leer id=leer value='$aa_permisos[leer]'>");
			print("<input type=hidden name=incluir id=incluir value='$aa_permisos[incluir]'>");
			print("<input type=hidden name=cambiar id=cambiar value='$aa_permisos[cambiar]'>");
			print("<input type=hidden name=eliminar id=eliminar value='$aa_permisos[eliminar]'>");
			print("<input type=hidden name=imprimir id=imprimir value='$aa_permisos[imprimir]'>");
			print("<input type=hidden name=anular id=anular value='$aa_permisos[anular]'>");
			print("<input type=hidden name=ejecutar id=ejecutar value='$aa_permisos[ejecutar]'>");
		}
		else
		{
			print("<script language=JavaScript>");
			print("".$as_accion."");
			print("</script>");
		}
   }// end function uf_print_permisos
   
   function obtCfg($param,$prop=array())
	{
		
		
		$prop['criterio'] = (!$prop['criterio'])?'param':$prop['criterio'];
		$this->cfg_type = $this->cfg_type?$this->cfg_type:'C';

  
		switch($prop['criterio']){					
				
				case 'param':					
					$ls_sql="SELECT value
							  FROM sigesp_config 
							 WHERE codemp='".$this->ls_codemp."' 
							   AND codsis='".$this->cfg_codsis."' 
							   AND seccion='".$this->cfg_seccion."' 
							   AND type='".$this->cfg_type."'
							   AND entry='".$param."' ";
					break;
		
		}
				
		$this->RsFopConf=$this->io_sql->select($ls_sql);
				
		if($this->RsFopConf===false)
		{
			$metodo = 'obtCfg';
			$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR->:</b><br>'.$this->io_sql->message;					
			$this->io_mensajes->message($mensaje);
			return;					
		}
			
		return $this->RsFopConf->fields["value"];
	}
	
	function obtSegEstructuras($prop=array())
	{
					
		if(!$this->codintper){				
			$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder validar la seguridad de estructura. 				           			    
						<br><br><b>METODO:</b> obtSegEstructuras ';
			$this->io_conexiones->mensajes_ajax($mensaje);																	
			return false;
		}	
		
		$ls_sql="SELECT codintper, enabled
				  FROM sss_permisos_internos 
				 WHERE codemp='".$this->ls_codemp."' 
				   AND codusu='".$_SESSION["la_logusr"]."' 
				   AND codsis='".$this->cfg_codsis."'
				   AND codintper='".$this->codintper."' ";
						
		$this->RsFopSeg=$this->io_sql->select($ls_sql);
				
		if($this->RsFopSeg===false)
		{
			$metodo = 'obtSegEstructuras';
			$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR->:</b><br>'.$this->io_sql->message;					
			$this->io_mensajes->message($mensaje);
			return;					
		}
		
		$this->FopSegEnable = $this->RsFopSeg->RecordCount()?1:0;
		
		return $this->FopSegEnable;
	}
	
	
 
   function formato_numerico_us($numero){
	
			$busca = array(".", ",");
			$sustituye   = array("", ".");
			number_format(str_replace($busca,$sustituye,$numero),2,'.','');
			return number_format(str_replace($busca,$sustituye,$numero),2,'.','');
	
	}

		
   function FormatLonCodEstPro($datos=array()){
	            
				$ls_incio=25-$_SESSION["la_empresa"]['loncodestpro1'];
				$datos['codestpro1']=substr($datos['codestpro1'],$ls_incio,$_SESSION["la_empresa"]['loncodestpro1']);
				
				$ls_incio=25-$_SESSION["la_empresa"]['loncodestpro2'];
				$datos['codestpro2']=substr($datos['codestpro2'],$ls_incio,$_SESSION["la_empresa"]['loncodestpro2']);
				
				$ls_incio=25-$_SESSION["la_empresa"]['loncodestpro3'];
				$datos['codestpro3']=substr($datos['codestpro3'],$ls_incio,$_SESSION["la_empresa"]['loncodestpro3']);
				
				$ls_incio=25-$_SESSION["la_empresa"]['loncodestpro4'];
				$datos['codestpro4']=substr($datos['codestpro4'],$ls_incio,$_SESSION["la_empresa"]['loncodestpro4']);
				
				$ls_incio=25-$_SESSION["la_empresa"]['loncodestpro5'];
				$datos['codestpro5']=substr($datos['codestpro5'],$ls_incio,$_SESSION["la_empresa"]['loncodestpro5']);
				
				return $datos;
   }
   
  
	
	
	function ConsultaResumenPagoUniadm($prop=array()){	
		 
		 $criterio = "";
		 
		 if(!$prop['minorguniadm'] or !$prop['ofiuniadm'] or !$prop['uniuniadm'] or !$prop['depuniadm'] or !$prop['prouniadm'])
		 {				
			$mensaje = 'VALIDACIÓN DE DATOS: Faltan datos para poder realizar la consulta por unidad.';
			$this->io_mensajes->message($mensaje);															
			return false;
		 }
		 
		 $orden = $prop['orden']?$prop['orden']:'r.codper';
		 
		 if($prop['minorguniadm']){$criterio .= " AND pn.minorguniadm='".$prop['minorguniadm']."' ";}
		 if($prop['ofiuniadm']){$criterio .= " AND pn.ofiuniadm='".$prop['ofiuniadm']."' ";}
		 if($prop['uniuniadm']){$criterio .= " AND pn.uniuniadm='".$prop['uniuniadm']."' ";}
		 if($prop['depuniadm']){$criterio .= " AND pn.depuniadm='".$prop['depuniadm']."' ";}
		 if($prop['prouniadm']){$criterio .= " AND pn.prouniadm='".$prop['prouniadm']."' ";}
		 
		 $ls_sql="  SELECT r.codnom,r.codper,r.asires,r.dedres,r.apoempres,r.apopatres,r.monnetres,
		                   p.nomper,p.apeper,u.desuniadm,pn.codcar,c.descar,pn.codasicar,rac.denasicar 
					FROM sno_resumen r
					INNER JOIN sno_personalnomina pn ON r.codnom=pn.codnom						 
										            AND r.codper=pn.codper
					INNER JOIN sno_personal p ON p.codemp=pn.codemp 
					                         AND p.codper=pn.codper 
					INNER JOIN sno_cargo c ON pn.codemp = c.codemp
										  AND pn.codnom = c.codnom			
										  AND pn.codcar = c.codcar
					INNER JOIN sno_asignacioncargo rac ON pn.codemp = rac.codemp
													  AND pn.codnom = rac.codnom					 
													  AND pn.codasicar = rac.codasicar
					INNER JOIN sno_unidadadmin u ON pn.codemp = u.codemp
											    AND pn.minorguniadm = u.minorguniadm
											    AND pn.ofiuniadm = u.ofiuniadm
											    AND pn.uniuniadm = u.uniuniadm
											    AND pn.depuniadm = u.depuniadm
											    AND pn.prouniadm = u.prouniadm
					WHERE r.codnom = '".$this->codnom."'
					AND r.codperi = '".$this->peractnom."'
					AND r.codemp = '".$this->codemp."'
					".$criterio."
					ORDER BY u.desuniadm,".$orden." ";
						
		$rs=$this->io_sql->select($ls_sql);
				
		if($rs===false){
			$metodo = 'ConsultaResumenPagoUniadm';
			$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR->:</b><br>'.$this->io_sql->message;					
			$this->io_mensajes->message($mensaje);	
			return false;					
		}		
						
		return $rs;
	}
	
	function ConsultaSubtotNominaUniadm($prop=array()){	
		
		$criterio="";
		if($prop['coduniadmdes']){
			if($prop['minorguniadmdes']){$criterio .= " AND pn.minorguniadm>='".$prop['minorguniadmdes']."' ";}
			if($prop['ofiuniadmdes']){$criterio .= " AND pn.ofiuniadm>='".$prop['ofiuniadmdes']."' ";}
			if($prop['uniuniadmdes']){$criterio .= " AND pn.uniuniadm>='".$prop['uniuniadmdes']."' ";}
			if($prop['depuniadmdes']){$criterio .= " AND pn.depuniadm>='".$prop['depuniadmdes']."' ";}
			if($prop['prouniadmdes']){$criterio .= " AND pn.prouniadm>='".$prop['prouniadmdes']."' ";}
		}
		
		if($prop['coduniadmhas']){
			if($prop['minorguniadmhas']){$criterio .= " AND pn.minorguniadm<='".$prop['minorguniadmhas']."' ";}
			if($prop['ofiuniadmhas']){$criterio .= " AND pn.ofiuniadm<='".$prop['ofiuniadmhas']."' ";}
			if($prop['uniuniadmhas']){$criterio .= " AND pn.uniuniadm<='".$prop['uniuniadmhas']."' ";}
			if($prop['depuniadmhas']){$criterio .= " AND pn.depuniadm<='".$prop['depuniadmhas']."' ";}
			if($prop['prouniadmhas']){$criterio .= " AND pn.prouniadm<='".$prop['prouniadmhas']."' ";}
		 }
		 
		 $ls_sql="  SELECT DISTINCT ON (pn.minorguniadm,pn.ofiuniadm,pn.uniuniadm,pn.depuniadm,pn.prouniadm) 
						                pn.minorguniadm,pn.ofiuniadm,pn.uniuniadm,pn.depuniadm,pn.prouniadm,
										u.desuniadm, SUM(monnetres) AS subtot,
										COUNT(*) AS cantidad
					FROM sno_resumen r
					INNER JOIN sno_personalnomina pn ON r.codnom=pn.codnom						 
										            AND r.codper=pn.codper
					INNER JOIN sno_personal p ON p.codemp=pn.codemp 
					                         AND p.codper=pn.codper 
					INNER JOIN sno_unidadadmin u ON pn.codemp = u.codemp
											    AND pn.minorguniadm = u.minorguniadm
											    AND pn.ofiuniadm = u.ofiuniadm
											    AND pn.uniuniadm = u.uniuniadm
											    AND pn.depuniadm = u.depuniadm
											    AND pn.prouniadm = u.prouniadm
					WHERE r.codnom = '".$this->codnom."'
					AND r.codperi = '".$this->peractnom."'
					AND r.codemp = '".$this->codemp."'
					".$criterio."
					GROUP BY pn.minorguniadm,pn.ofiuniadm,pn.uniuniadm,pn.depuniadm,pn.prouniadm,u.desuniadm
					ORDER BY 1,2,3,4,5 ";
						
		$rs=$this->io_sql->select($ls_sql);
				
		if($rs===false){
			$metodo = 'ConsultaSubtotNominaUniadm';
			$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR->:</b><br>'.$this->io_sql->message;					
			$this->io_mensajes->message($mensaje);	
			return false;					
		}		
						
		return $rs;
	}
	
	
}//////////////////////////////////////////////////////////////******* FIN CLASE FORMULACIÓN *******/////////////////////////////////////////////////////////


?>
