<?php

class covensol_fop_c_formulacion {

	function covensol_fop_c_formulacion($propiedades=array()){		
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// Function: Formulación
		// Access: public (covensol_fop_c_formulacion)
		// Description: Constructor de la Clase
		// Creado Por: Lic. Edgar A. Quintero
		// Fecha Creación: 31/10/2012 								
		// 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->cfg_codsis = 'FOP';
		$this->cfg_seccion = 'SEGURIDAD';
		$this->cfg_type ='C';
		$this->nominas   = $this->obtCfg('NOMINAS_PERSONAL');
		$this->NoRevisarPondera=0;
	}
	
	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);
		//echo $ls_sql.'<br>';		
		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 obtSegFases($prop=array())
	{
					
				
		$ls_sql="SELECT codintper
				  FROM sss_permisos_internos 
				 WHERE codemp='".$this->ls_codemp."' 
				   AND codusu='".$_SESSION["la_logusr"]."' 
				   AND codsis='".$this->cfg_codsis."'
				   AND codintper ILIKE'FASE_%' ";
						
		$this->RsFopSegFase=$this->io_sql->select($ls_sql);
				
		if($this->RsFopSegFase===false)
		{
			$metodo = 'obtSegFases';
			$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;					
		}
		
		if(!$this->RsFopSegFase->RecordCount())
		{
			return '';					
		}
		
		
		$fases = '';
		foreach($this->RsFopSegFase as $datos){
				
				if(!$fases){$fases=str_replace('FASE_','',$datos['codintper']); continue;}
				if($fases){$fases .= '_'.str_replace('FASE_','',$datos['codintper']);}
		
		
		}
				
		return $fases;
	}
	
   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 ConsultaEstatusPry($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "";
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE e.codestpry ='".$param['codestpry']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_estproy e ".$sql_criterio ." ";			
			
			//echo '<br><br>'.$query_rs.'<br><br><br><br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEstatusPry';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	
   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 ComboEstatusPry($opciones=array()){

				if(!$opciones['nombre_combo']){$nombre_combo = 'sel_estpry';}else{$nombre_combo = $opciones['nombre_combo'];}
				if(!$opciones['codestpry']){$carga = ' Seleccione '; $id_carga = '';}
				else{	
				    $opciones['criterio'] = 'por_codigo';
					$ofic = $this->ConsultaEstatusPry($opciones,'por_codigo');
					if($ofic===false){return false;}
					if(!$ofic['cantidad']){
						$mensaje = '<b>ERROR DE DATOS: </b> No existe el Código: '.$opciones['codestpry'].
						   		   '<br><br><b>METODO:</b> ComboEstatusPry ';					
						$this->io_conexiones->mensajes_ajax($mensaje);																	
						return false;	
					}
					$carga = $ofic['fila']['desestproy'];				  
					$id_carga = $opciones['codestpry'];
				}			
				
				$opciones['criterio'] = 'por_listado';							
				$resp = $this->ConsultaEstatusPry($opciones,'por_listado');
				if($resp===false){return false;}
				
				$combo = '<select name="'.$nombre_combo.'" id="'.$nombre_combo.'" onChange="'.$opciones['funcion_js'].'">
				              <option value="'.$id_carga.'">- '.$carga.' -</option>';
				
				foreach($resp['rs'] as $dato) { 				
					$combo .= '<option value="'.$dato["codestpry"].'">'.$dato["desestproy"].'</option>';								
				}
				$combo .= '</select>';
																							
				return $combo;
	}
   
   
   function ConsultaPlanGob($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "";
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE pg.codplangob ='".$param['codplangob']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_plangob pg ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaPlanGob';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
   
   function ComboPlanGob($opciones=array()){

				if(!$opciones['nombre_combo']){$nombre_combo = 'sel_plangob';}else{$nombre_combo = $opciones['nombre_combo'];}
				if(!$opciones['codplangob']){$carga = ' Seleccione '; $id_carga = '';}
				else{	
				    $opciones['criterio'] = 'por_codigo';
					$rs = $this->ConsultaPlanGob($opciones,'por_codigo');
					if($rs===false){return false;}
					if(!$rs['cantidad']){
						$mensaje = '<b>ERROR DE DATOS: </b> No existe el Código: '.$opciones['codplangob'].
						   		   '<br><br><b>METODO:</b> ComboPlanGob ';					
						$this->io_conexiones->mensajes_ajax($mensaje);																	
						return false;	
					}
					$carga = $rs['fila']['desplanresu'];				  
					$id_carga = $opciones['codplangob'];
				}			
				
				$opciones['criterio'] = 'por_listado';							
				$resp = $this->ConsultaPlanGob($opciones,'por_listado');
				if($resp===false){return false;}
				
				if($opciones['disable']===true){$disable='disabled';}
				
				$combo = '<select name="'.$nombre_combo.'" id="'.$nombre_combo.'" onChange="'.$opciones['funcion_js'].'" '.$disable.'>
				              <option value="'.$id_carga.'">- '.$carga.' -</option>';
				
				foreach($resp['rs'] as $dato) { 				
					$combo .= '<option value="'.$dato["codplangob"].'">'.$dato["desplanresu"].'</option>';								
				}
				$combo .= '</select>';
																							
				return $combo;
	}
   
   function ConsultaSitPresupPry($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "";
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE s.codsitprepry ='".$param['codsitprepry']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_sitprepry s ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaSitPresupPry';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}

   
   function ComboSitPresupPry($opciones=array()){

				if(!$opciones['nombre_combo']){$nombre_combo = 'sel_sitpresupry';}else{$nombre_combo = $opciones['nombre_combo'];}
				if(!$opciones['codsitprepry']){$carga = ' Seleccione '; $id_carga = '';}
				else{					
					$opciones['criterio'] = 'por_codigo';
					$ofic = $this->ConsultaSitPresupPry($opciones,'por_codigo');
					if($ofic===false){return false;}
					if(!$ofic['cantidad']){
						$mensaje = '<b>ERROR DE DATOS: </b> No existe el Código: '.$opciones['codestpry'].
						   		   '<br><br><b>METODO:</b> ComboSitPresupPry ';					
						$this->io_conexiones->mensajes_ajax($mensaje);																	
						return false;	
					}
					$carga = $ofic['fila']['desitprepry'];				  
					$id_carga = $opciones['codsitprepry'];
				}			
				
				$opciones['criterio'] = 'por_listado';
				$resp = $this->ConsultaSitPresupPry($opciones,'por_listado');
				if($resp===false){return false;}
				
				$combo = '<select name="'.$nombre_combo.'" id="'.$nombre_combo.'" onChange="'.$opciones['funcion_js'].'">
				              <option value="'.$id_carga.'">- '.$carga.' -</option>';
				
				foreach($resp['rs'] as $dato) { 				
					$combo .= '<option value="'.$dato["codsitprepry"].'">'.$dato["desitprepry"].'</option>';								
				}
				$combo .= '</select>';
																							
				return $combo;
	}
   
   
   	function ConsultaAmb($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "";
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE a.codamb ='".$param['codamb']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ambito a ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaAmb';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}

   
   function ComboAmb($opciones=array()){

				if(!$opciones['nombre_combo']){$nombre_combo = 'sel_amb';}else{$nombre_combo = $opciones['nombre_combo'];}
				if(!$opciones['codamb']){$carga = ' Seleccione '; $id_carga = '';}
				else{					
					$opciones['criterio'] = 'por_codigo';
					$rs = $this->ConsultaAmb($opciones,'por_codigo');
					if($rs===false){return false;}
					if(!$rs['cantidad']){
						$mensaje = '<b>ERROR DE DATOS: </b> No existe el Código: '.$opciones['codamb'].
						   		   '<br><br><b>METODO:</b> ComboAmb ';					
						$this->io_conexiones->mensajes_ajax($mensaje);																	
						return false;	
					}
					$carga = $rs['fila']['desamb'];				  
					$id_carga = $opciones['codamb'];
				}			
				
				$opciones['criterio'] = 'por_listado';
				$resp = $this->ConsultaAmb($opciones,'por_listado');
				if($resp===false){return false;}
				
				$combo = '<select name="'.$nombre_combo.'" id="'.$nombre_combo.'" onChange="'.$opciones['funcion_js'].'">
				              <option value="'.$id_carga.'">- '.$carga.' -</option>';
				
				foreach($resp['rs'] as $dato) { 				
					$combo .= '<option value="'.$dato["codamb"].'">'.$dato["desamb"].'</option>';								
				}
				$combo .= '</select>';
																							
				return $combo;
	}
   

	 function ConsultaDirectriz($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " d.*  ";													
					    $sql_criterio = " WHERE d.codplangob = '".$param['codplangob']."' 
						                    AND d.desdirect ".$this->postgres_ilike."LIKE('%".$param['desdirect']."%') ";
					    break;
				
			    case "por_codigo":				        
						$campos = " d.*  ";		
					    $sql_criterio = " WHERE d.codplangob = '".$param['codplangob']."' 
						                    AND  d.coddirect ='".$param['coddirect']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ae_directriz d ".$sql_criterio ." ORDER BY d.coddirect";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaDirectriz';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	

	function ConsultaObjetivo($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
			
			
			
			switch($param['criterio']){
							
				case "por_listado":	
				        if($param['coddirect']){$criterio .= " AND o.coddirect ='".$param['coddirect']."' ";}
						$campos = " d.*,o.*  ";													
					    $sql_criterio = "  INNER JOIN fop_ae_directriz d ON d.coddirect = o.coddirect
						 												AND d.codplangob = o.codplangob
						                   WHERE o.codplangob = '".$param['codplangob']."' 
										     AND o.desobj ".$this->postgres_ilike."LIKE('%".$param['desobj']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " d.*,o.*  ";		
					    $sql_criterio = "  INNER JOIN fop_ae_directriz d ON d.coddirect = o.coddirect
																		AND d.codplangob = o.codplangob
						                   WHERE o.codplangob = '".$param['codplangob']."' 
										    AND o.coddirect ='".$param['coddirect']."' 
											AND o.codobj ='".$param['codobj']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ae_obj o ".$sql_criterio ." ORDER BY o.codobj";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaObjetivo';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	

	function ConsultaEstrategia($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " d.*,e.*,o.*  ";		
						if($param['coddirect']){$criterio .= " AND e.coddirect ='".$param['coddirect']."' ";}
						if($param['codobj']){$criterio .= " AND e.codobj ='".$param['codobj']."' ";}
					    $sql_criterio = "  INNER JOIN fop_ae_directriz d ON d.coddirect = e.coddirect
													  					AND d.codplangob = e.codplangob
										   INNER JOIN fop_ae_obj o ON  o.coddirect = e.coddirect
														   		   AND o.codobj = e.codobj
																   AND o.codplangob = e.codplangob
						                   WHERE  e.codplangob = '".$param['codplangob']."' 
										     AND  e.denestratj ".$this->postgres_ilike."LIKE('%".$param['denestratj']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " d.*,e.*,o.*  ";		
					    $sql_criterio = "  INNER JOIN fop_ae_directriz d ON d.coddirect = e.coddirect
						                                                AND d.codplangob = e.codplangob
										   INNER JOIN fop_ae_obj o ON  o.coddirect = e.coddirect
														   		   AND o.codobj = e.codobj
																   AND o.codplangob = e.codplangob
						                   WHERE e.coddirect ='".$param['coddirect']."'	
										     AND e.codobj ='".$param['codobj']."'
											 AND e.codestrat ='".$param['codestrat']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ae_estrategia e ".$sql_criterio ." ORDER BY e.coddirect,e.codestrat ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEstrategia';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	function ConsultaPolitica($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " d.*,e.*,p.*,o.*  ";		
						if($param['coddirect']){$criterio .= " AND p.coddirect ='".$param['coddirect']."' ";}
						if($param['codobj']){$criterio .= " AND p.codobj ='".$param['codobj']."' ";}
						if($param['codestrat']){$criterio .= " AND p.codestrat ='".$param['codestrat']."' ";}
					    $sql_criterio = "  INNER JOIN fop_ae_directriz d ON d.coddirect = p.coddirect
																		AND d.codplangob = p.codplangob
										   INNER JOIN fop_ae_obj o ON  o.coddirect = p.coddirect
														   		   AND o.codobj = p.codobj
																   AND o.codplangob = p.codplangob
										   INNER JOIN fop_ae_estrategia e  ON e.coddirect = p.coddirect
										                                  AND e.codobj = p.codobj
																		  AND e.codestrat = p.codestrat
																		  AND e.codplangob = p.codplangob
						                   WHERE p.codplangob = '".$param['codplangob']."' 
										     AND p.denpol ".$this->postgres_ilike."LIKE('%".$param['denpol']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " d.*,e.*,p.*,o.*  ";		
					    $sql_criterio = "  INNER JOIN fop_ae_directriz d ON d.coddirect = p.coddirect
																		AND d.codplangob = p.codplangob
										   INNER JOIN fop_ae_obj o ON  o.coddirect = p.coddirect
														   		   AND o.codobj = p.codobj
																   AND o.codplangob = p.codplangob
										   INNER JOIN fop_ae_estrategia e  ON e.coddirect = p.coddirect
										                                  AND e.codobj = p.codobj
																		  AND e.codestrat = p.codestrat
																		  AND e.codplangob = p.codplangob
						                   WHERE p.codplangob = '".$param['codplangob']."' 
										     AND p.coddirect ='".$param['coddirect']."'
											 AND p.codobj ='".$param['codobj']."'
											 AND p.codestrat ='".$param['codestrat']."'
											 AND p.codpol ='".$param['codpol']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ae_politica p ".$sql_criterio ." ORDER BY p.coddirect,p.codestrat,p.codpol";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaPolitica';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	

	function ConsultaUnidadMed($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
			
			$orden = $param['orden']?$param['orden']:'desunimed';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " um.*  ";													
					    $sql_criterio = " WHERE um.desunimed ".$this->postgres_ilike."LIKE('%".$param['desunimed']."%') ";
					    break;
				
			    case "por_codigo":				        
						$campos = " um.*  ";		
					    $sql_criterio = " WHERE um.codunimed ='".$param['codunimed']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_unimed um ".$sql_criterio ." ORDER BY ".$orden;			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaUnidadMed';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}

	
	function ConsultaBenefPry($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " bp.*  ";													
					    $sql_criterio = " WHERE bp.nombenpry ".$this->postgres_ilike."LIKE('%".$param['nombenpry']."%') ";
					    break;
				
			    case "por_codigo":				        
						$campos = " bp.*  ";		
					    $sql_criterio = " WHERE bp.codbenpry ='".$param['codbenpry']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_benefpry bp ".$sql_criterio ." ORDER BY bp.codbenpry";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaBenefPry';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ConsultaEp1($param=array()){
		 return $this->ConsultaPry($param);
	}
	
	function ConsultaEp1Fases($param=array()){
		 return $this->ConsultaPryFases($param);
	}
	
	function ConsultaPry($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " ep1.*,
								   COALESCE((
									SELECT (sum(dt.monrecprop) + sum(dt.monotrorec)) as totdtep1 
									  FROM fop_dt_ep3 dt
									 WHERE dt.anopresup  = ep1.anopresup
								       AND dt.codplangob = ep1.codplangob
								       AND dt.codestpro1 = ep1.codestpro1
									),0) AS totdtep1  ";
						if($param['denestpro1']){$criterio .= " AND denestpro1 ".$this->postgres_ilike."LIKE('%".$param['denestpro1']."%') ";}
						if($param['codestpro1']){$criterio .= " AND codestpro1 ".$this->postgres_ilike."LIKE('%".$param['codestpro1']."%') ";}
						if($param['estcla']){$criterio .= " AND estcla ='".$param['estcla']."' ";}
						if($param['codplangob']){$criterio .= " AND codplangob ='".$param['codplangob']."' ";}
						if($param['anopresup']){$criterio .= " AND anopresup ='".$param['anopresup']."' ";}
						if($param['coddirect']){$criterio .= " AND coddirect ='".$param['coddirect']."' ";}
					    $sql_criterio = " WHERE ep1.codemp = '".$this->ls_codemp."' ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE ep1.codemp = '".$this->ls_codemp."'
											AND ep1.anopresup ='".$param['anopresup']."'
											AND ep1.codplangob ='".$param['codplangob']."'
						                    AND ep1.codestpro1 ='".$param['codestpro1']."'
						 					AND ep1.estcla  = '".$param['estcla']."'";
					    break;				
				
				 case "por_fase":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE ep1.codemp = '".$this->ls_codemp."'
											AND ep1.anopresup ='".$param['anopresup']."'
											AND ep1.codplangob ='".$param['codplangob']."' ";
					    break;		
				
				case "por_datos":				        
						$campos = " ep1.*,pg.desplangob,es.desestproy,sp.desitprepry,a.desamb,
						            d.desdirect,o.desobj,e.denestratj,p.denpol,
									um.desunimed,bp.nombenpry,s.densec,ss.densubsec,
									oreq.desorg AS reqcontdesorg,
									oges.desorg AS contgesdesorg,
									ocon.desorg AS conflicdesorg,
									pger.nomper||' '||pger.apeper AS nomger,
									pger.sexper AS sexperger,
									pger.coreleper AS coreleperger,
									preg.nomper||' '||preg.apeper AS nomreg,
									preg.sexper AS sexperreg,
									preg.coreleper AS coreleperreg,
									paut.nomper||' '||paut.apeper AS nomaut,
									paut.sexper AS sexperaut,
									paut.coreleper AS coreleperaut
									
									";		
					    
						
						$sql_criterio = "   LEFT JOIN fop_plangob pg ON pg.codemp = ep1.codemp
						  											AND pg.codplangob = ep1.codplangob											
											LEFT JOIN fop_estproy es ON es.codemp = ep1.codemp
														 			 AND es.codestpry = ep1.codestpry
											LEFT JOIN fop_sitprepry sp ON sp.codemp = ep1.codemp
														   				AND sp.codsitprepry = ep1.codsitprepry
											LEFT JOIN fop_ambito a ON a.codemp = ep1.codemp 
														   		   AND a.codamb = ep1.codamb
											LEFT JOIN fop_ae_directriz d ON d.codemp = ep1.codemp 
																         AND d.coddirect = ep1.coddirect
																		 AND d.codplangob = ep1.codplangob																		 
											LEFT JOIN fop_ae_obj o ON o.codemp = ep1.codemp 
														   		   AND o.coddirect = ep1.coddirect
														   		   AND o.codobj = ep1.codobj
																   AND o.codplangob = ep1.codplangob
											LEFT JOIN fop_ae_estrategia e ON e.codemp = ep1.codemp 
															  			  AND e.coddirect = ep1.coddirect
																		  AND e.codobj = ep1.codobj
																  		  AND e.codestrat = ep1.codestrat
																		  AND e.codplangob = ep1.codplangob
											LEFT JOIN fop_ae_politica p ON p.codemp = ep1.codemp 
																		AND p.coddirect = ep1.coddirect
																		AND p.codobj = ep1.codobj
																		AND p.codestrat = ep1.codestrat
																		AND p.codpol = ep1.codpol
																		AND p.codplangob = ep1.codplangob
											LEFT JOIN fop_unimed um ON um.codemp = ep1.codemp 
																	AND um.codunimed = ep1.codunimed
											LEFT JOIN fop_benefpry bp ON  bp.codemp = ep1.codemp 
														  			  AND bp.codbenpry = ep1.codbenpry
											LEFT JOIN fop_sector s ON  s.codemp = ep1.codemp 
														  			  AND s.codsec = ep1.codsec
											LEFT JOIN fop_subsector ss ON  ss.codemp = ep1.codemp 
														  			  AND ss.codsec = ep1.codsec
																	  AND ss.codsubsec = ep1.codsubsec
											LEFT JOIN fop_org oreq ON oreq.codorg = ep1.cicodorgreqcont
											LEFT JOIN fop_org oges ON oges.codorg = ep1.cicodorgcontges
											LEFT JOIN fop_org ocon ON ocon.codorg = ep1.cicodorgconflic												
											LEFT JOIN sno_personal pger ON pger.codemp = ep1.codemp
																	   AND pger.codper = ep1.codperger
											LEFT JOIN sno_personal preg ON preg.codemp = ep1.codemp
																	   AND preg.codper = ep1.codperreg
											LEFT JOIN sno_personal paut ON paut.codemp = ep1.codemp
																	   AND paut.codper = ep1.codperaut						   
										    WHERE ep1.codemp = '".$this->ls_codemp."'
											  AND ep1.anopresup ='".$param['anopresup']."'
											  AND ep1.codplangob ='".$param['codplangob']."'
						                      AND ep1.codestpro1 ='".$param['codestpro1']."'
						 					  AND ep1.estcla  = '".$param['estcla']."'";
											  
											  
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ep1 ep1 ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaPry';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	
	function ConsultaPryFases($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " ep1.*,
								   COALESCE((
									SELECT (sum(dt.monrecprop) + sum(dt.monotrorec)) as totdtep1 
									  FROM fop_dt_hep3 dt
									 WHERE dt.anopresup  = ep1.anopresup
								       AND dt.codplangob = ep1.codplangob
								       AND dt.codestpro1 = ep1.codestpro1
									),0) AS totdtep1,dh.*  ";
						if($param['denestpro1']){$criterio .= " AND denestpro1 ".$this->postgres_ilike."LIKE('%".$param['denestpro1']."%') ";}
						if($param['codestpro1']){$criterio .= " AND codestpro1 ".$this->postgres_ilike."LIKE('%".$param['codestpro1']."%') ";}
						if($param['estcla']){$criterio .= " AND estcla ='".$param['estcla']."' ";}
						if($param['codplangob']){$criterio .= " AND codplangob ='".$param['codplangob']."' ";}
						if($param['anopresup']){$criterio .= " AND anopresup ='".$param['anopresup']."' ";}
						if($param['coddirect']){$criterio .= " AND coddirect ='".$param['coddirect']."' ";}
						if($param['nroh']){$criterio .= " AND nroh ='".$param['nroh']."' ";}
						
					    $sql_criterio = "   INNER JOIN fop_defhistorico dh ON ep1.nroh = dh.coddefhist
											WHERE ep1.codemp = '".$this->ls_codemp."' ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE ep1.codemp = '".$this->ls_codemp."'
											AND ep1.anopresup ='".$param['anopresup']."'
											AND ep1.codplangob ='".$param['codplangob']."'
						                    AND ep1.codestpro1 ='".$param['codestpro1']."'
						 					AND ep1.estcla  = '".$param['estcla']."'
											AND ep1.nroh ='".$param['nroh']."' ";
					    break;				
				
				 case "por_fase":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE ep1.codemp = '".$this->ls_codemp."'
											AND ep1.anopresup ='".$param['anopresup']."'
											AND ep1.codplangob ='".$param['codplangob']."'
											AND ep1.nroh ='".$param['nroh']."' ";
					    break;		
				
				case "por_datos":				        
						$campos = " ep1.*,pg.desplangob,es.desestproy,sp.desitprepry,a.desamb,
						            d.desdirect,o.desobj,e.denestratj,p.denpol,
									um.desunimed,bp.nombenpry,s.densec,ss.densubsec,
									oreq.desorg AS reqcontdesorg,
									oges.desorg AS contgesdesorg,
									ocon.desorg AS conflicdesorg,
									pger.nomper||' '||pger.apeper AS nomger,
									pger.sexper AS sexperger,
									pger.coreleper AS coreleperger,
									preg.nomper||' '||preg.apeper AS nomreg,
									preg.sexper AS sexperreg,
									preg.coreleper AS coreleperreg,
									paut.nomper||' '||paut.apeper AS nomaut,
									paut.sexper AS sexperaut,
									paut.coreleper AS coreleperaut,dh.*
									
									";		
					    
						
						$sql_criterio = "   LEFT JOIN fop_plangob pg ON pg.codemp = ep1.codemp
						  											AND pg.codplangob = ep1.codplangob
											INNER JOIN fop_defhistorico dh ON ep1.nroh = dh.coddefhist
											LEFT JOIN fop_estproy es ON es.codemp = ep1.codemp
														 			 AND es.codestpry = ep1.codestpry
											LEFT JOIN fop_sitprepry sp ON sp.codemp = ep1.codemp
														   				AND sp.codsitprepry = ep1.codsitprepry
											LEFT JOIN fop_ambito a ON a.codemp = ep1.codemp 
														   		   AND a.codamb = ep1.codamb
											LEFT JOIN fop_ae_directriz d ON d.codemp = ep1.codemp 
																         AND d.coddirect = ep1.coddirect
																		 AND d.codplangob = ep1.codplangob																		 
											LEFT JOIN fop_ae_obj o ON o.codemp = ep1.codemp 
														   		   AND o.coddirect = ep1.coddirect
														   		   AND o.codobj = ep1.codobj
																   AND o.codplangob = ep1.codplangob
											LEFT JOIN fop_ae_estrategia e ON e.codemp = ep1.codemp 
															  			  AND e.coddirect = ep1.coddirect
																		  AND e.codobj = ep1.codobj
																  		  AND e.codestrat = ep1.codestrat
																		  AND e.codplangob = ep1.codplangob
											LEFT JOIN fop_ae_politica p ON p.codemp = ep1.codemp 
																		AND p.coddirect = ep1.coddirect
																		AND p.codobj = ep1.codobj
																		AND p.codestrat = ep1.codestrat
																		AND p.codpol = ep1.codpol
																		AND p.codplangob = ep1.codplangob
											LEFT JOIN fop_unimed um ON um.codemp = ep1.codemp 
																	AND um.codunimed = ep1.codunimed
											LEFT JOIN fop_benefpry bp ON  bp.codemp = ep1.codemp 
														  			  AND bp.codbenpry = ep1.codbenpry
											LEFT JOIN fop_sector s ON  s.codemp = ep1.codemp 
														  			  AND s.codsec = ep1.codsec
											LEFT JOIN fop_subsector ss ON  ss.codemp = ep1.codemp 
														  			  AND ss.codsec = ep1.codsec
																	  AND ss.codsubsec = ep1.codsubsec
											LEFT JOIN fop_org oreq ON oreq.codorg = ep1.cicodorgreqcont
											LEFT JOIN fop_org oges ON oges.codorg = ep1.cicodorgcontges
											LEFT JOIN fop_org ocon ON ocon.codorg = ep1.cicodorgconflic												
											LEFT JOIN sno_personal pger ON pger.codemp = ep1.codemp
																	   AND pger.codper = ep1.codperger
											LEFT JOIN sno_personal preg ON preg.codemp = ep1.codemp
																	   AND preg.codper = ep1.codperreg
											LEFT JOIN sno_personal paut ON paut.codemp = ep1.codemp
																	   AND paut.codper = ep1.codperaut						   
										    WHERE ep1.codemp = '".$this->ls_codemp."'
											  AND ep1.anopresup ='".$param['anopresup']."'
											  AND ep1.codplangob ='".$param['codplangob']."'
						                      AND ep1.codestpro1 ='".$param['codestpro1']."'
						 					  AND ep1.estcla  = '".$param['estcla']."'
											  AND ep1.nroh ='".$param['nroh']."'";
											  
											  
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_hep1 ep1 ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaPryFases';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	
	function  InsertarPry($datos=array()){
				
				if(!$datos['codestpro1'] or !$datos['estcla'] or !$datos['anopresup'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarPry ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaPry($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del proyecto ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				$datos['codorgreg'] = $datos['codorgreg']?$datos['codorgreg']:'0000000000';
				$datos['fecinipry']=$this->io_conexiones->formatea_fecha_bd($datos['fecinipry']);
				$datos['fecfinpry']=$this->io_conexiones->formatea_fecha_bd($datos['fecfinpry']);
				$datos['montotpry']=$this->formato_numerico_us($datos['montotpry']);
				$datos['fecultdat'] = $datos['fecultdat']?$datos['fecultdat']:'01/01/1900';
				$datos['fecultdat']=$this->io_conexiones->formatea_fecha_bd($datos['fecultdat']);
				$datos['anoimpact'] = $datos['anoimpact']?$datos['anoimpact']:'0';
				$datos['mesimpact'] = $datos['mesimpact']?$datos['mesimpact']:'0';
				$datos['estint'] = $datos['estint']?$datos['estint']:'0';
				$datos['denestpro1']=substr($datos['denestpro1'],0,254);
				$datos['codestpro1']=str_pad($datos['codestpro1'],25,'0',STR_PAD_LEFT);				
				$datos['cantidadmeta'] = $datos['cantidadmeta']?$datos['cantidadmeta']:'0';
				$datos['cantidadmeta'] = $this->formato_numerico_us($datos['cantidadmeta']);				
				$datos['coddirect'] = $datos['coddirect']?$datos['coddirect']:'0';
				$datos['codobj'] = $datos['codobj']?$datos['codobj']:'0';
				$datos['codestrat'] = $datos['codestrat']?$datos['codestrat']:'0';
				$datos['codpol'] = $datos['codpol']?$datos['codpol']:'0';				
				$datos['nrobenfem'] = $datos['nrobenfem']?$datos['nrobenfem']:'0';
				$datos['nrobenmas'] = $datos['nrobenmas']?$datos['nrobenmas']:'0';
				$datos['nrototbenef'] = $datos['nrototbenef']?$datos['nrototbenef']:'0';
				$datos['nroesempfem'] = $datos['nroesempfem']?$datos['nroesempfem']:'0';
				$datos['nroesempmas'] = $datos['nroesempmas']?$datos['nroesempmas']:'0';
				$datos['nroesemptot'] = $datos['nroesemptot']?$datos['nroesemptot']:'0';
				$datos['nroesempindtot'] = $datos['nroesempindtot']?$datos['nroesempindtot']:'0';
				$datos['nroempfofem'] = $datos['nroempfofem']?$datos['nroempfofem']:'0';
				$datos['nroempfomas'] = $datos['nroempfomas']?$datos['nroempfomas']:'0';
				$datos['nroempfotot'] = $datos['nroempfotot']?$datos['nroempfotot']:'0';				
				$datos['totempdirnue'] = $datos['totempdirnue']?$datos['totempdirnue']:'0';
				$datos['totempdirsos'] = $datos['totempdirsos']?$datos['totempdirsos']:'0';
				$datos['totempdir'] = $datos['totempdir']?$datos['totempdir']:'0';				
				$datos['nroempindfotot'] = $datos['nroempindfotot']?$datos['nroempindfotot']:'0';
				$datos['codagendadec'] = $datos['codagendadec']?$datos['codagendadec']:'AI';
				$datos['plancontinge'] = $datos['plancontinge']?$datos['plancontinge']:'N';				
				$datos['latgra'] = $datos['latgra']?$datos['latgra']:'0';
				$datos['latmin'] = $datos['latmin']?$datos['latmin']:'0';
				$datos['latseg'] = $datos['latseg']?$datos['latseg']:'0';
				$datos['longra'] = $datos['longra']?$datos['longra']:'0';
				$datos['lonmin'] = $datos['lonmin']?$datos['lonmin']:'0';
				$datos['lonseg'] = $datos['lonseg']?$datos['lonseg']:'0';
				$datos['latgra'] = $this->formato_numerico_us($datos['latgra']);
				$datos['latmin'] = $this->formato_numerico_us($datos['latgra']);
				$datos['latseg'] = $this->formato_numerico_us($datos['latgra']);
				$datos['longra'] = $this->formato_numerico_us($datos['latgra']);
				$datos['lonmin'] = $this->formato_numerico_us($datos['latgra']);
				$datos['lonseg'] = $this->formato_numerico_us($datos['latgra']);				
				$datos['codsec'] = $datos['codsec']?$datos['codsec']:'000000';
				$datos['codsubsec'] = $datos['codsubsec']?$datos['codsubsec']:'000000';
				$datos['cireqcont'] = $datos['cireqcont']?$datos['cireqcont']:'N';
				$datos['cicontges'] = $datos['cicontges']?$datos['cicontges']:'N';
				$datos['ciconflic'] = $datos['ciconflic']?$datos['ciconflic']:'N';				
				$datos['cicodorgreqcont'] = $datos['cicodorgreqcont']?$datos['cicodorgreqcont']:'0000000000';	
				$datos['cicodorgcontges'] = $datos['cicodorgcontges']?$datos['cicodorgcontges']:'0000000000';	
				$datos['cicodorgconflic'] = $datos['cicodorgconflic']?$datos['cicodorgconflic']:'0000000000';	
						


				$ls_sql = "INSERT INTO fop_ep1( codemp,anopresup,codplangob, codestpro1, estcla, denestpro1, descripry, estint, 
												codestpry, codsitprepry, considapp, considleea, fecinipry, fecfinpry, 
												montotpry, codamb, coddirect, codobj, codestrat, codpol, objestrainst, 
												objespec, enunprob, indsitact, fecultdat, forind, fuenteind, 
												indsitu, anoimpact, mesimpact, tipresul, desresul, codunimed, 
												cantidadmeta, codbenpry, usureg, codorgreg, fecreg,
												nrobenfem, nrobenmas, nrototbenef, codagendadec, desexplora, 
												plancontinge, descplancont, nroesempfem, nroesempmas, nroesemptot,nroesempindtot, 
												nroempfofem, nroempfomas, nroempfotot, nroempindfotot,ejedes, nucdesend, zedes, comind, 
												latgra, latmin, latseg, longra, lonmin, lonseg, 
												codsec,codsubsec,cireqcont, cicontges, ciconflic, cicodorgreqcont, 
											    cicodorgcontges, cicodorgconflic, cidesreqcont, cidescontges, 
											    cidesconflic,codperger,codperreg,codperaut,
												uniger,unireg,uniaut,carger,carreg,caraut,
												telger,telreg,telaut,faxger,faxreg,faxaut,obsbenef, 
												viabsocpol, viabtec, viabeconfinan, viabamb, totempdirnue, totempdirsos, totempdir)
						   VALUES (  '".$this->ls_codemp."', ".	
								    "".$datos['anopresup'].", ".
								    "".$datos['codplangob'].", ".
								    "'".$datos['codestpro1']."', ".
								    "'".$datos['estcla']."', ".
								    "'".$datos['denestpro1']."', ".
								    "'".$datos['descripry']."', ".
									"".$datos['estint'].", ".
									"'".$datos['codestpry']."', ".
									"'".$datos['codsitprepry']."', ".
									"'".$datos['considapp']."', ".
									"'".$datos['considleea']."', ".
									"'".$datos['fecinipry']."', ".
									"'".$datos['fecfinpry']."', ".
									"'".$datos['montotpry']."', ".
									"'".$datos['codamb']."', ".
									"'".$datos['coddirect']."', ".
									"'".$datos['codobj']."', ".
									"'".$datos['codestrat']."', ".
									"'".$datos['codpol']."', ".
									"'".$datos['objestrainst']."', ".
									"'".$datos['objespec']."', ".
									"'".$datos['enunprob']."', ".
									"'".$datos['indsitact']."', ".
									"'".$datos['fecultdat']."', ".
									"'".$datos['forind']."', ".
									"'".$datos['fuenteind']."', ".
									"'".$datos['indsitu']."', ".
									"".$datos['anoimpact'].", ".
									"".$datos['mesimpact'].", ".
									"'".$datos['tipresul']."', ".
									"'".$datos['desresul']."', ".
									"'".$datos['codunimed']."', ".
									"".$datos['cantidadmeta'].", ".
									"'".$datos['codbenpry']."', ".
									"'".$_SESSION['la_logusr']."', ".
									"'".$datos['codorgreg']."', ".
									"'".date("Y/m/d")."', ".									
									"'".$datos['nrobenfem']."', ".
									"'".$datos['nrobenmas']."', ".
									"'".$datos['nrototbenef']."', ".
									"'".$datos['codagendadec']."', ".
									"'".$datos['desexplora']."', ".
									"'".$datos['plancontinge']."', ".
									"'".$datos['descplancont']."', ".
									"'".$datos['nroesempfem']."', ".
									"'".$datos['nroesempmas']."', ".
									"'".$datos['nroesemptot']."', ".
									"'".$datos['nroesempindtot']."', ".
									"'".$datos['nroempfofem']."', ".
									"'".$datos['nroempfomas']."', ".
									"'".$datos['nroempfotot']."', ".
									"'".$datos['nroempindfotot']."', ".
									"'".$datos['ejedes']."', ".
									"'".$datos['nucdesend']."', ".
									"'".$datos['zedes']."', ".
									"'".$datos['comind']."', ".
									"'".$datos['latgra']."', ".
									"'".$datos['latmin']."', ".
									"'".$datos['latseg']."', ".
									"'".$datos['longra']."', ".
									"'".$datos['lonmin']."', ".
									"'".$datos['lonseg']."', ".
									"'".$datos['codsec']."', ".
									"'".$datos['codsubsec']."', ".									
									"'".$datos['cireqcont']."', ".
									"'".$datos['cicontges']."', ".
									"'".$datos['ciconflic']."', ".
									"'".$datos['cicodorgreqcont']."', ".
									"'".$datos['cicodorgcontges']."', ".
									"'".$datos['cicodorgconflic']."', ".
									"'".$datos['cidesreqcont']."', ".
									"'".$datos['cidescontges']."', ".
									"'".$datos['cidesconflic']."', ".									
									"'".$datos['codperger']."', ".
									"'".$datos['codperreg']."', ".
									"'".$datos['codperaut']."', ".									
									"'".$datos['uniger']."', ".
									"'".$datos['unireg']."', ".
									"'".$datos['uniaut']."', ".
									"'".$datos['carger']."', ".
									"'".$datos['carreg']."', ".
									"'".$datos['caraut']."', ".
									"'".$datos['telger']."', ".
									"'".$datos['telreg']."', ".
									"'".$datos['telaut']."', ".
									"'".$datos['faxger']."', ".
									"'".$datos['faxreg']."', ".
									"'".$datos['faxaut']."', ".	
									"'".$datos['obsbenef']."', ".									
									"'".$datos['viabsocpol']."', ".
									"'".$datos['viabtec']."', ".
									"'".$datos['viabeconfinan']."', ".
									"'".$datos['viabamb']."', ".
									"'".$datos['totempdirnue']."', ".
									"'".$datos['totempdirsos']."', ".
									"'".$datos['totempdir']."' ".
									" ); ";
				  
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarPry';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el Proyecto ".$datos['codestpro1']." Tipo ".$datos['estcla']." Descripción: ".$datos['denestpro1'];
				$this->guardar_seguridad();
				
				$this->io_conexiones->dato_js('ha_codestpro1',$datos['codestpro1']);
				
				return true;
	
	}
	
	
	function ModificarPry($datos=array()){
		   
		   if(!$datos['codestpro1'] or !$datos['estcla'] or !$datos['anopresup'] or !$datos['codplangob'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> ModificarPry ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		        $datos['codorgreg'] = $datos['codorgreg']?$datos['codorgreg']:'0000000000';
				$datos['fecinipry']=$this->io_conexiones->formatea_fecha_bd($datos['fecinipry']);
				$datos['fecfinpry']=$this->io_conexiones->formatea_fecha_bd($datos['fecfinpry']);
				$datos['montotpry']=$this->formato_numerico_us($datos['montotpry']);
				$datos['fecultdat'] = $datos['fecultdat']?$datos['fecultdat']:'01/01/1900';
				$datos['fecultdat']=$this->io_conexiones->formatea_fecha_bd($datos['fecultdat']);
				$datos['anoimpact'] = $datos['anoimpact']?$datos['anoimpact']:'0';
				$datos['mesimpact'] = $datos['mesimpact']?$datos['mesimpact']:'0';
				$datos['estint'] = $datos['estint']?$datos['estint']:'0';
				$datos['denestpro1']=substr($datos['denestpro1'],0,254);
				$datos['codestpro1']=str_pad($datos['codestpro1'],25,'0',STR_PAD_LEFT);				
				$datos['cantidadmeta'] = $datos['cantidadmeta']?$datos['cantidadmeta']:'0';
				$datos['cantidadmeta'] = $this->formato_numerico_us($datos['cantidadmeta']);				
				$datos['coddirect'] = $datos['coddirect']?$datos['coddirect']:'0';
				$datos['codobj'] = $datos['codobj']?$datos['codobj']:'0';
				$datos['codestrat'] = $datos['codestrat']?$datos['codestrat']:'0';
				$datos['codpol'] = $datos['codpol']?$datos['codpol']:'0';				
				$datos['nrobenfem'] = $datos['nrobenfem']?$datos['nrobenfem']:'0';
				$datos['nrobenmas'] = $datos['nrobenmas']?$datos['nrobenmas']:'0';
				$datos['nrototbenef'] = $datos['nrototbenef']?$datos['nrototbenef']:'0';
				$datos['nroesempfem'] = $datos['nroesempfem']?$datos['nroesempfem']:'0';
				$datos['nroesempmas'] = $datos['nroesempmas']?$datos['nroesempmas']:'0';
				$datos['nroesemptot'] = $datos['nroesemptot']?$datos['nroesemptot']:'0';
				$datos['nroesempindtot'] = $datos['nroesempindtot']?$datos['nroesempindtot']:'0';
				$datos['nroempfofem'] = $datos['nroempfofem']?$datos['nroempfofem']:'0';
				$datos['nroempfomas'] = $datos['nroempfomas']?$datos['nroempfomas']:'0';
				$datos['nroempfotot'] = $datos['nroempfotot']?$datos['nroempfotot']:'0';
				$datos['nroempindfotot'] = $datos['nroempindfotot']?$datos['nroempindfotot']:'0';
				$datos['totempdirnue'] = $datos['totempdirnue']?$datos['totempdirnue']:'0';
				$datos['totempdirsos'] = $datos['totempdirsos']?$datos['totempdirsos']:'0';
				$datos['totempdir'] = $datos['totempdir']?$datos['totempdir']:'0';
				$datos['codagendadec'] = $datos['codagendadec']?$datos['codagendadec']:'AI';
				$datos['plancontinge'] = $datos['plancontinge']?$datos['plancontinge']:'N';				
				$datos['latgra'] = $datos['latgra']?$datos['latgra']:'0';
				$datos['latmin'] = $datos['latmin']?$datos['latmin']:'0';
				$datos['latseg'] = $datos['latseg']?$datos['latseg']:'0';
				$datos['longra'] = $datos['longra']?$datos['longra']:'0';
				$datos['lonmin'] = $datos['lonmin']?$datos['lonmin']:'0';
				$datos['lonseg'] = $datos['lonseg']?$datos['lonseg']:'0';
				$datos['latgra'] = $this->formato_numerico_us($datos['latgra']);
				$datos['latmin'] = $this->formato_numerico_us($datos['latmin']);
				$datos['latseg'] = $this->formato_numerico_us($datos['latseg']);
				$datos['longra'] = $this->formato_numerico_us($datos['longra']);
				$datos['lonmin'] = $this->formato_numerico_us($datos['lonmin']);
				$datos['lonseg'] = $this->formato_numerico_us($datos['lonseg']);	
				$datos['codsec'] = $datos['codsec']?$datos['codsec']:'000000';
				$datos['codsubsec'] = $datos['codsubsec']?$datos['codsubsec']:'000000';	
				$datos['cireqcont'] = $datos['cireqcont']?$datos['cireqcont']:'N';
				$datos['cicontges'] = $datos['cicontges']?$datos['cicontges']:'N';
				$datos['ciconflic'] = $datos['ciconflic']?$datos['ciconflic']:'N';				
				$datos['cicodorgreqcont'] = $datos['cicodorgreqcont']?$datos['cicodorgreqcont']:'0000000000';	
				$datos['cicodorgcontges'] = $datos['cicodorgcontges']?$datos['cicodorgcontges']:'0000000000';	
				$datos['cicodorgconflic'] = $datos['cicodorgconflic']?$datos['cicodorgconflic']:'0000000000';	
				
				
		   $ls_sql = "  UPDATE fop_ep1
						SET estcla='".$datos['estcla']."',
							denestpro1='".$datos['denestpro1']."',							
							descripry='".$datos['descripry']."',
							codestpry='".$datos['codestpry']."',	
							codsitprepry='".$datos['codsitprepry']."',
							considapp='".$datos['considapp']."',
							considleea='".$datos['considleea']."',
							fecinipry='".$datos['fecinipry']."',
							fecfinpry='".$datos['fecfinpry']."',
							montotpry='".$datos['montotpry']."',
							codamb='".$datos['codamb']."',
							coddirect='".$datos['coddirect']."',
							codobj='".$datos['codobj']."',
							codestrat='".$datos['codestrat']."',
							codpol='".$datos['codpol']."',
							objestrainst='".$datos['objestrainst']."',
							objespec='".$datos['objespec']."',
							enunprob='".$datos['enunprob']."',
							indsitact='".$datos['indsitact']."',
							fecultdat='".$datos['fecultdat']."',
							forind='".$datos['forind']."',
							fuenteind='".$datos['fuenteind']."',
							indsitu='".$datos['indsitu']."',
							anoimpact='".$datos['anoimpact']."',
							mesimpact='".$datos['mesimpact']."',
							tipresul='".$datos['tipresul']."',
							desresul='".$datos['desresul']."',
							codunimed='".$datos['codunimed']."',
							cantidadmeta='".$datos['cantidadmeta']."',
							codbenpry='".$datos['codbenpry']."',							
							nrobenfem='".$datos['nrobenfem']."',
							nrobenmas='".$datos['nrobenmas']."',
							nrototbenef='".$datos['nrototbenef']."',
							codagendadec='".$datos['codagendadec']."',
							desexplora='".$datos['desexplora']."',
							plancontinge='".$datos['plancontinge']."',
							descplancont='".$datos['descplancont']."',
							nroesempfem='".$datos['nroesempfem']."',
							nroesempmas='".$datos['nroesempmas']."',
							nroesemptot='".$datos['nroesemptot']."',
							nroesempindtot='".$datos['nroesempindtot']."',
							nroempfofem='".$datos['nroempfofem']."',
							nroempfomas='".$datos['nroempfomas']."',
							nroempfotot='".$datos['nroempfotot']."',
							nroempindfotot='".$datos['nroempindfotot']."',
							ejedes='".$datos['ejedes']."',	
							nucdesend='".$datos['nucdesend']."',	
							zedes='".$datos['zedes']."',
							comind='".$datos['comind']."',	
							latgra='".$datos['latgra']."',	
							latmin='".$datos['latmin']."',	
							latseg='".$datos['latseg']."',	
							longra='".$datos['longra']."',	
							lonmin='".$datos['lonmin']."',	
							lonseg='".$datos['lonseg']."',	
							codsec='".$datos['codsec']."',	
							codsubsec='".$datos['codsubsec']."',							
							cireqcont='".$datos['cireqcont']."',
							cicontges='".$datos['cicontges']."',
							ciconflic='".$datos['ciconflic']."',
							cicodorgreqcont='".$datos['cicodorgreqcont']."',
							cicodorgcontges='".$datos['cicodorgcontges']."',
							cicodorgconflic='".$datos['cicodorgconflic']."',
							cidesreqcont='".$datos['cidesreqcont']."',
							cidescontges='".$datos['cidescontges']."',
							cidesconflic='".$datos['cidesconflic']."',							
							codperger='".$datos['codperger']."',
							codperreg='".$datos['codperreg']."',
							codperaut='".$datos['codperaut']."',							
							uniger='".$datos['uniger']."',
							unireg='".$datos['unireg']."',
							uniaut='".$datos['uniaut']."',
							carger='".$datos['carger']."',
							carreg='".$datos['carreg']."',
							caraut='".$datos['caraut']."',
							telger='".$datos['telger']."',
							telreg='".$datos['telreg']."',
							telaut='".$datos['telaut']."',
							faxger='".$datos['faxger']."',
							faxreg='".$datos['faxreg']."',
							faxaut='".$datos['faxaut']."',	
							obsbenef='".$datos['obsbenef']."',							
							viabsocpol='".$datos['viabsocpol']."',
							viabtec='".$datos['viabtec']."',
							viabeconfinan='".$datos['viabeconfinan']."',
							viabamb='".$datos['viabamb']."',							
							totempdirnue='".$datos['totempdirnue']."',	
							totempdirsos='".$datos['totempdirsos']."',	
							totempdir='".$datos['totempdir']."'															
					   WHERE codemp = '".$this->ls_codemp."'
					     AND codplangob  = ".$datos['codplangob']."
						 AND anopresup  = ".$datos['anopresup']."
						 AND codestpro1  = '".$datos['codestpro1']."'
						 AND estcla  = '".$datos['estcla']."'";			
			
			
			$rs_data=$this->io_sql->select($ls_sql);			
			//echo $ls_sql;
			if($rs_data==false)
			{
				
				$metodo = 'ModificarPry';
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarPry';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
													
			return true;
	
	}
	
	function  EliminarPry($datos=array()){
				
				if(!$datos['codestpro1'] or !$datos['estcla'] or !$datos['anopresup'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarPry ';
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				$datos['codestpro1']=str_pad($datos['codestpro1'],25,'0',STR_PAD_LEFT);
				
				$ls_sql = "DELETE FROM fop_ep1 
				           WHERE codemp = '".$this->ls_codemp."' 
						   AND codplangob  = ".$datos['codplangob']."
						   AND anopresup  = ".$datos['anopresup']."
						   AND codestpro1='".$datos['codestpro1']."'  
						   AND estcla='".$datos['estcla']."' ";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarPry';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarPry';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Proyecto(s) o Acción(es) Centralida(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function  FormatDatosEp1($datos=array()){
		    
			$datos = $this->FormatLonCodEstPro($datos);
			$datos['montotpry'] = number_format($datos['montotpry'],2,',','.');
			$datos['fecinipry'] = $this->io_conexiones->formatea_fecha_normal($datos['fecinipry']);
			$datos['fecfinpry'] = $this->io_conexiones->formatea_fecha_normal($datos['fecfinpry']);
			$datos['fecultdat'] = $this->io_conexiones->formatea_fecha_normal($datos['fecultdat']);
			$datos['mesimpact'] = $datos['mesimpact']?$datos['mesimpact']:'0';
			$datos['anoimpact'] = $datos['anoimpact']?$datos['anoimpact']:'0';
			$datos['cantidadmeta'] = number_format($datos['cantidadmeta'],2,',','.');
			
			if($datos['tipresul']=='B'){$datos['desctipresul']='Bien';}
			if($datos['tipresul']=='S'){$datos['desctipresul']='Servicios';}
			
			if($datos['codagendadec']=='AI'){$datos['descagendadec']='Acción Inmediata';}
			if($datos['codagendadec']=='AD'){$datos['descagendadec']='Acción Diferida';}
			if($datos['codagendadec']=='E'){$datos['descagendadec']='Exploraciones';}
			
			if($datos['plancontinge']=='S'){$datos['desplancontinge']='Sí';}
			if($datos['plancontinge']=='N'){$datos['desplancontinge']='No';}
			
			$datos['latgra'] = number_format($datos['latgra'],2,',','.');
			$datos['latmin'] = number_format($datos['latmin'],2,',','.');
			$datos['latseg'] = number_format($datos['latseg'],2,',','.');
			$datos['longra'] = number_format($datos['longra'],2,',','.');
			$datos['lonmin'] = number_format($datos['lonmin'],2,',','.');
			$datos['lonseg'] = number_format($datos['lonseg'],2,',','.');			
			
			
			return $datos;
	}
	
	function ComboNominas($opciones=array()){
	
		$criterio=" ";
		if($this->nominas){$criterio .= " AND sno_nomina.codnom IN (".$this->nominas.") ";}
		
		$ls_sql="SELECT sno_nomina.codnom, sno_nomina.desnom 
				  FROM sno_nomina, sss_permisos_internos 
				 WHERE sno_nomina.codemp='".$this->ls_codemp."'
				   AND sno_nomina.peractnom<>'000'
				   AND sss_permisos_internos.codsis='SNO'
				   AND sss_permisos_internos.codusu='".$_SESSION["la_logusr"]."'
				   AND sno_nomina.codemp = sss_permisos_internos.codemp
				   AND sno_nomina.espnom = '0'
				   ".$criterio."
				   AND sno_nomina.codnom = sss_permisos_internos.codintper 
				 GROUP BY sno_nomina.codnom, sno_nomina.desnom 
				 ORDER BY sno_nomina.codnom, sno_nomina.desnom ";
				//echo $ls_sql;
				$this->rs_data=$this->io_sql->select($ls_sql);
				
				if($this->rs_data===false)
				{
					$metodo = 'ComboNominas';
					$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;					
				}
				
				print "<select name='cmbnomina' id='cmbnomina' style='width:400px'>";
				print " <option value='' selected>--Seleccione Una Nómina--</option>";
				while(!$this->rs_data->EOF)
				{
					$ls_codnom=$this->rs_data->fields["codnom"];
					$ls_desnom=$this->rs_data->fields["desnom"];
					print "<option value='".$ls_codnom."'>".$ls_codnom."-".$ls_desnom."</option>";
					$this->rs_data->MoveNext();				
				}
				$this->io_sql->free_result($this->rs_data);
				print "</select>";			
				
				
	}
	
	
	function ComboUniAdmin($opciones=array()){
	
				$criterio=" ";
				//if($this->nominas){$criterio .= " AND ua.codnom IN (".$this->nominas.") ";}	   
				$ls_sql="SELECT ua.* 
						  FROM sno_unidadadmin ua
						 WHERE ua.codemp='".$this->ls_codemp."'				   
						   ".$criterio."			
						 ORDER BY ua.desuniadm ";
				//echo $ls_sql;
				$this->rs_data=$this->io_sql->select($ls_sql);
				
				if($this->rs_data===false)
				{
					$metodo = 'ComboUniAdmin';
					$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;					
				}
				
				print "<select name='cmbuniadm' id='cmbuniadm' style='width:400px'>";
				print " <option value='' selected>--Seleccione una Unidad Administrativa--</option>";
				while(!$this->rs_data->EOF)
				{
					$coduniadmin  = $this->rs_data->fields["minorguniadm"].
									$this->rs_data->fields["ofiuniadm"].
									$this->rs_data->fields["uniuniadm"].
									$this->rs_data->fields["depuniadm"].
									$this->rs_data->fields["prouniadm"];
					print "<option value='".$coduniadmin."'>".$coduniadmin."-".$this->rs_data->fields["desuniadm"]."</option>";
					$this->rs_data->MoveNext();				
				}
				$this->io_sql->free_result($this->rs_data);
				print "</select>";			
				
				
	}
	
	function ConsultaPersonal($param=array()){	
		
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
					  
			   
				  case "por_codigo":
						$sql_criterio = " INNER JOIN sno_personalnomina pn ON p.codper = pn.codper 
																		 AND p.codemp = pn.codemp
										  LEFT JOIN sno_nomina n ON n.codemp = pn.codemp 
																 AND n.codnom = pn.codnom
										  LEFT JOIN sno_cargo sc ON sc.codcar = pn.codcar 
										  					    AND sc.codemp = pn.codemp 
																AND sc.codnom = pn.codnom
										  LEFT JOIN sno_asignacioncargo ac ON ac.codasicar = pn.codasicar 
										   								  AND ac.codemp = pn.codemp 
																		  AND ac.codnom = pn.codnom
																		  AND ac.codtab = pn.codtab 
																		  AND ac.codgra = pn.codgra 
																		  AND ac.codpas = pn.codpas	
										  LEFT JOIN sno_unidadadmin ua ON ua.codemp = pn.codemp
										                              AND ua.minorguniadm = pn.minorguniadm
										  							  AND ua.ofiuniadm = pn.ofiuniadm
																	  AND ua.uniuniadm = pn.uniuniadm
																	  AND ua.depuniadm = pn.depuniadm
																	  AND ua.prouniadm = pn.prouniadm
						                   WHERE n.espnom = '0' 
										     AND p.codper ='".$param['codper']."' "; 
						break;
				 
				 case "por_listado":						
						
						if($param['coduniadm']){
							
							   $param['minorguniadm'] = substr($param['coduniadm'],0,4);
							   $param['ofiuniadm'] = substr($param['coduniadm'],4,2);
							   $param['uniuniadm'] = substr($param['coduniadm'],6,2);
							   $param['depuniadm'] = substr($param['coduniadm'],8,2);
							   $param['prouniadm'] = substr($param['coduniadm'],10,2);
							   
							   $criterio .= " AND pn.minorguniadm = '".$param['minorguniadm']."'
							   				  AND pn.ofiuniadm = '".$param['ofiuniadm']."'
											  AND pn.uniuniadm = '".$param['uniuniadm']."'
											  AND pn.depuniadm = '".$param['depuniadm']."'
											  AND pn.prouniadm = '".$param['prouniadm']."'";
						}
						
						if($param['codnom']){$criterio .= " AND pn.codnom = '".$param['codnom']."' ";}
						
						$sql_criterio = " INNER JOIN sno_personalnomina pn ON p.codper = pn.codper 
																		 AND p.codemp = pn.codemp
										  LEFT JOIN sno_nomina n ON n.codemp = pn.codemp 
																 AND n.codnom = pn.codnom
										  LEFT JOIN sno_cargo sc ON sc.codcar = pn.codcar 
										  					    AND sc.codemp = pn.codemp 
																AND sc.codnom = pn.codnom
										  LEFT JOIN sno_asignacioncargo ac ON ac.codasicar = pn.codasicar 
										   								  AND ac.codemp = pn.codemp 
																		  AND ac.codnom = pn.codnom
																		  AND ac.codtab = pn.codtab 
																		  AND ac.codgra = pn.codgra 
																		  AND ac.codpas = pn.codpas	
										  LEFT JOIN sno_unidadadmin ua ON ua.codemp = pn.codemp
										                              AND ua.minorguniadm = pn.minorguniadm
										  							  AND ua.ofiuniadm = pn.ofiuniadm
																	  AND ua.uniuniadm = pn.uniuniadm
																	  AND ua.depuniadm = pn.depuniadm
																	  AND ua.prouniadm = pn.prouniadm
										  WHERE n.espnom = '0'
										    AND p.nomper ".$this->postgres_ilike."LIKE('%".$param['nomper']."%') 
										    AND p.apeper ".$this->postgres_ilike."LIKE('%".$param['apeper']."%')
										  ".$criterio."									  
										  ORDER BY p.codper";								 					
				break; 					  
			}
			
			$query_rs = "SELECT ".$campos." FROM sno_personal p ".$sql_criterio;
			//echo $query_rs;					
			$clase = get_class($this);
			$metodo = 'ConsultaPry';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	}

	
	function  InsertarDirectriz($datos=array()){
				
				if(!$datos['coddirect'] or !$datos['desdirect'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarDirectriz ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaDirectriz($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de la directriz ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_ae_directriz( codemp, coddirect, desdirect, codplangob)
						   VALUES (  '".$this->ls_codemp."', ".
						            "".$datos['coddirect'].", ".
								    "'".$datos['desdirect']."', ".
								     "".$datos['codplangob']." ".
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarDirectriz';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó la directriz ".$datos['coddirect']." Descripción: ".$datos['desdirect'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarDirectriz($datos=array()){
		   
		   if(!$datos['coddirect'] or !$datos['codplangob'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> ModificarDirectriz ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_ae_directriz
						 SET desdirect='".$datos['desdirect']."'			
					   WHERE codemp = '".$this->ls_codemp."' 
					     AND coddirect  = ".$datos['coddirect']."
						 AND codplangob  = ".$datos['codplangob']."";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{
				
				$metodo = 'ModificarDirectriz';
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarDirectriz';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
													
			return true;
	
	}
	
	function  EliminarDirectriz($datos=array()){
				
				if(!$datos['coddirect'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarDirectriz ';
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				$datos['codestpro1']=str_pad($datos['codestpro1'],25,'0',STR_PAD_LEFT);
				
				$ls_sql = "DELETE FROM fop_ae_directriz 
				           WHERE codemp = '".$this->ls_codemp."' 
							 AND coddirect  = ".$datos['coddirect']."
							 AND codplangob  = ".$datos['codplangob']."";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarDirectriz';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarDirectriz';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Directriz(ces)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function  InsertarObjetivo($datos=array()){
				
				if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarObjetivo ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaObjetivo($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del Objetivo ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_ae_obj( codemp,codplangob,coddirect,codobj,desobj)
						   VALUES (  '".$this->ls_codemp."', ".
								     "".$datos['codplangob'].", ".
						             "".$datos['coddirect'].", ".
								     "".$datos['codobj'].", ".
								     "'".$datos['desobj']."' ".
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarObjetivo';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el Objetivo Nacional ".$datos['codobj']." Descripción: ".$datos['desobj'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarObjetivo($datos=array()){
		   
		   if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codplangob'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> ModificarObjetivo ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_ae_obj
						 SET desobj='".$datos['desobj']."'			
					   WHERE codemp = '".$this->ls_codemp."'
					     AND codobj  = ".$datos['codobj']."
					     AND coddirect  = ".$datos['coddirect']."
						 AND codplangob  = ".$datos['codplangob']."";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{
				
				$metodo = 'ModificarObjetivo';
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarObjetivo';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
													
			return true;
	
	}
	
	function  EliminarObjetivo($datos=array()){
				
				if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarObjetivo ';
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				$datos['codestpro1']=str_pad($datos['codestpro1'],25,'0',STR_PAD_LEFT);
				
				$ls_sql = "DELETE FROM fop_ae_obj 
				           WHERE codemp = '".$this->ls_codemp."' 
						      AND codobj  = ".$datos['codobj']."
							 AND coddirect  = ".$datos['coddirect']."
							 AND codplangob  = ".$datos['codplangob']."";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarObjetivo';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarObjetivo';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Objetivo(s) Nacional(es)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function  InsertarEstrategia($datos=array()){
				

				if(!$datos['coddirect'] or !$datos['codestrat'] or !$datos['codobj'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarEstrategia ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaEstrategia($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del Objetivo Etratégico ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_ae_estrategia( codemp,codplangob,coddirect,codobj,codestrat,denestratj)
						   VALUES (  '".$this->ls_codemp."', ".
								     "".$datos['codplangob'].", ".
						             "".$datos['coddirect'].", ".
									 "".$datos['codobj'].", ".
								     "".$datos['codestrat'].", ".
								     "'".$datos['denestratj']."' ".
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarEstrategia';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el Objetivo Etratégico ".$datos['codestrat']." Descripción: ".$datos['denestratj'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarEstrategia($datos=array()){
		   
		   if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codestrat'] or !$datos['codplangob'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> ModificarEstrategia ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_ae_estrategia
						 SET denestratj='".$datos['denestratj']."'			
					   WHERE codemp = '".$this->ls_codemp."'
					     AND codestrat  = ".$datos['codestrat']."
					     AND coddirect  = ".$datos['coddirect']."
						 AND codobj  = ".$datos['codobj']."
						 AND codplangob  = ".$datos['codplangob']."";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{
				
				$metodo = 'ModificarEstrategia';
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarEstrategia';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
													
			return true;
	
	}
	
	function  EliminarEstrategia($datos=array()){
				
				if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codestrat'] or !$datos['codplangob'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarEstrategia ';
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				
				$ls_sql = "DELETE FROM fop_ae_estrategia 
				           WHERE codemp = '".$this->ls_codemp."' 
						      AND codestrat  = ".$datos['codestrat']."
							 AND coddirect  = ".$datos['coddirect']."
							 AND codobj  = ".$datos['codobj']."
							 AND codplangob  = ".$datos['codplangob']."";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarEstrategia';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarEstrategia';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Objetivo(s) Etratégico(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function  InsertarPolitica($datos=array()){
				
				if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codestrat'] or !$datos['codplangob'] or !$datos['codpol'] or !$datos['denpol'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarPolitica ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaPolitica($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del Objetivo General ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_ae_politica( codemp,codplangob,coddirect,codobj,codestrat,codpol, denpol)
						   VALUES (  '".$this->ls_codemp."', ".
								     "".$datos['codplangob'].", ".
						             "".$datos['coddirect'].", ".
									 "".$datos['codobj'].", ".
								     "".$datos['codestrat'].", ".
									 "".$datos['codpol'].", ".
								     "'".$datos['denpol']."' ".
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarPolitica';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el Objetivo General ".$datos['codobj']." Descripción: ".$datos['desobj'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarPolitica($datos=array()){
		   
		   if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codestrat'] or !$datos['codplangob'] or !$datos['codpol'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> ModificarPolitica ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_ae_politica
						 SET denpol='".$datos['denpol']."'			
					   WHERE codemp = '".$this->ls_codemp."'
					     AND codestrat  = ".$datos['codestrat']."
					     AND coddirect  = ".$datos['coddirect']."
						 AND codobj  = ".$datos['codobj']."
						 AND codpol  = ".$datos['codpol']."";
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$metodo = 'ModificarPolitica';
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarPolitica';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
													
			return true;
	
	}
	
	function  EliminarPolitica($datos=array()){
				
				if(!$datos['coddirect'] or !$datos['codobj'] or !$datos['codestrat'] or !$datos['codplangob'] or !$datos['codpol'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarPolitica ';
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				
				$ls_sql = "DELETE FROM fop_ae_politica 
				           WHERE codemp = '".$this->ls_codemp."' 
						      AND codestrat  = ".$datos['codestrat']."
							 AND coddirect  = ".$datos['coddirect']."
							 AND codobj  = ".$datos['codobj']."
							 AND codpol  = ".$datos['codpol']."
							 AND codplangob  = ".$datos['codplangob']."";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarPolitica';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarPolitica';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Objetivo(s) General(es)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	
	function ConsultaEstadosEp1($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "";
					    break;
				
			    case "por_ep1":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = est1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = est1.codpai
																	   AND est.codest = est1.codest
										  WHERE est1.codemp ='".$this->ls_codemp."'
						 					AND est1.anopresup ='".$param['anopresup']."'
											AND est1.codplangob ='".$param['codplangob']."'
											AND est1.codestpro1 ='".$param['codestpro1']."'
											AND est1.estcla ='".$param['estcla']."'									
										";
					    break;
						
				case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = est1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = est1.codpai
																	   AND est.codest = est1.codest
										  WHERE est1.codemp ='".$this->ls_codemp."'
						 					AND est1.anopresup ='".$param['anopresup']."'
											AND est1.codplangob ='".$param['codplangob']."'
											AND est1.codestpro1 ='".$param['codestpro1']."'
											AND est1.estcla ='".$param['estcla']."'	
											AND est1.codpai ='058'	
											AND est1.codest ='".$param['codest']."'	
										";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_estados_x_ep1 est1 ".$sql_criterio ." ORDER BY est.desest";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEstadosEp1';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	function ConsultaEstadosEp1Fases($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "WHERE est1.codemp ='".$this->ls_codemp."'
						 					AND est1.anopresup ='".$param['anopresup']."'
											AND est1.codplangob ='".$param['codplangob']."'
											AND est1.codestpro1 ='".$param['codestpro1']."'
											AND est1.estcla ='".$param['estcla']."'
											AND est1.nroh ='".$param['nroh']."'";
					    break;
				
			    case "por_ep1":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = est1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = est1.codpai
																	   AND est.codest = est1.codest
										  WHERE est1.codemp ='".$this->ls_codemp."'
						 					AND est1.anopresup ='".$param['anopresup']."'
											AND est1.codplangob ='".$param['codplangob']."'
											AND est1.codestpro1 ='".$param['codestpro1']."'
											AND est1.estcla ='".$param['estcla']."'
											AND est1.nroh ='".$param['nroh']."'									
										";
					    break;
						
				case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = est1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = est1.codpai
																	   AND est.codest = est1.codest
										  WHERE est1.codemp ='".$this->ls_codemp."'
						 					AND est1.anopresup ='".$param['anopresup']."'
											AND est1.codplangob ='".$param['codplangob']."'
											AND est1.nroh ='".$param['nroh']."'	
											AND est1.codestpro1 ='".$param['codestpro1']."'
											AND est1.estcla ='".$param['estcla']."'	
											AND est1.codpai ='058'	
											AND est1.codest ='".$param['codest']."'	
										";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_estados_x_hep1 est1 ".$sql_criterio ." ORDER BY est.desest";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEstadosEp1';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	function ConsultaEstados($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
			$param['codestpro1'] = str_pad($param['codestpro1'],25,"0",STR_PAD_LEFT);			
			switch($param['criterio']){
								
				
				
				case "por_listado":				        
						$campos = " *  ";
						
						if($param['anopresup'] and $param['codplangob'] and $param['codestpro1'] and $param['estcla']){
							$criterio .= " AND e.codest NOT IN (
																   SELECT codest
																   FROM fop_estados_x_ep1 
																   WHERE codemp ='".$this->ls_codemp."'
																	 AND anopresup ='".$param['anopresup']."'
																	 AND codplangob ='".$param['codplangob']."'
																	 AND codestpro1 ='".$param['codestpro1']."'
																	 AND estcla ='".$param['estcla']."'	
															   ) 
							              ";
						}
						
					    $sql_criterio = " WHERE e.codpai ='058'	".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE e.codpai ='058'
											AND e.codest ='".$param['codest']."'
										";
					    break;
						
				case "por_listado_cmbgrid":				        
						$campos = " *  ";
						$param['codpai'] = $param['codpai']?$param['codpai']:'058';		
					    $sql_criterio = " WHERE e.codpai ='".$param['codpai']."'
										";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM sigesp_estados e ".$sql_criterio ." ORDER BY desest";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEstados';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
   
   
   function ConsultaCiudad($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
					
			switch($param['criterio']){
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE ciu.codpai ='058'
											AND ciu.codest ='".$param['codest']."'
											AND ciu.codciu ='".$param['codciu']."'
										";
					    break;
						
				case "por_listado_cmbgrid":				        
						$campos = " *  ";
						$param['codpai'] = $param['codpai']?$param['codpai']:'058';	
						$param['codest'] = $param['codest']?$param['codest']:'001';	
					    $sql_criterio = " WHERE ciu.codpai ='".$param['codpai']."'
						                    AND ciu.codest ='".$param['codest']."'
										";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM scv_ciudades ciu ".$sql_criterio ." ORDER BY desciu";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaCiudad';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
   
    function ConsultaPais($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
					
			switch($param['criterio']){
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE ciu.codpai ='".$param['codest']."'
										";
					    break;
						
				case "por_listado":				        
						$campos = " *  ";										
					    $sql_criterio = " ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM sigesp_pais pai ".$sql_criterio ." ORDER BY despai";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaPais';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
   
   function ComboEstados($opciones=array()){

				if(!$opciones['nombre_combo']){$nombre_combo = 'sel_estados';}else{$nombre_combo = $opciones['nombre_combo'];}
				if(!$opciones['codest']){$carga = ' Seleccione '; $id_carga = '';}
				else{					
					$opciones['criterio'] = 'por_codigo';
					$rs = $this->ConsultaEstados($opciones,'por_codigo');
					if($rs===false){return false;}
					if(!$rs['cantidad']){
						$mensaje = '<b>ERROR DE DATOS: </b> No existe el Código: '.$opciones['codest'].
						   		   '<br><br><b>METODO:</b> ComboEstados ';					
						$this->io_conexiones->mensajes_ajax($mensaje);																	
						return false;	
					}
					$carga = $rs['fila']['desest'];				  
					$id_carga = $opciones['codest'];
				}			
				
				$opciones['criterio'] = 'por_listado';							
				$resp = $this->ConsultaEstados($opciones,'por_listado');
				if($resp===false){return false;}
				
				if($opciones['disable']===true){$disable='disabled';}
				
				$combo = '<select name="'.$nombre_combo.'" id="'.$nombre_combo.'" onChange="'.$opciones['funcion_js'].'" '.$disable.'>
				              <option value="'.$id_carga.'">- '.$carga.' -</option>';
				
				foreach($resp['rs'] as $dato) { 				
					$combo .= '<option value="'.$dato["codest"].'">'.$dato["desest"].'</option>';								
				}
				$combo .= '</select>';
																							
				return $combo;
	}
	
	
	function  InsertarEstadoEp1($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codest'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarEstadoEp1 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				$datos['codestpro1'] = str_pad($datos['codestpro1'],25,"0",STR_PAD_LEFT);
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaEstadosEp1($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de el estado ya existe para esta estructura!";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				$ls_sql = "INSERT INTO fop_estados_x_ep1( codemp, anopresup, codplangob, codestpro1, estcla, codpai, codest)
						   VALUES (  '".$this->ls_codemp."', ".
								     "'".$datos['anopresup']."', ".
						             "'".$datos['codplangob']."', ".
								     "'".$datos['codestpro1']."', ".
									 "'".$datos['estcla']."', ".
								     "'058', ".
									 "'".$datos['codest']."' ".
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarEstadoEp1';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el estado ".$datos['codest']." en la ep1 del Año: ".$datos['anopresup'].' Plan de Gob: '.$datos['codplangob'].' Cod de Estructura:'.$datos['codestpro1'].' Tipo de estructura: '.$datos['estcla'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	
	function  EliminarEstadoEp1($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codest'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarEstadoEp1 ';
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$datos['codestpro1'] = str_pad($datos['codestpro1'],25,"0",STR_PAD_LEFT);
				
				$ls_sql = "DELETE FROM fop_estados_x_ep1 
				           WHERE codemp = '".$this->ls_codemp."' 
						      AND anopresup  = '".$datos['anopresup']."'
							  AND codplangob  = '".$datos['codplangob']."'
							  AND codestpro1  = '".$datos['codestpro1']."'
							  AND estcla  = '".$datos['estcla']."'
							  AND codpai  = '058'
							  AND codest  = '".$datos['codest']."'
							 ";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarEstadoEp1';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarEstadoEp1';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se elimino el estado ".$datos['codest']." en la ep1 del Año: ".$datos['anopresup'].' Plan de Gob: '.$datos['codplangob'].' Cod de Estructura:'.$datos['codestpro1'].' Tipo de estructura: '.$datos['estcla'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Estado(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function ConsultaMunicipios($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
								
			    case "por_listado":				        
						$campos = " *  ";
						if($param['anopresup'] and $param['codplangob'] and $param['codestpro1'] and $param['estcla'] and $param['codest']){
							$criterio .= " AND mun.codmun NOT IN (
																   SELECT codmun
																   FROM fop_municipios_x_ep1 
																   WHERE codemp ='".$this->ls_codemp."'
																	 AND anopresup ='".$param['anopresup']."'
																	 AND codplangob ='".$param['codplangob']."'
																	 AND codestpro1 ='".$param['codestpro1']."'
																	 AND estcla ='".$param['estcla']."'	
																	 AND codpai ='058'	
																	 AND codest ='".$param['codest']."'	
															   ) 
							              ";
						}
						if($param['codmun']){$criterio .= " AND mun.codmun ".$this->postgres_ilike."LIKE('%".$param['codmun']."%')  "; }
						if($param['denmun']){$criterio .= " AND mun.denmun ".$this->postgres_ilike."LIKE('%".$param['denmun']."%')  ";} 
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = mun.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = mun.codpai
																	   AND est.codest = mun.codest										 								  
										  WHERE mun.codpai ='058'	
											AND mun.codest ='".$param['codest']."'	
										".$criterio;
					    break;
						
				case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = mun.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = mun.codpai
																	   AND est.codest = mun.codest										 								  
										  WHERE mun.codpai ='058'	
											AND mun.codest ='".$param['codest']."'
											AND mun.codmun ='".$param['codmun']."'
										";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM sigesp_municipio mun ".$sql_criterio ." ORDER BY mun.denmun";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaMunicipios';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	
	function ConsultaMunicipiosEp1($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "";
					    break;
				
			    case "por_ep1":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = mun1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = mun1.codpai
																	   AND est.codest = mun1.codest
										  INNER JOIN sigesp_municipio mun ON mun.codpai = mun1.codpai
																	      AND mun.codest = mun1.codest
																		  AND mun.codmun = mun1.codmun
										  WHERE mun1.codemp ='".$this->ls_codemp."'
						 					AND mun1.anopresup ='".$param['anopresup']."'
											AND mun1.codplangob ='".$param['codplangob']."'
											AND mun1.codestpro1 ='".$param['codestpro1']."'
											AND mun1.estcla ='".$param['estcla']."'	
											AND mun1.codpai ='058'	
											AND mun1.codest ='".$param['codest']."'	
										";
					    break;
						
				case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = mun1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = mun1.codpai
																	   AND est.codest = mun1.codest
										  INNER JOIN sigesp_municipio mun ON mun.codpai = mun1.codpai
																	      AND mun.codest = mun1.codest
																		  AND mun.codmun = mun1.codmun
										  WHERE mun1.codemp ='".$this->ls_codemp."'
						 					AND mun1.anopresup ='".$param['anopresup']."'
											AND mun1.codplangob ='".$param['codplangob']."'
											AND mun1.codestpro1 ='".$param['codestpro1']."'
											AND mun1.estcla ='".$param['estcla']."'	
											AND mun1.codpai ='058'	
											AND mun1.codest ='".$param['codest']."'	
											AND mun1.codmun ='".$param['codmun']."'	
										";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_municipios_x_ep1 mun1 ".$sql_criterio ." ORDER BY est.desest";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaMunicipiosEp1';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	function ConsultaMunicipiosEp1Fases($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":				        
						$campos = " *  ";													
					    $sql_criterio = "WHERE mun1.codemp ='".$this->ls_codemp."'
						 					AND mun1.anopresup ='".$param['anopresup']."'
											AND mun1.codplangob ='".$param['codplangob']."'
											AND mun1.nroh ='".$param['nroh']."' ";
					    break;
				
			    case "por_ep1":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = mun1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = mun1.codpai
																	   AND est.codest = mun1.codest
										  INNER JOIN sigesp_municipio mun ON mun.codpai = mun1.codpai
																	      AND mun.codest = mun1.codest
																		  AND mun.codmun = mun1.codmun
										  WHERE mun1.codemp ='".$this->ls_codemp."'
						 					AND mun1.anopresup ='".$param['anopresup']."'
											AND mun1.codplangob ='".$param['codplangob']."'
											AND mun1.nroh ='".$param['nroh']."'
											AND mun1.codestpro1 ='".$param['codestpro1']."'
											AND mun1.estcla ='".$param['estcla']."'	
											AND mun1.codpai ='058'	
											AND mun1.codest ='".$param['codest']."'	
										";
					    break;
						
				case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN sigesp_pais pai  ON pai.codpai = mun1.codpai
										  INNER JOIN sigesp_estados est ON est.codpai = mun1.codpai
																	   AND est.codest = mun1.codest
										  INNER JOIN sigesp_municipio mun ON mun.codpai = mun1.codpai
																	      AND mun.codest = mun1.codest
																		  AND mun.codmun = mun1.codmun
										  WHERE mun1.codemp ='".$this->ls_codemp."'
						 					AND mun1.anopresup ='".$param['anopresup']."'
											AND mun1.codplangob ='".$param['codplangob']."'
											AND mun1.nroh ='".$param['nroh']."'
											AND mun1.codestpro1 ='".$param['codestpro1']."'
											AND mun1.estcla ='".$param['estcla']."'	
											AND mun1.codpai ='058'	
											AND mun1.codest ='".$param['codest']."'	
											AND mun1.codmun ='".$param['codmun']."'	
										";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_municipios_x_hep1 mun1 ".$sql_criterio ." ORDER BY est.desest";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaMunicipiosEp1';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	
	}
	
	function  InsertarMunicipioEp1($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codest'] or !$datos['codmun'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarMunicipioEp1 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				$datos['codestpro1'] = str_pad($datos['codestpro1'],25,"0",STR_PAD_LEFT);
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaMunicipiosEp1($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de el estado ya existe para esta estructura!";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				$ls_sql = "INSERT INTO fop_municipios_x_ep1( codemp, anopresup, codplangob, codestpro1, estcla, codpai, codest, codmun)
						   VALUES (  '".$this->ls_codemp."', ".
								     "'".$datos['anopresup']."', ".
						             "'".$datos['codplangob']."', ".
								     "'".$datos['codestpro1']."', ".
									 "'".$datos['estcla']."', ".
								     "'058', ".
									 "'".$datos['codest']."', ".
									 "'".$datos['codmun']."' ".
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarMunicipioEp1';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se agrego el municipio ".$datos['codmun'].
				                                " del estado ".$datos['codest'].
				                                " en la ep1 del Año: ".$datos['anopresup'].
												' Plan de Gob: '.$datos['codplangob'].
												' Cod de Estructura:'.$datos['codestpro1'].
												' Tipo de estructura: '.$datos['estcla'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	
	function  EliminarMunicipioEp1($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codest'] or !$datos['codmun'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarMunicipioEp1 ';
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$datos['codestpro1'] = str_pad($datos['codestpro1'],25,"0",STR_PAD_LEFT);
				
				$ls_sql = "DELETE FROM fop_municipios_x_ep1 
				           WHERE codemp = '".$this->ls_codemp."' 
						      AND anopresup  = '".$datos['anopresup']."'
							  AND codplangob  = '".$datos['codplangob']."'
							  AND codestpro1  = '".$datos['codestpro1']."'
							  AND estcla  = '".$datos['estcla']."'
							  AND codpai  = '058'
							  AND codest  = '".$datos['codest']."'
							  AND codmun  = '".$datos['codmun']."'
							 ";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarMunicipioEp1';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarMunicipioEp1';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se elimino el municipio ".$datos['codmun'].
				                                " del estado ".$datos['codest'].
				                                " en la ep1 del Año: ".$datos['anopresup'].
												' Plan de Gob: '.$datos['codplangob'].
												' Cod de Estructura:'.$datos['codestpro1'].
												' Tipo de estructura: '.$datos['estcla'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Municipio(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	
	function StrMunicipiosEp1($param=array()){
				
				$StrMunicipios = "";			   
				$param['criterio'] = 'por_ep1';
				
				if(!$param['nroh']){$resp = $this->ConsultaMunicipiosEp1($param);}
				else{$resp = $this->ConsultaMunicipiosEp1Fases($param);}
				
				if($resp===false){return false;}
				if(!$resp['rs']->RecordCount()){				       
						return "";
				}
				$i=0;
				foreach($resp['rs'] as $municipio){
					$i++;
					if($i==1){$StrMunicipios .= $municipio['denmun']; continue;}
					$StrMunicipios .= ', '.$municipio['denmun'];
				
				}
				
				return $StrMunicipios;
				
	}
	
	
	function ConsultaSectores($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":		
				        if($param['codsec']){$criterio .= " AND s.codsec ".$this->postgres_ilike."LIKE('%".$param['codsec']."%')  "; }
						if($param['densec']){$criterio .= " AND s.densec ".$this->postgres_ilike."LIKE('%".$param['densec']."%')  ";} 
						$campos = " *  ";													
					    $sql_criterio = "  WHERE codemp = '".$this->ls_codemp."' ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE codemp = '".$this->ls_codemp."' 
											AND s.codsec ='".$param['codsec']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_sector s ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaSectores';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	
	function ConsultaSubSectores($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":		
				        if($param['codsec']){$criterio .= " AND ss.codsec ='".$param['codsec']."' ";}
				        if($param['codsubsec']){$criterio .= " AND ss.codsubsec ".$this->postgres_ilike."LIKE('%".$param['codsubsec']."%')  "; }
						if($param['densubsec']){$criterio .= " AND ss.densubsec ".$this->postgres_ilike."LIKE('%".$param['densubsec']."%')  ";} 
						$campos = " *  ";													
					    $sql_criterio = "   LEFT JOIN fop_sector s ON s.codemp = ss.codemp
																  AND s.codsec = ss.codsec
											WHERE ss.codemp = '".$this->ls_codemp."' ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = "  LEFT JOIN fop_sector s ON s.codemp = ss.codemp
																  AND s.codsec = ss.codsec
										   WHERE ss.codemp = '".$this->ls_codemp."' 
											 AND ss.codsec ='".$param['codsec']."'
											 AND ss.codsubsec ='".$param['codsubsec']."'
											";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_subsector ss ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaSectores';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	
	function  InsertarSector($datos=array()){
				
				if(!$datos['codsec'] or !$datos['densec'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarSector ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaSectores($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del sector ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_sector( codemp, codsec, densec)
						   VALUES (  '".$this->ls_codemp."', ".
						            "'".$datos['codsec']."', ".
								    "'".$datos['densec']."' ".								    
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarSector';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el sector ".$datos['codsec']." Descripción: ".$datos['densec'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarSector($datos=array()){
		
		   $metodo = 'ModificarSector';
		   
		   if(!$datos['codsec'] or !$datos['densec'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> '.$metodo;
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_sector
						 SET densec='".$datos['densec']."'			
					   WHERE codemp = '".$this->ls_codemp."' 
					     AND codsec  = '".$datos['codsec']."'";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){			       
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Modifico el sector ".$datos['codsec']." Descripción: ".$datos['densec'];
			$this->guardar_seguridad();
				
			return true;
	
	}
	
	function  EliminarSector($datos=array()){
				
				$metodo = 'EliminarSector';
				
				if(!$datos['codsec'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_sector 
				           WHERE codemp = '".$this->ls_codemp."' 
							 AND codsec  = '".$datos['codsec']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó el sector ".$datos['codsec']." Descripción: ".$datos['densec'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Sector(es)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function  InsertarSubSector($datos=array()){
				
				if(!$datos['codsec'] or !$datos['codsubsec'] or !$datos['densubsec'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarSubSector ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaSubSectores($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del sub sector ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_subsector( codemp, codsec,codsubsec, densubsec)
						   VALUES (  '".$this->ls_codemp."', ".
						            "'".$datos['codsec']."', ".
									"'".$datos['codsubsec']."', ".
								    "'".$datos['densubsec']."' ".								    
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarSubSector';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el sub sector: Cod Sector".$datos['codsec']." Cod sub Sector".$datos['codsubsec']." Descripción: ".$datos['densubsec'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarSubSector($datos=array()){
		
		   $metodo = 'ModificarSubSector';
		   
		   if(!$datos['codsec'] or !$datos['codsubsec'] or !$datos['densubsec'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de update. 				           			    
							<br><br><b>METODO:</b> '.$metodo;
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_subsector
						 SET densubsec='".$datos['densubsec']."'			
					   WHERE codemp = '".$this->ls_codemp."' 
					     AND codsec  = '".$datos['codsec']."'
						 AND codsubsec  = '".$datos['codsubsec']."'
						 ";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){			       
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Actualizó el sub sector: Cod Sector".$datos['codsec']." Cod sub Sector".$datos['codsubsec']." Descripción: ".$datos['densubsec'];
			$this->guardar_seguridad();
				
			return true;
	
	}
	
	function  EliminarSubSector($datos=array()){
				
				$metodo = 'EliminarSubSector';
				
				if(!$datos['codsec'] or !$datos['codsubsec'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_subsector 
				           WHERE codemp = '".$this->ls_codemp."' 
							 AND codsec  = '".$datos['codsec']."'
							 AND codsubsec  = '".$datos['codsubsec']."' 
							 ";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se eliminó el sub sector: Cod Sector".$datos['codsec']." Cod sub Sector".$datos['codsubsec']." Descripción: ".$datos['densubsec'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Sector(es)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function  InsertarUnidadMed($datos=array()){
				
				if(!$datos['codunimed'] or !$datos['desunimed'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarUnidadMed ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaUnidadMed($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de la unidad de medida ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_unimed( codemp, codunimed, desunimed)
						   VALUES (  '".$this->ls_codemp."', ".
						            "'".$datos['codunimed']."', ".
								    "'".$datos['desunimed']."' ".								    
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarUnidadMed';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó la unidad de medida ".$datos['codunimed']." Descripción: ".$datos['desunimed'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarUnidadMed($datos=array()){
		
		   $metodo = 'ModificarUnidadMed';
		   
		   if(!$datos['codunimed'] or !$datos['desunimed'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> '.$metodo;
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_unimed
						 SET desunimed='".$datos['desunimed']."'			
					   WHERE codemp = '".$this->ls_codemp."' 
					     AND codunimed  = '".$datos['codunimed']."'";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){			       
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Modifico la unidad de medida ".$datos['codunimed']." Descripción: ".$datos['desunimed'];
			$this->guardar_seguridad();
				
			return true;
	
	}
	
	function  EliminarUnidadMed($datos=array()){
				
				$metodo = 'EliminarUnidadMed';
				
				if(!$datos['codunimed'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_unimed 
				           WHERE codemp = '".$this->ls_codemp."' 
							 AND codunimed  = '".$datos['codunimed']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó el la unidad de medida ".$datos['codunimed']." Descripción: ".$datos['desunimed'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Unidad(es) de Medida';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function  InsertarBenefPry($datos=array()){
				
				if(!$datos['codbenpry'] or !$datos['nombenpry'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarBenefPry ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaBenefPry($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de beneficiario ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_benefpry( codemp, codbenpry, nombenpry)
						   VALUES (  '".$this->ls_codemp."', ".
						            "'".$datos['codbenpry']."', ".
								    "'".$datos['nombenpry']."' ".								    
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarBenefPry';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el beneficiario ".$datos['codbenpry']." Descripción: ".$datos['nombenpry'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarBenefPry($datos=array()){
		
		   $metodo = 'ModificarBenefPry';
		   
		   if(!$datos['codbenpry'] or !$datos['nombenpry'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> '.$metodo;
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_benefpry
						 SET nombenpry='".$datos['nombenpry']."'			
					   WHERE codemp = '".$this->ls_codemp."' 
					     AND codbenpry  = '".$datos['codbenpry']."'";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){			       
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Modifico el beneficiario ".$datos['codbenpry']." Descripción: ".$datos['nombenpry'];
			$this->guardar_seguridad();
				
			return true;
	
	}
	
	function  EliminarBenefPry($datos=array()){
				
				$metodo = 'EliminarBenefPry';
				
				if(!$datos['codbenpry'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_benefpry 
				           WHERE codemp = '".$this->ls_codemp."' 
							 AND codbenpry  = '".$datos['codbenpry']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó el beneficiario ".$datos['codbenpry']." Descripción: ".$datos['nombenpry'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' beneficiario(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	function ConsultaTipOrg($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":	
				
						$campos = " *  ";													
					    $sql_criterio = "  WHERE tio.codtiporg ".$this->postgres_ilike."LIKE('%".$param['codtiporg']."%') 
						                     AND tio.destiporg ".$this->postgres_ilike."LIKE('%".$param['destiporg']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE tio.codtiporg ='".$param['codtiporg']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_tiporg tio ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaTipOrg';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function  InsertarTipOrg($datos=array()){
				
				if(!$datos['codtiporg'] or !$datos['destiporg'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarTipOrg ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaTipOrg($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de tipo de organismo ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_tiporg( codtiporg, destiporg)
						   VALUES (  '".$datos['codtiporg']."', ".
								    "'".$datos['destiporg']."' ".								    
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarTipOrg';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el tipo de organismo ".$datos['codtiporg']." Descripción: ".$datos['destiporg'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarTipOrg($datos=array()){
		
		   $metodo = 'ModificarTipOrg';
		   
		   if(!$datos['codtiporg'] or !$datos['destiporg'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> '.$metodo;
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_tiporg
						 SET destiporg='".$datos['destiporg']."'			
					   WHERE codtiporg  = '".$datos['codtiporg']."'";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){			       
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Modifico el tipo de organismo ".$datos['codtiporg']." Descripción: ".$datos['destiporg'];
			$this->guardar_seguridad();
				
			return true;
	
	}
	
	function  EliminarTipOrg($datos=array()){
				
				$metodo = 'EliminarTipOrg';
				
				if(!$datos['codtiporg'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_tiporg
				           WHERE codtiporg  = '".$datos['codtiporg']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó tipo de organismo ".$datos['codtiporg']." Descripción: ".$datos['destiporg'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' tipo(s) de organismo(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	
	function ConsultaOrg($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":	
				
						$campos = " *  ";
						if($param['codtiporg']){$criterio .= " AND org.codtiporg ='".$param['codtiporg']."' ";}
					    $sql_criterio = "  INNER JOIN fop_tiporg tio ON tio.codtiporg = org.codtiporg
										   WHERE org.codorg ".$this->postgres_ilike."LIKE('%".$param['codorg']."%') 
						                     AND org.desorg ".$this->postgres_ilike."LIKE('%".$param['desorg']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " INNER JOIN fop_tiporg tio ON tio.codtiporg = org.codtiporg
										  WHERE org.codtiporg ='".$param['codtiporg']."'
						                    AND org.codorg ='".$param['codorg']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_org org ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaOrg';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function  InsertarOrg($datos=array()){
				
				if(!$datos['codtiporg'] or !$datos['codorg'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarOrg ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaOrg($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de organismo ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_org( codtiporg, codorg, desorg)
						   VALUES (  '".$datos['codtiporg']."', ".
									"'".$datos['codorg']."', ".			   
								    "'".$datos['desorg']."' ".								    
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarOrg';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó  organismo tipo".$datos['codtiporg']." código: ".$datos['codorg']."  Descripción: ".$datos['desorg'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarOrg($datos=array()){
		
		   $metodo = 'ModificarOrg';
		   
		   if(!$datos['codtiporg'] or !$datos['codorg'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> '.$metodo;
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_org
						 SET desorg='".$datos['desorg']."'			
					   WHERE codtiporg  = '".$datos['codtiporg']."'
					     AND codorg  = '".$datos['codorg']."' ";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){			       
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Modifico el organismo: tipo".$datos['codtiporg']." código: ".$datos['codorg']."  Descripción: ".$datos['desorg'];
			$this->guardar_seguridad();
				
			return true;
	
	}
	
	function  EliminarOrg($datos=array()){
				
				$metodo = 'EliminarOrg';
				
				if(!$datos['codtiporg'] or !$datos['codorg'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_org
				           WHERE codtiporg  = '".$datos['codtiporg']."'
						     AND codorg  = '".$datos['codorg']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó el organismo: tipo".$datos['codtiporg']." código: ".$datos['codorg']."  Descripción: ".$datos['desorg'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' organismo(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	
	function ConsultaObjEstInst($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":	
				
						$campos = " *  ";													
					    $sql_criterio = "  WHERE oe.codobesin ".$this->postgres_ilike."LIKE('%".$param['codobesin']."%') 
						                     AND oe.desobesin ".$this->postgres_ilike."LIKE('%".$param['desobesin']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE oe.codobesin ='".$param['codobesin']."'";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_objestinst oe ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaObjEstInst';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function  InsertarObjEstInst($datos=array()){
				
				if(!$datos['codobesin'] or !$datos['desobesin'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarObjEstInst ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
						
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaTipOrg($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de Objetivo Estratégico Institucional ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				
				$ls_sql = "INSERT INTO fop_objestinst(codobesin, desobesin, estobesin)
						   VALUES (  '".$datos['codobesin']."', ".
								    "'".$datos['desobesin']."', ".
									"'".$datos['estobesin']."' ".
									" ); ";
									  		        
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarObjEstInst';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el Objetivo Estratégico Institucional ".$datos['codobesin']." Descripción: ".$datos['desobesin'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	
	function ModificarObjEstInst($datos=array()){
		
		   $metodo = 'ModificarObjEstInst';
		   
		   if(!$datos['codobesin'] or !$datos['desobesin'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							<br><br><b>METODO:</b> '.$metodo;
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
		   $ls_sql = "  UPDATE fop_objestinst
						 SET desobesin='".$datos['desobesin']."',
						     estobesin='".$datos['estobesin']."'
					   WHERE codobesin  = '".$datos['codobesin']."'";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{				
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){			       
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Modifico el Objetivo Estratégico Institucional ".$datos['codobesin']." Descripción: ".$datos['desobesin'];
			$this->guardar_seguridad();
				
			return true;
	
	}
	
	function  EliminarObjEstInst($datos=array()){
				
				$metodo = 'EliminarObjEstInst';
				
				if(!$datos['codobesin'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje,'error');																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_objestinst
				           WHERE codobesin  = '".$datos['codobesin']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó el Objetivo Estratégico Institucional ".$datos['codtiporg']." Descripción: ".$datos['destiporg'];
				$this->guardar_seguridad();
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().'Objetivo(s) Estratégico(s) Institucional(es)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				return true;
	
	}
	
	
	function ConsultaEp2($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
					
			switch($param['criterio']){
								
				case "por_listado":	
				
						$campos = "  ep2.*,ep1.denestpro1,um.desunimed AS desunimedep2,u.denuniadm  ";													
					    if($param['codestpro1']){ $criterio .= " AND ep2.codestpro1= '".$param['codestpro1']."' "; }
						if($param['estcla']){ $criterio .= " AND ep2.estcla= '".$param['estcla']."' "; }
					    $sql_criterio = "  INNER JOIN fop_ep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
										   LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																  AND um.codunimed = ep2.codunimedep2
										   LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																               AND u.coduniadm = ep2.coduniadm
										   WHERE ep2.codestpro2 ".$this->postgres_ilike."LIKE('%".$param['codestpro2']."%') 
						                     AND ep2.denestpro2 ".$this->postgres_ilike."LIKE('%".$param['denestpro2']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " ep2.*,ep1.denestpro1,um.desunimed AS desunimedep2,u.denuniadm  ";		
					    $sql_criterio = " INNER JOIN fop_ep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
										  LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																 AND um.codunimed = ep2.codunimedep2
										  LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																              AND u.coduniadm = ep2.coduniadm
										  WHERE ep2.codemp = '".$this->ls_codemp."'
											AND ep2.anopresup  = ".$param['anopresup']."
											AND ep2.codplangob  = ".$param['codplangob']."
											AND ep2.codestpro1  = '".$param['codestpro1']."'
											AND ep2.estcla  = '".$param['estcla']."'
											AND ep2.codestpro2  = '".$param['codestpro2']."'";
					    break;
				
				 case "por_ep1":				        
						$campos = " ep2.*,ep1.denestpro1,um.desunimed AS desunimedep2,u.denuniadm  ";		
					    $sql_criterio = " INNER JOIN fop_ep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
										  LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																 AND um.codunimed = ep2.codunimedep2
										  LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																              AND u.coduniadm = ep2.coduniadm
										  WHERE ep2.codemp = '".$this->ls_codemp."'
											AND ep2.anopresup  = ".$param['anopresup']."
											AND ep2.codplangob  = ".$param['codplangob']."
											AND ep2.codestpro1  = '".$param['codestpro1']."'
											AND ep2.estcla  = '".$param['estcla']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ep2 ep2 ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEp2';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ConsultaEp2Fases($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":	
				
						$campos = "  ep2.*,ep1.denestpro1,um.desunimed AS desunimedep2,u.denuniadm  ";													
					    $sql_criterio = "  INNER JOIN fop_hep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
																AND ep2.nroh = ep1.nroh
										   LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																  AND um.codunimed = ep2.codunimedep2
										   LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																               AND u.coduniadm = ep2.coduniadm
										   WHERE ep2.codestpro2 ".$this->postgres_ilike."LIKE('%".$param['codestpro2']."%') 
						                     AND ep2.denestpro2 ".$this->postgres_ilike."LIKE('%".$param['denestpro2']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " ep2.*,ep1.denestpro1,um.desunimed AS desunimedep2,u.denuniadm  ";		
					    $sql_criterio = " INNER JOIN fop_ep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.nroh = ep1.nroh
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
										  LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																 AND um.codunimed = ep2.codunimedep2
										  LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																              AND u.coduniadm = ep2.coduniadm
										  WHERE ep2.codemp = '".$this->ls_codemp."'
											AND ep2.anopresup  = ".$param['anopresup']."
											AND ep2.codplangob  = ".$param['codplangob']."
											AND ep2.nroh  = '".$param['nroh']."'
											AND ep2.codestpro1  = '".$param['codestpro1']."'
											AND ep2.estcla  = '".$param['estcla']."'
											AND ep2.codestpro2  = '".$param['codestpro2']."'";
					    break;
				
				 case "por_ep1":				        
						$campos = " ep2.*,ep1.denestpro1,um.desunimed AS desunimedep2,u.denuniadm  ";		
					    $sql_criterio = " INNER JOIN fop_hep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
																AND ep2.nroh = ep1.nroh
										   LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																  AND um.codunimed = ep2.codunimedep2
										   LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																               AND u.coduniadm = ep2.coduniadm
										  WHERE ep2.codemp = '".$this->ls_codemp."'
											AND ep2.anopresup  = ".$param['anopresup']."
											AND ep2.codplangob  = ".$param['codplangob']."
											AND ep2.nroh  = '".$param['nroh']."'
											AND ep2.codestpro1  = '".$param['codestpro1']."'
											AND ep2.estcla  = '".$param['estcla']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_hep2 ep2 ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEp2';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function  InsertarEp2($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'] or !$datos['denestpro2'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarEp2 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaEp2($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del Objetivo ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				$this->pondera = $datos['pondera'];
				$resp = $this->CheckPondera($datos);
				if($resp===false){return false;}
	   
				$ls_sql = "INSERT INTO fop_ep2( codemp, anopresup, codplangob, codestpro1, estcla,codestpro2, 
												denestpro2, feciniep2, fecfinep2, coduniadm, desbienserv, codunimedep2,canmetep2,
												pfis_est, pfis_1, pfis_2, pfis_3, pfis_4, pfis_totact, 
                								pfis_totsig, pfis_totpost,
												pfin_est, pfin_1, pfin_2, pfin_3, 
											    pfin_4, pfin_totact, pfin_totsig, pfin_totpost, pfin_monrecord, 
											    pfin_monotrrec, pfin_monrecext, pfin_montotep2,pondera)
						   VALUES (  '".$this->ls_codemp."', ".
						   			"".$datos['anopresup'].", ".
								    "".$datos['codplangob'].", ".
								    "'".$datos['codestpro1']."', ".
								    "'".$datos['estcla']."', ".
								    "'".$datos['codestpro2']."', ".
						            "'".$datos['denestpro2']."', ".
								    "'".$datos['feciniep2']."', ".
								    "'".$datos['fecfinep2']."', ".
									"'".$datos['coduniadm']."', ".
									"'".$datos['desbienserv']."', ".
									"'".$datos['codunimedep2']."', ".
									"'".$datos['canmetep2']."', ".									
									"'".$datos['pfis_est']."', ".
									"'".$datos['pfis_1']."', ".
									"'".$datos['pfis_2']."', ".
									"'".$datos['pfis_3']."', ".
									"'".$datos['pfis_4']."', ".
									"'".$datos['pfis_totact']."', ".
									"'".$datos['pfis_totsig']."', ".
									"'".$datos['pfis_totpost']."', ".									
									"'".$datos['pfin_est']."', ".
									"'".$datos['pfin_1']."', ".
									"'".$datos['pfin_2']."', ".
									"'".$datos['pfin_3']."', ".
									"'".$datos['pfin_4']."', ".
									"'".$datos['pfin_totact']."', ".
									"'".$datos['pfin_totsig']."', ".
									"'".$datos['pfin_totpost']."', ".
									"'".$datos['pfin_monrecord']."', ".
									"'".$datos['pfin_monotrrec']."', ".
									"'".$datos['pfin_monrecext']."', ".
									"'".$datos['pfin_montotep2']."', ".	
									"'".$datos['pondera']."' ".
									" ); ";
									  		        
									
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarEp2';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó: ".$_SESSION["la_empresa"]['nomestpro2']." ".$datos['codestpro2']." Descripción: ".$datos['denestpro2'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarEp2($datos=array()){
		   
		   if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
			  !$datos['codestpro2'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de actualización. 				           			    
							<br><br><b>METODO:</b> ModificarEp2 ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			$this->pondera = $datos['pondera'];
			$resp = $this->CheckPondera($datos);
			if($resp===false){return false;}
						
		   $ls_sql = "  UPDATE fop_ep2
						 SET feciniep2='".$datos['feciniep2']."',	
						     fecfinep2='".$datos['fecfinep2']."',
							 coduniadm='".$datos['coduniadm']."',
							 desbienserv='".$datos['desbienserv']."',
							 codunimedep2='".$datos['codunimedep2']."',
							 canmetep2='".$datos['canmetep2']."',							 
							 pfis_est='".$datos['pfis_est']."',
							 pfis_1='".$datos['pfis_1']."',
							 pfis_2='".$datos['pfis_2']."',
							 pfis_3='".$datos['pfis_3']."',
							 pfis_4='".$datos['pfis_4']."',
							 pfis_totact='".$datos['pfis_totact']."',
							 pfis_totsig='".$datos['pfis_totsig']."',
							 pfis_totpost='".$datos['pfis_totpost']."',
							 pfin_est='".$datos['pfin_est']."',
							 pfin_1='".$datos['pfin_1']."',
							 pfin_2='".$datos['pfin_2']."',
							 pfin_3='".$datos['pfin_3']."',
							 pfin_4='".$datos['pfin_4']."',
							 pfin_totact='".$datos['pfin_totact']."',
							 pfin_totsig='".$datos['pfin_totsig']."',
							 pfin_totpost='".$datos['pfin_totpost']."',
							 pfin_monrecord='".$datos['pfin_monrecord']."',
							 pfin_monotrrec='".$datos['pfin_monotrrec']."',
							 pfin_monrecext='".$datos['pfin_monrecext']."',
							 pfin_montotep2='".$datos['pfin_montotep2']."',	
							 pondera='".$this->pondera."',							 
							 fecmod='".date("Y/m/d H:i:s")."',
							 usumod='".$_SESSION['la_logusr']."'							 							 		
					   WHERE codemp = '".$this->ls_codemp."'
					     AND anopresup  = ".$datos['anopresup']."
					     AND codplangob  = ".$datos['codplangob']."
						 AND codestpro1  = '".$datos['codestpro1']."'
						 AND estcla  = '".$datos['estcla']."'
						 AND codestpro2  = '".$datos['codestpro2']."'";
			
									
					
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{
				
				$metodo = 'ModificarEp2';
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarEp2';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Actualizó: ".$_SESSION["la_empresa"]['nomestpro2']." ".$datos['codestpro2']." Descripción: ".$datos['denestpro2'];
			$this->guardar_seguridad();
													
			return true;
	
	}
	
	function  EliminarEp2($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de eliminación. 				           			    
								<br><br><b>METODO:</b> EliminarEp2 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_ep2 
				           WHERE codemp = '".$this->ls_codemp."'
							 AND anopresup  = ".$datos['anopresup']."
							 AND codplangob  = ".$datos['codplangob']."
							 AND codestpro1  = '".$datos['codestpro1']."'
							 AND estcla  = '".$datos['estcla']."'
							 AND codestpro2  = '".$datos['codestpro2']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarEp2';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarEp2';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' Objetivo(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó: ".$_SESSION["la_empresa"]['nomestpro2']." ".$datos['codestpro2']." Descripción: ".$datos['denestpro2'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	function CheckPondera($datos=array()){
			if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
			  !$datos['codestpro2'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la verificación de la ponderación 				           			    
							<br><br><b>METODO:</b> CheckPondera ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			
			$ls_sql = "SELECT sum(pondera) AS tot_pondera FROM fop_ep2 
				           WHERE codemp = '".$this->ls_codemp."'
							 AND anopresup  = ".$datos['anopresup']."
							 AND codplangob  = ".$datos['codplangob']."
							 AND codestpro1  = '".$datos['codestpro1']."'
							 AND estcla  = '".$datos['estcla']."'
							 AND codestpro2!= '".$datos['codestpro2']."' 
							 ";
				
			$this->rs_data=$this->io_sql->select($ls_sql);			
			
			if($this->rs_data==false)
			{					
				$metodo = 'EliminarEp2';
				$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;					
			}
			
			$TotPondera = $this->rs_data->fields['tot_pondera'];
			$this->RestoPondera = 100-($TotPondera+$datos['pondera']);
			
			if($this->NoRevisarPondera){return true;}
			
			if($TotPondera>100){
				$metodo = 'CheckPondera';
				$mensaje = '<b>ERROR DE PONDERACIÓN</b><br> El total de los porcentajes de ponderación de las acciones es mayor a 100';					
				$this->io_conexiones->mensajes_ajax($mensaje);
				return false;	
			}
			
			if($TotPondera==100 and $datos['pondera']>0){
				$metodo = 'CheckPondera';
				$mensaje = '<b>ERROR DE PONDERACIÓN</b><br> El total de los porcentajes de ponderación ya esta completeto. El porcentaje de esta acción debe ser 0';					
				$this->io_conexiones->mensajes_ajax($mensaje);
				return false;	
			}
			
			if(($TotPondera + $datos['pondera'])>100){
				$this->pondera = (100-$TotPondera);
				$metodo = 'CheckPondera';
				$mensaje = '<b>ERROR DE PONDERACIÓN</b><br> El porcentaje de ponderación es muy alto. El total supera el 100%<br> Se reajustará el porcentaje a '.$this->pondera.'%';					
				$this->io_conexiones->mensajes_ajax($mensaje);
				$this->io_conexiones->dato_js('hponderanueva',number_format($this->pondera,2,',','.'));
				return true;	
			}
			
			return true;
			
	
	}
	
	
	function ConsultaUnidadEjecutora($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":	
				
						$campos = " *  ";													
					    $sql_criterio = "  WHERE u.coduniadm ".$this->postgres_ilike."LIKE('%".$param['coduniadm']."%') 
						                     AND u.denuniadm ".$this->postgres_ilike."LIKE('%".$param['denuniadm']."%') ".$criterio;
					    break;
				
			    case "por_codigo":				        
						$campos = " *  ";		
					    $sql_criterio = " WHERE u.coduniadm ='".$param['coduniadm']."'";
					    break;
				
			}
			
			$sql_criterio .= " AND u.coduniadm != '----------' ";
			
								   
			$query_rs = "SELECT ".$campos." FROM spg_unidadadministrativa u ".$sql_criterio ." ORDER BY u.coduniadm";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaUnidadEjecutora';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	
	function  FormatDatosEp2($datos=array()){
		    
			$this->NoRevisarPondera=1;
			$this->RestoPondera = 100;
			$resp = $this->CheckPondera($datos);
			$this->NoRevisarPondera=0;		
			$datos = $this->FormatLonCodEstPro($datos);
			
			$datos['resto'] = number_format($this->RestoPondera,2,',','.');		
			$datos['feciniep2'] = $this->io_conexiones->formatea_fecha_normal($datos['feciniep2']);
			$datos['fecfinep2'] = $this->io_conexiones->formatea_fecha_normal($datos['fecfinep2']);
					
			$datos['pfis_totmet'] = $datos['pfis_est'] + $datos['pfis_totact'] + $datos['pfis_totsig'] + $datos['pfis_totpost'];
			$datos['pfis_restmet'] = $datos['canmetep2'] - $datos['pfis_totmet'];
			
			$datos['pfin_totmet'] = $datos['pfin_est'] + $datos['pfin_totact'] + $datos['pfin_totsig'] + $datos['pfin_totpost'];
			$datos['pfin_restmet'] = $datos['pfin_montotep2'] - $datos['pfin_totmet'];
			
			$datos['canmetep2'] = number_format($datos['canmetep2'],2,',','.');			
			$datos['pfis_est'] = number_format($datos['pfis_est'],2,',','.');
			$datos['pfis_1'] = number_format($datos['pfis_1'],2,',','.');
			$datos['pfis_2'] = number_format($datos['pfis_2'],2,',','.');
			$datos['pfis_3'] = number_format($datos['pfis_3'],2,',','.');
			$datos['pfis_4'] = number_format($datos['pfis_4'],2,',','.');
			$datos['pfis_totact'] = number_format($datos['pfis_totact'],2,',','.');
			$datos['pfis_totsig'] = number_format($datos['pfis_totsig'],2,',','.');
			$datos['pfis_totpost'] = number_format($datos['pfis_totpost'],2,',','.');
			$datos['pfin_est'] = number_format($datos['pfin_est'],2,',','.');
			$datos['pfin_1'] = number_format($datos['pfin_1'],2,',','.');
			$datos['pfin_2'] = number_format($datos['pfin_2'],2,',','.');
			$datos['pfin_3'] = number_format($datos['pfin_3'],2,',','.');
			$datos['pfin_4'] = number_format($datos['pfin_4'],2,',','.');
			$datos['pfin_totact'] = number_format($datos['pfin_totact'],2,',','.');
			$datos['pfin_totsig'] = number_format($datos['pfin_totsig'],2,',','.');
			$datos['pfin_totpost'] = number_format($datos['pfin_totpost'],2,',','.');			
			$datos['pfin_monrecord'] = number_format($datos['pfin_monrecord'],2,',','.');
			$datos['pfin_monotrrec'] = number_format($datos['pfin_monotrrec'],2,',','.');
			$datos['pfin_monrecext'] = number_format($datos['pfin_monrecext'],2,',','.');			
			$datos['pfis_restmet'] = number_format($datos['pfis_restmet'],2,',','.');
			$datos['pfis_totmet'] = number_format($datos['pfis_totmet'],2,',','.');
			$datos['pfin_restmet'] = number_format($datos['pfin_restmet'],2,',','.');
			$datos['pfin_totmet'] = number_format($datos['pfin_totmet'],2,',','.');
			$datos['pfin_montotep2'] = number_format($datos['pfin_montotep2'],2,',','.');
			$datos['pondera'] = number_format($datos['pondera'],2,',','.');
			
			$datos['ANO_ACTUAL'] = (integer)$datos['anopresup'];
			$datos['ANO_SIGUIENTE'] = (integer)$datos['anopresup'] + 1;
			$datos['FECHA_ANTERIOR'] = '31/12/'.((integer)$datos['anopresup'] - 1);		
			return $datos;
	}
	
	
	function  InicializarDatosEp2($datos=array()){		    
			
			$datos['canmetep2'] = "0,00";			
			$datos['pfis_est'] = "0,00";
			$datos['pfis_1'] = "0,00";
			$datos['pfis_2'] = "0,00";
			$datos['pfis_3'] = "0,00";
			$datos['pfis_4'] = "0,00";
			$datos['pfis_totact'] = "0,00";
			$datos['pfis_totsig'] = "0,00";
			$datos['pfis_totpost'] = "0,00";
			$datos['pfin_est'] = "0,00";
			$datos['pfin_1'] = "0,00";
			$datos['pfin_2'] = "0,00";
			$datos['pfin_3'] = "0,00";
			$datos['pfin_4'] = "0,00";
			$datos['pfin_totact'] = "0,00";
			$datos['pfin_totsig'] = "0,00";
			$datos['pfin_totpost'] = "0,00";	
			$datos['pfin_monrecord'] = "0,00";
			$datos['pfin_monotrrec'] = "0,00";
			$datos['pfin_monrecext'] = "0,00";		
			$datos['pfis_restmet'] = "0,00";
			$datos['pfis_totmet'] = "0,00";
			$datos['pfin_montotep2'] = "0,00";
			$datos['pondera'] = "0,00";
			return $datos;	
	
	}
	
	
	function  FormatDatosEp2Bd($datos=array()){
		    
			$datos['codestpro1']=str_pad($datos['codestpro1'],25,'0',STR_PAD_LEFT);
			$datos['codestpro2']=str_pad($datos['codestpro2'],25,'0',STR_PAD_LEFT);
			$datos['feciniep2'] = $datos['feciniep2']?$datos['feciniep2']:'01/01/1900';
			$datos['fecfinep2'] = $datos['fecfinep2']?$datos['fecfinep2']:'01/01/1900';
			$datos['feciniep2']=$this->io_conexiones->formatea_fecha_bd($datos['feciniep2']);
			$datos['fecfinep2']=$this->io_conexiones->formatea_fecha_bd($datos['fecfinep2']);
			$datos['canmetep2'] = $datos['canmetep2']?$this->formato_numerico_us($datos['canmetep2']):'0';
			$datos['pfis_est'] = $datos['pfis_est']?$this->formato_numerico_us($datos['pfis_est']):'0';
			$datos['pfis_1'] = $datos['pfis_1']?$this->formato_numerico_us($datos['pfis_1']):'0';
			$datos['pfis_2'] = $datos['pfis_2']?$this->formato_numerico_us($datos['pfis_2']):'0';
			$datos['pfis_3'] = $datos['pfis_3']?$this->formato_numerico_us($datos['pfis_3']):'0';
			$datos['pfis_4'] = $datos['pfis_4']?$this->formato_numerico_us($datos['pfis_4']):'0';
			$datos['pfis_totact'] = $datos['pfis_totact']?$this->formato_numerico_us($datos['pfis_totact']):'0';
			$datos['pfis_totsig'] = $datos['pfis_totsig']?$this->formato_numerico_us($datos['pfis_totsig']):'0';
			$datos['pfis_totpost'] = $datos['pfis_totpost']?$this->formato_numerico_us($datos['pfis_totpost']):'0';		
			$datos['pfin_est'] = $datos['pfin_est']?$this->formato_numerico_us($datos['pfin_est']):'0';
			$datos['pfin_1'] = $datos['pfin_1']?$this->formato_numerico_us($datos['pfin_1']):'0';
			$datos['pfin_2'] = $datos['pfin_2']?$this->formato_numerico_us($datos['pfin_2']):'0';
			$datos['pfin_3'] = $datos['pfin_3']?$this->formato_numerico_us($datos['pfin_3']):'0';
			$datos['pfin_4'] = $datos['pfin_4']?$this->formato_numerico_us($datos['pfin_4']):'0';
			$datos['pfin_totact'] = $datos['pfin_totact']?$this->formato_numerico_us($datos['pfin_totact']):'0';
			$datos['pfin_totsig'] = $datos['pfin_totsig']?$this->formato_numerico_us($datos['pfin_totsig']):'0';
			$datos['pfin_totpost'] = $datos['pfin_totpost']?$this->formato_numerico_us($datos['pfin_totpost']):'0';
			$datos['pfin_monrecord'] = $datos['pfin_monrecord']?$this->formato_numerico_us($datos['pfin_monrecord']):'0';
			$datos['pfin_monotrrec'] = $datos['pfin_monotrrec']?$this->formato_numerico_us($datos['pfin_monotrrec']):'0';
			$datos['pfin_monrecext'] = $datos['pfin_monrecext']?$this->formato_numerico_us($datos['pfin_monrecext']):'0';
			$datos['pfis_restmet'] = $datos['pfis_restmet']?$this->formato_numerico_us($datos['pfis_restmet']):'0';
			$datos['pfis_totmet'] = $datos['pfis_totmet']?$this->formato_numerico_us($datos['pfis_totmet']):'0';
			$datos['pfin_montotep2'] = $datos['pfin_montotep2']?$this->formato_numerico_us($datos['pfin_montotep2']):'0';
			$datos['pondera'] = $datos['pondera']?$this->formato_numerico_us($datos['pondera']):'0';
			return $datos;
	}
	
	function ConsultaEp3($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":	
				
						$campos = " ep3.*,
						            ep2.denestpro2,ep2.feciniep2, ep2.fecfinep2, ep2.desbienserv, 
									ep2.codunimedep2,ep2.canmetep2,
									ep1.denestpro1,ep1.fecinipry,ep1.fecfinpry,
									um.desunimed AS desunimedep2,u.denuniadm  ";		
						if($param['anopresup']){$criterio .= " AND ep3.anopresup  = ".$param['anopresup']." ";}
						if($param['codplangob']){$criterio .= " AND ep3.codplangob  = ".$param['codplangob']." ";}													
					    $sql_criterio = "  INNER JOIN fop_ep2 ep2 ON ep2.codemp = ep3.codemp
															    AND ep2.anopresup = ep3.anopresup
																AND ep2.codplangob = ep3.codplangob
																AND ep2.codestpro1 = ep3.codestpro1
																AND ep2.codestpro2 = ep3.codestpro2
																AND ep2.estcla = ep3.estcla 
										   INNER JOIN fop_ep1 ep1 ON ep2.codemp = ep1.codemp
															      AND ep2.anopresup = ep1.anopresup
																  AND ep2.codplangob = ep1.codplangob
																  AND ep2.codestpro1 = ep1.codestpro1
																  AND ep2.estcla = ep1.estcla
										    LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																   AND um.codunimed = ep2.codunimedep2
										    LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																                AND u.coduniadm = ep2.coduniadm
										   WHERE ep3.codestpro3 ".$this->postgres_ilike."LIKE('%".$param['codestpro3']."%') 
						                     AND ep3.denestpro3 ".$this->postgres_ilike."LIKE('%".$param['denestpro3']."%')
											 AND ep3.codestpro2 ".$this->postgres_ilike."LIKE('%".$param['codestpro2']."%')
											 AND ep3.codestpro1 ".$this->postgres_ilike."LIKE('%".$param['codestpro1']."%')											 
											 AND ep3.estcla ".$this->postgres_ilike."LIKE('%".$param['estcla']."%') ".$criterio;
					    break;
				
			    case "por_codigo":
									        
						$campos = " ep3.*,
						            ep2.denestpro2,ep2.feciniep2, ep2.fecfinep2, ep2.desbienserv, 
									ep2.codunimedep2,ep2.canmetep2,
									ep1.denestpro1,ep1.fecinipry,ep1.fecfinpry,
									um.desunimed AS desunimedep2,u.denuniadm  ";		
					    $sql_criterio = "INNER JOIN fop_ep2 ep2 ON ep2.codemp = ep3.codemp
															    AND ep2.anopresup = ep3.anopresup
																AND ep2.codplangob = ep3.codplangob
																AND ep2.codestpro1 = ep3.codestpro1
																AND ep2.codestpro2 = ep3.codestpro2
																AND ep2.estcla = ep3.estcla 
										 INNER JOIN fop_ep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
										  LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																 AND um.codunimed = ep2.codunimedep2
										  LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																              AND u.coduniadm = ep2.coduniadm
										  WHERE ep3.codemp = '".$this->ls_codemp."'
											AND ep3.anopresup  = ".$param['anopresup']."
											AND ep3.codplangob  = ".$param['codplangob']."
											AND ep3.codestpro1  = '".$param['codestpro1']."'
											AND ep3.estcla  = '".$param['estcla']."'
											AND ep3.codestpro2  = '".$param['codestpro2']."'";
					    break;
						
				 case "por_ep1":
									        
						$campos = " ep3.*,
						            ep2.denestpro2,ep2.feciniep2, ep2.fecfinep2, ep2.desbienserv, 
									ep2.codunimedep2,ep2.canmetep2,
									ep1.denestpro1,ep1.fecinipry,ep1.fecfinpry,
									um.desunimed AS desunimedep2,u.denuniadm  ";		
					    $sql_criterio = "INNER JOIN fop_ep2 ep2 ON ep2.codemp = ep3.codemp
															    AND ep2.anopresup = ep3.anopresup
																AND ep2.codplangob = ep3.codplangob
																AND ep2.codestpro1 = ep3.codestpro1
																AND ep2.codestpro2 = ep3.codestpro2
																AND ep2.estcla = ep3.estcla 
										 INNER JOIN fop_ep1 ep1 ON ep2.codemp = ep1.codemp
															    AND ep2.anopresup = ep1.anopresup
																AND ep2.codplangob = ep1.codplangob
																AND ep2.codestpro1 = ep1.codestpro1
																AND ep2.estcla = ep1.estcla
										  LEFT JOIN fop_unimed um ON um.codemp = ep2.codemp 
																 AND um.codunimed = ep2.codunimedep2
										  LEFT JOIN spg_unidadadministrativa u ON u.codemp = ep2.codemp 
																              AND u.coduniadm = ep2.coduniadm
										  WHERE ep3.codemp = '".$this->ls_codemp."'
											AND ep3.anopresup  = ".$param['anopresup']."
											AND ep3.codplangob  = ".$param['codplangob']."
											AND ep3.codestpro1  = '".$param['codestpro1']."'
											AND ep3.estcla  = '".$param['estcla']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ep3 ep3 ".$sql_criterio ." ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaEp3';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	
	function  InsertarEp3($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'] or !$datos['codestpro3'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarEp3 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaEp3($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código del Objetivo ya existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
	   			
				
				$ls_sql = "INSERT INTO fop_ep3( codemp, anopresup, codplangob, codestpro1, estcla,codestpro2, 
												codestpro3,denestpro3,coduniadm,fecreg,usureg)
						   VALUES (  '".$this->ls_codemp."', ".
						   			"".$datos['anopresup'].", ".
								    "".$datos['codplangob'].", ".
								    "'".$datos['codestpro1']."', ".
								    "'".$datos['estcla']."', ".
								    "'".$datos['codestpro2']."', ".
									"'".$datos['codestpro3']."', ".
						            "'".$datos['denestpro3']."',  ".
									"'".$datos['coduniadm']."',  ".
									"'".date("Y/m/d H:i:s")."', ".
									"'".$_SESSION['la_logusr']."' ".
									" ); ";
									  		        
			
	   
	   
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarEp3';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó: ".$_SESSION["la_empresa"]['nomestpro3']." ".$datos['codestpro3']." Descripción: ".$datos['denestpro3'];
				$this->guardar_seguridad();
				
				
				return true;
	
	}
	
	
	function ModificarEp3($datos=array()){
		   
		   if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
			  !$datos['codestpro2'] or !$datos['codestpro3'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de actualización. 				           			    
							<br><br><b>METODO:</b> ModificarEp3 ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
		   $ls_sql = "  UPDATE fop_ep3
						 SET denestpro3='".$datos['denestpro3']."',
							 coduniadm='".$datos['coduniadm']."'
							 fecmod='".date("Y/m/d H:i:s")."',
							 usumod='".$_SESSION['la_logusr']."'						 		
					   WHERE codemp = '".$this->ls_codemp."'
					     AND anopresup  = ".$datos['anopresup']."
					     AND codplangob  = ".$datos['codplangob']."
						 AND codestpro1  = '".$datos['codestpro1']."'
						 AND estcla  = '".$datos['estcla']."'
						 AND codestpro2  = '".$datos['codestpro2']."'
						 AND codestpro3  = '".$datos['codestpro3']."'";
					
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{
				
				$metodo = 'ModificarEp3';
				$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;
				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'ModificarEp3';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}				
			
			$this->seguridad["evento"]="UPDATE";
			$this->seguridad["descripcion"]="Se Actualizó: ".$_SESSION["la_empresa"]['nomestpro3']." ".$datos['codestpro3']." Descripción: ".$datos['denestpro3'];
			$this->guardar_seguridad();
													
			return true;
	
	}
	
	function  EliminarEp3($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de eliminación. 				           			    
								<br><br><b>METODO:</b> EliminarEp3 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_ep3 
				           WHERE codemp = '".$this->ls_codemp."'
							 AND anopresup  = ".$datos['anopresup']."
							 AND codplangob  = ".$datos['codplangob']."
							 AND codestpro1  = '".$datos['codestpro1']."'
							 AND estcla  = '".$datos['estcla']."'
							 AND codestpro2  = '".$datos['codestpro2']."'
							 AND codestpro3  = '".$datos['codestpro3']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarEp3';
					$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;					
				}
				
				if($this->io_sql->conn->Affected_Rows()<1){
			        $metodo = 'EliminarEp3';
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> La operación no se pudo realizar.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
				}		
				
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' '.$_SESSION["la_empresa"]['nomestpro3'].'(s)';			
				$this->io_conexiones->dato_js('hfilas_afectadas',$mensaje);
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó: ".$_SESSION["la_empresa"]['nomestpro3']." ".$datos['codestpro3']." Descripción: ".$datos['denestpro3'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	
	function  FormatDatosEp3Bd($datos=array()){
		    
			$datos['codestpro1']=str_pad($datos['codestpro1'],25,'0',STR_PAD_LEFT);
			$datos['codestpro2']=str_pad($datos['codestpro2'],25,'0',STR_PAD_LEFT);
			$datos['codestpro3']=str_pad($datos['codestpro3'],25,'0',STR_PAD_LEFT);
			
			return $datos;
	}
	
	
	function  FormatDatosEp3($datos=array()){
		    
			$datos = $this->FormatLonCodEstPro($datos);		
			return $datos;
	}
	
	function  FormatDatosDetalle($datos=array()){
			
			$datos['monrecprop'] = $datos['monrecprop']?number_format($datos['monrecprop'],2,',','.'):'0,0';
			$datos['monotrorec'] = $datos['monotrorec']?number_format($datos['monotrorec'],2,',','.'):'0,0';		
			
			return $datos;
	}
	
	function ConsultaDtEp3($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
				
			    case "por_codigo":
									        
						$campos = " dt.*,re.denominacion,pa.despai,es.desest,ci.desciu,um.desunimed,ac.* ";		
					    $sql_criterio = "  INNER JOIN sigesp_plan_unico_re re ON re.sig_cuenta = dt.spg_cuenta
						                   LEFT JOIN fop_unimed um ON um.codemp = dt.codemp 
																  AND um.codunimed = dt.codunimed
										   LEFT JOIN sigesp_pais pa ON pa.codpai = dt.codpai
										   LEFT JOIN sigesp_estados es ON es.codpai = dt.codpai
										                              AND es.codest = dt.codest
										   LEFT JOIN scv_ciudades ci ON ci.codpai = dt.codpai
										                            AND ci.codest = dt.codest
										   							AND ci.codciu = dt.codciu
										   INNER JOIN fop_ep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."'
											 AND dt.codestpro3  = '".$param['codestpro3']."'";
					    break;
						
					case "por_actividad": 
						$campos = " * ";		
					    $sql_criterio = "  
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."'
											 AND dt.codestpro3  = '".$param['codestpro3']."'
											 AND dt.codact  = '".$param['codact']."'";
					    break;
					
					case "por_ep2":
									        
						$campos = " dt.*,re.denominacion,pa.despai,es.desest,ci.desciu,um.desunimed,ac.* ";		
					    $sql_criterio = "  INNER JOIN sigesp_plan_unico_re re ON re.sig_cuenta = dt.spg_cuenta
						                   LEFT JOIN fop_unimed um ON um.codemp = dt.codemp 
																  AND um.codunimed = dt.codunimed
										   LEFT JOIN sigesp_pais pa ON pa.codpai = dt.codpai
										   LEFT JOIN sigesp_estados es ON es.codpai = dt.codpai
										                              AND es.codest = dt.codest
										   LEFT JOIN scv_ciudades ci ON ci.codpai = dt.codpai
										                            AND ci.codest = dt.codest
										   							AND ci.codciu = dt.codciu
										   INNER JOIN fop_ep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."' ";
					    break;
					
					case "por_ep1":
									        
						$campos = " dt.*,re.denominacion,pa.despai,es.desest,ci.desciu,um.desunimed,ac.* ";		
					    $sql_criterio = "  INNER JOIN sigesp_plan_unico_re re ON re.sig_cuenta = dt.spg_cuenta
						                   LEFT JOIN fop_unimed um ON um.codemp = dt.codemp 
																  AND um.codunimed = dt.codunimed
										   LEFT JOIN sigesp_pais pa ON pa.codpai = dt.codpai
										   LEFT JOIN sigesp_estados es ON es.codpai = dt.codpai
										                              AND es.codest = dt.codest
										   LEFT JOIN scv_ciudades ci ON ci.codpai = dt.codpai
										                            AND ci.codest = dt.codest
										   							AND ci.codciu = dt.codciu
										   INNER JOIN fop_ep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_dt_ep3 dt ".$sql_criterio ." ORDER BY dt.codact,dt.spg_cuenta";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaDtEp3';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ConsultaDtEp3Fases($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
				
			    case "por_codigo":
									        
						$campos = " dt.*,re.denominacion,pa.despai,es.desest,ci.desciu,um.desunimed,ac.* ";		
					    $sql_criterio = "  INNER JOIN sigesp_plan_unico_re re ON re.sig_cuenta = dt.spg_cuenta
						                   LEFT JOIN fop_unimed um ON um.codemp = dt.codemp 
																  AND um.codunimed = dt.codunimed
										   LEFT JOIN sigesp_pais pa ON pa.codpai = dt.codpai
										   LEFT JOIN sigesp_estados es ON es.codpai = dt.codpai
										                              AND es.codest = dt.codest
										   LEFT JOIN scv_ciudades ci ON ci.codpai = dt.codpai
										                            AND ci.codest = dt.codest
										   							AND ci.codciu = dt.codciu
										   INNER JOIN fop_hep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.nroh  = '".$param['nroh']."'
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."'
											 AND dt.codestpro3  = '".$param['codestpro3']."'";
					    break;
						
					case "por_actividad": 
						$campos = " * ";		
					    $sql_criterio = "  
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.nroh  = '".$param['nroh']."'
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."'
											 AND dt.codestpro3  = '".$param['codestpro3']."'
											 AND dt.codact  = '".$param['codact']."'";
					    break;
					
					case "por_ep2":
									        
						$campos = " dt.*,re.denominacion,pa.despai,es.desest,ci.desciu,um.desunimed,ac.* ";		
					    $sql_criterio = "  INNER JOIN sigesp_plan_unico_re re ON re.sig_cuenta = dt.spg_cuenta
						                   LEFT JOIN fop_unimed um ON um.codemp = dt.codemp 
																  AND um.codunimed = dt.codunimed
										   LEFT JOIN sigesp_pais pa ON pa.codpai = dt.codpai
										   LEFT JOIN sigesp_estados es ON es.codpai = dt.codpai
										                              AND es.codest = dt.codest
										   LEFT JOIN scv_ciudades ci ON ci.codpai = dt.codpai
										                            AND ci.codest = dt.codest
										   							AND ci.codciu = dt.codciu
										   INNER JOIN fop_hep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.nroh  = '".$param['nroh']."'
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."' ";
					    break;
					
					case "por_ep1":
									        
						$campos = " dt.*,re.denominacion,pa.despai,es.desest,ci.desciu,um.desunimed,ac.* ";		
					    $sql_criterio = "  INNER JOIN sigesp_plan_unico_re re ON re.sig_cuenta = dt.spg_cuenta
						                   LEFT JOIN fop_unimed um ON um.codemp = dt.codemp 
																  AND um.codunimed = dt.codunimed
										   LEFT JOIN sigesp_pais pa ON pa.codpai = dt.codpai
										   LEFT JOIN sigesp_estados es ON es.codpai = dt.codpai
										                              AND es.codest = dt.codest
										   LEFT JOIN scv_ciudades ci ON ci.codpai = dt.codpai
										                            AND ci.codest = dt.codest
										   							AND ci.codciu = dt.codciu
										   INNER JOIN fop_hep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.nroh  = '".$param['nroh']."'
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_dt_hep3 dt ".$sql_criterio ." ORDER BY dt.codact,dt.spg_cuenta";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaDtEp3Fases';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ProcesarDtEp3($datos=array()){
			
			if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
			   !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['estcla'])
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar Procesar el Detalle de Cuentas. 				           			    
							<br><br><b>METODO:</b> ProcesarDtEp3 ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			$resp = $this->EliminarDtEp3($datos);
			if($resp===false){return false;}				
			
			//SE CREA EL OBJETO JSON A PARTIR DEL STRING CODIFICADO ELIMINANDO PRIMERO LOS SLATCH
			$datos['grid_detalle'] = stripslashes($datos['grid_detalle']);
			$obj_json = $this->json->decode($datos['grid_detalle']);		
			
			//SE CREA UN ONJETO JSON POR CADA FILA. LOS CAMPOS SE ACCESAN CON EL FORMATO: $obj_json[numero_fila]->nombre_campo
			//SE RECORREN LAS FILAS DEL OBJETO JSON: $obj_json[0], $obj_json[1], $obj_json[2], etc.	
			
			if(!count($obj_json)){return true;};
							
			try{
					foreach($obj_json as $detalle){						
							
							$datosdet['anopresup'] =  $datos['anopresup'];
							$datosdet['codplangob'] =  $datos['codplangob'];
							$datosdet['codestpro1'] =  $datos['codestpro1'];
							$datosdet['codestpro2'] =  $datos['codestpro2'];
							$datosdet['codestpro3'] =  $datos['codestpro3'];
							$datosdet['estcla'] =  $datos['estcla'];											
							$datosdet['codact'] =  $detalle->codact;
							$datosdet['spg_cuenta'] =  $detalle->spg_cuenta;
							$datosdet['monrecprop'] =  $detalle->monrecprop;
							$datosdet['monotrorec'] =  $detalle->monotrorec;
							$datosdet['feciniact'] =  $detalle->feciniact;
							$datosdet['fecfinact'] =  $detalle->fecfinact;
							$datosdet['codunimed'] =  $detalle->codunimed;
							$datosdet['meta'] =  $detalle->meta;
							$datosdet['codpai'] =  $detalle->codpai;
							$datosdet['codest'] =  $detalle->codest;
							$datosdet['codciu'] =  $detalle->codciu;							
							$datosdet['pfs_t1'] =  $detalle->pfs_t1;
							$datosdet['pfs_t2'] =  $detalle->pfs_t2;
							$datosdet['pfs_t3'] =  $detalle->pfs_t3;
							$datosdet['pfs_t4'] =  $detalle->pfs_t4;							
							$datosdet['pfn_t1'] =  $detalle->pfn_t1;
							$datosdet['pfn_t2'] =  $detalle->pfn_t2;
							$datosdet['pfn_t3'] =  $detalle->pfn_t3;
							$datosdet['pfn_t4'] =  $detalle->pfn_t4;
																	
							$datosdet	 = $this->formatear_datos_detalle($datosdet);
							$resul = $this->InsertarDtEp3($datosdet);
							if($resul===false){return false;}
							
					}
			}
			catch(ErrorException $e){return false;}
			
			return true;	
	
	}
	
	function formatear_datos_detalle($datos=array()){
				
			$datos['feciniact']=$this->io_conexiones->formatea_fecha_bd($datos['feciniact']);
			$datos['fecfinact']=$this->io_conexiones->formatea_fecha_bd($datos['fecfinact']);
			$datos['monrecprop'] = $this->formato_numerico_us($datos['monrecprop']);
			$datos['monotrorec'] = $this->formato_numerico_us($datos['monotrorec']);
			$datos['meta'] = $this->formato_numerico_us($datos['meta']);			
			$datos['pfs_t1'] = $this->formato_numerico_us($datos['pfs_t1']);
			$datos['pfs_t2'] = $this->formato_numerico_us($datos['pfs_t2']);
			$datos['pfs_t3'] = $this->formato_numerico_us($datos['pfs_t3']);
			$datos['pfs_t4'] = $this->formato_numerico_us($datos['pfs_t4']);
			$datos['pfn_t1'] = $this->formato_numerico_us($datos['pfn_t1']);
			$datos['pfn_t2'] = $this->formato_numerico_us($datos['pfn_t2']);
			$datos['pfn_t3'] = $this->formato_numerico_us($datos['pfn_t3']);
			$datos['pfn_t4'] = $this->formato_numerico_us($datos['pfn_t4']);
													
			return $datos;
	}
	
	function FormatDatosAct($datos=array()){

			$datos['pfs1'] = number_format($datos['pfs1'],2,',','.');
			$datos['pfs2'] = number_format($datos['pfs2'],2,',','.');
			$datos['pfs3'] = number_format($datos['pfs3'],2,',','.');
			$datos['pfs4'] = number_format($datos['pfs4'],2,',','.');
			$datos['metact'] = number_format($datos['metact'],2,',','.');
													
			return $datos;
	}
	
	function  InsertarDtEp3($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['estcla'] or !$datos['spg_cuenta'] or !$datos['codact'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarDtEp3 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				$datos['meta'] = $datos['meta']?$datos['meta']:0;
		
				$ls_sql = "INSERT INTO fop_dt_ep3(codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
												  codestpro3, codact, spg_cuenta, monrecprop, monotrorec, feciniact, 
												  fecfinact,codunimed, meta, codpai, codest, codciu,
												  pfs_t1, pfs_t2, pfs_t3, pfs_t4,pfn_t1, pfn_t2, pfn_t3, pfn_t4,
												  fecreg,usureg)
						   VALUES (  '".$this->ls_codemp."', ".
						   			"".$datos['anopresup'].", ".
								    "".$datos['codplangob'].", ".
								    "'".$datos['codestpro1']."', ".
								    "'".$datos['estcla']."', ".
								    "'".$datos['codestpro2']."', ".
									"'".$datos['codestpro3']."', ".						            							
									"'".$datos['codact']."',  ".
									"'".$datos['spg_cuenta']."',  ".
									"'".$datos['monrecprop']."',  ".
									"'".$datos['monotrorec']."',  ".
									"'".$datos['feciniact']."',  ".
									"'".$datos['fecfinact']."',  ".
									"'".$datos['codunimed']."',  ".
									"'".$datos['meta']."',  ".
									"'".$datos['codpai']."',  ".
									"'".$datos['codest']."',  ".
									"'".$datos['codciu']."',  ".
									"'".$datos['pfs_t1']."',  ".
									"'".$datos['pfs_t2']."',  ".
									"'".$datos['pfs_t3']."',  ".
									"'".$datos['pfs_t4']."',  ".
									"'".$datos['pfn_t1']."',  ".
									"'".$datos['pfn_t2']."',  ".
									"'".$datos['pfn_t3']."',  ".
									"'".$datos['pfn_t4']."',  ".
									"'".date("Y/m/d H:i:s")."', ".
									"'".$_SESSION['la_logusr']."' ".
									" ); ";
				
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarDtEp3';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó el detalle de ep3 del POA: ".$_SESSION["la_empresa"]['nomestpro3']." ".$datos['codestpro3']." Descripción: ".$datos['codestpro3']." cuenta: ".$datos['spg_cuenta']." anopresup: ".$datos['anopresup'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	function  EliminarDtEp3($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['estcla'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarDtEp3 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				$ls_sql = "DELETE FROM fop_dt_ep3 
				           WHERE codemp = '".$this->ls_codemp."'
							 AND anopresup  = ".$datos['anopresup']."
							 AND codplangob  = ".$datos['codplangob']."
							 AND codestpro1  = '".$datos['codestpro1']."'
							 AND estcla  = '".$datos['estcla']."'
							 AND codestpro2  = '".$datos['codestpro2']."'
							 AND codestpro3  = '".$datos['codestpro3']."'";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarDtEp3';
					$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;					
				}
						
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' '.$_SESSION["la_empresa"]['nomestpro3'].'(s)';			
				$this->io_conexiones->dato_js('hfilas_eliminadas',$mensaje);
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminaron los detalles de : ".$_SESSION["la_empresa"]['nomestpro3']." ".$datos['codestpro3']." Descripción: ".$datos['denestpro3'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	
	function ConsultaPlanUnicoRe($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
								
				case "por_listado":					      
						if($param['denominacion']){$criterio .= " AND re.denominacion ".$this->postgres_ilike."LIKE('%".$param['denominacion']."%')  ";} 
						if($param['sig_cuenta']){$criterio .= " AND re.sig_cuenta ".$this->postgres_ilike."LIKE('%".$param['sig_cuenta']."%')  ";} 
						$campos = " trim(sig_cuenta) as sig_cuenta,denominacion  ";													
					    $sql_criterio = " WHERE re.status = 'C' ".$criterio;
					    break;
				
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM sigesp_plan_unico_re re ".$sql_criterio ." ORDER BY sig_cuenta";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaPlanUnicoRe';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ResumenPartidasEp3($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
			
			if(!$param['anopresup'])
			{															
				return false;
			}
			
			if($param['anopresup']){$criterio .= " AND dt.anopresup ='".$param['anopresup']."' ";}
			if($param['estcla']){$criterio .= " AND dt.estcla ='".$param['estcla']."' ";}
			if($param['codplangob']){$criterio .= " AND dt.codplangob ='".$param['codplangob']."' ";}
			if($param['codestpro1']){$criterio .= " AND dt.codestpro1 ='".$param['codestpro1']."' ";}
			if($param['codestpro2']){$criterio .= " AND dt.codestpro2 ='".$param['codestpro2']."' ";}
			if($param['codestpro3']){$criterio .= " AND dt.codestpro3 ='".$param['codestpro3']."' ";}
			if($param['codact']){$criterio .= " AND dt.codact ='".$param['codact']."' ";}
			
			$query_rs = "SELECT DISTINCT ON (substr(dt.spg_cuenta,1,3)) 
							    substr(dt.spg_cuenta,1,3) AS partida,
							    sum(dt.monrecprop) AS monto_recprop,
							    sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								sum(dt.pfn_t1) AS mon1,
							    sum(dt.pfn_t2) AS mon2,
							    sum(dt.pfn_t3) AS mon3,
							    sum(dt.pfn_t4) AS mon4,
							    (sum(dt.pfn_t1)+sum(dt.pfn_t2)+sum(dt.pfn_t3)+sum(dt.pfn_t4)) as totdistrib,
								re.denominacion
						 FROM fop_dt_ep3 dt
						 LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,3)||'000000' = re.sig_cuenta
						WHERE dt.codemp = '".$this->ls_codemp."'
						 ".$criterio."
						 GROUP BY substr(dt.spg_cuenta,1,3),re.denominacion
						 ORDER BY substr(dt.spg_cuenta,1,3) ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ResumenPartidasEp3';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ResumenPartidasEp3Fases($param=array()){
			
			if(!$param['anopresup'] or !$param['codplangob'] or !$param['nroh'] )
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar el resumen de Partidas de fases. 				           			    
							<br><br><b>METODO:</b> ResumenPartidasEp3Fases ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
			
			if(!$param['anopresup'])
			{															
				return false;
			}
			
			if($param['anopresup']){$criterio .= " AND dt.anopresup ='".$param['anopresup']."' ";}
			if($param['estcla']){$criterio .= " AND dt.estcla ='".$param['estcla']."' ";}
			if($param['codplangob']){$criterio .= " AND dt.codplangob ='".$param['codplangob']."' ";}
			if($param['codestpro1']){$criterio .= " AND dt.codestpro1 ='".$param['codestpro1']."' ";}
			if($param['codestpro2']){$criterio .= " AND dt.codestpro2 ='".$param['codestpro2']."' ";}
			if($param['codestpro3']){$criterio .= " AND dt.codestpro3 ='".$param['codestpro3']."' ";}
			if($param['codact']){$criterio .= " AND dt.codact ='".$param['codact']."' ";}
			if($param['nroh']){$criterio .= " AND dt.nroh ='".$param['nroh']."' ";}
						
			$query_rs = "SELECT DISTINCT ON (substr(dt.spg_cuenta,1,3)) 
							    substr(dt.spg_cuenta,1,3) AS partida,
							    sum(dt.monrecprop) AS monto_recprop,
							    sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								sum(dt.pfn_t1) AS mon1,
							    sum(dt.pfn_t2) AS mon2,
							    sum(dt.pfn_t3) AS mon3,
							    sum(dt.pfn_t4) AS mon4,
							    (sum(dt.pfn_t1)+sum(dt.pfn_t2)+sum(dt.pfn_t3)+sum(dt.pfn_t4)) as totdistrib,
								re.denominacion
						 FROM fop_dt_hep3 dt
						 LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,3)||'000000' = re.sig_cuenta
						WHERE dt.codemp = '".$this->ls_codemp."'
						  
						 ".$criterio."
						 GROUP BY substr(dt.spg_cuenta,1,3),re.denominacion
						 ORDER BY substr(dt.spg_cuenta,1,3) ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ResumenPartidasEp3';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ResumenNivelesEp3($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
			
			if(!$param['anopresup'])
			{															
				return false;
			}			
		 	
			if($param['anopresup']){$criterio .= " AND dt.anopresup ='".$param['anopresup']."' ";}
			if($param['estcla']){$criterio .= " AND dt.estcla ='".$param['estcla']."' ";}
			if($param['codplangob']){$criterio .= " AND dt.codplangob ='".$param['codplangob']."' ";}
			if($param['codestpro1']){$criterio .= " AND dt.codestpro1 ='".$param['codestpro1']."' ";}
			if($param['codestpro2']){$criterio .= " AND dt.codestpro2 ='".$param['codestpro2']."' ";}
			if($param['codestpro3']){$criterio .= " AND dt.codestpro3 ='".$param['codestpro3']."' ";}
						
			$query_rs = "	
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,3)) 
								substr(dt.spg_cuenta,1,3) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Partida' AS tipo
							FROM fop_dt_ep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,3)||'000000' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,3),re.denominacion
							UNION ALL
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,5)) 
								substr(dt.spg_cuenta,1,5) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Genérica' AS tipo
							FROM fop_dt_ep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,5)||'0000' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,5),re.denominacion
							UNION 
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,7)) 
								substr(dt.spg_cuenta,1,7) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Específica' AS tipo
							FROM fop_dt_ep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,7)||'00' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,7),re.denominacion
							UNION 
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,9)) 
								substr(dt.spg_cuenta,1,9) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Sub Específica' AS tipo
							FROM fop_dt_ep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,9)||'' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,9),re.denominacion
							ORDER BY 1
					   
					   
					    ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ResumenNivelesEp3';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	
	function ResumenNivelesEp3Fases($param=array()){
			
			if(!$param['anopresup'] or !$param['codplangob'] or !$param['nroh'] )
			{				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar el resumen de Niveles de fases. 				           			    
							<br><br><b>METODO:</b> ResumenNivelesEp3Fases ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
			
			if(!$param['anopresup'])
			{															
				return false;
			}			
		 	
			if($param['anopresup']){$criterio .= " AND dt.anopresup ='".$param['anopresup']."' ";}
			if($param['estcla']){$criterio .= " AND dt.estcla ='".$param['estcla']."' ";}
			if($param['codplangob']){$criterio .= " AND dt.codplangob ='".$param['codplangob']."' ";}
			if($param['codestpro1']){$criterio .= " AND dt.codestpro1 ='".$param['codestpro1']."' ";}
			if($param['codestpro2']){$criterio .= " AND dt.codestpro2 ='".$param['codestpro2']."' ";}
			if($param['codestpro3']){$criterio .= " AND dt.codestpro3 ='".$param['codestpro3']."' ";}
			if($param['nroh']){$criterio .= " AND dt.nroh ='".$param['nroh']."' ";}
						
			$query_rs = "	
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,3)) 
								substr(dt.spg_cuenta,1,3) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Partida' AS tipo
							FROM fop_dt_hep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,3)||'000000' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,3),re.denominacion
							UNION ALL
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,5)) 
								substr(dt.spg_cuenta,1,5) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Genérica' AS tipo
							FROM fop_dt_hep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,5)||'0000' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,5),re.denominacion
							UNION 
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,7)) 
								substr(dt.spg_cuenta,1,7) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Específica' AS tipo
							FROM fop_dt_hep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,7)||'00' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,7),re.denominacion
							UNION 
							SELECT DISTINCT ON (substr(dt.spg_cuenta,1,9)) 
								substr(dt.spg_cuenta,1,9) AS partida,
								sum(dt.monrecprop) AS monto_recprop,
								sum(dt.monotrorec) AS monto_otrorec,
								(sum(dt.monrecprop) + sum(dt.monotrorec)) as totpartida,
								re.denominacion,
								'Sub Específica' AS tipo
							FROM fop_dt_hep3 dt
							LEFT JOIN sigesp_plan_unico_re re ON substr(dt.spg_cuenta,1,9)||'' = re.sig_cuenta
							WHERE dt.codemp = '".$this->ls_codemp."'
							".$criterio."
							GROUP BY substr(dt.spg_cuenta,1,9),re.denominacion
							ORDER BY 1
					   
					   
					    ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ResumenNivelesEp3';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function EncabezadoResumenPartidas($parametro=array()){		
		
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
						<tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="4" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="12">					            
								<b>RESUMEN DE PARTIDAS</b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> PARTIDA</font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> DENOMINACIÓN </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> REC. PROP </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][4].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> OTROS REC. </font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][5].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> TOTAL </font></td>							
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][6].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> I </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][7].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> II </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][8].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> III </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][9].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> IV </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][10].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> TOT. DIST. </font></td>
						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaResumenPartidas($datos=array()){
			
			$fin_tabla = '   <tr>
							   <td colspan="2"  width="'.($this->RepParam['ancho'][1]+$this->RepParam['ancho'][2]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>TOTALES:</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][3]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['subtotrecprop'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][4]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['subtototrorec'].'</font>
							   </td>							  
							   <td width="'.($this->RepParam['ancho'][5]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total'].'</font>
							   </td>
							   
							   
							   <td width="'.($this->RepParam['ancho'][6]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total1'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][7]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total2'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][8]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total3'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][9]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total4'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][10]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['totaldist'].'</font>
							   </td>
							   
							 </tr>							 
						   </table></p>';
			return $fin_tabla; 
	}
	
	function FilaResumenPartidas($datos){			
			
			$datos = $this->FormatLonCodEstPro($datos);
			
			$filas .= '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
							<td width="'.$this->RepParam['ancho'][1].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['partida'].'</font></td>
							<td width="'.$this->RepParam['ancho'][2].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['denominacion'].'</font></td>
							<td width="'.$this->RepParam['ancho'][3].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['monto_recprop'].'</font></td>
							<td width="'.$this->RepParam['ancho'][4].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['monto_otrorec'].'</font></td>
							<td width="'.$this->RepParam['ancho'][5].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['totpartida'].'</font></td>							
							<td width="'.$this->RepParam['ancho'][6].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['mon1'].'</font></td>
							<td width="'.$this->RepParam['ancho'][7].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['mon2'].'</font></td>
							<td width="'.$this->RepParam['ancho'][8].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['mon3'].'</font></td>
							<td width="'.$this->RepParam['ancho'][9].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['mon4'].'</font></td>
							<td width="'.$this->RepParam['ancho'][10].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['totdistrib'].'</font></td>
					 </tr>';
			
			return $filas;
	}
	
	
	function RepInfoResumenPartidas($datos=array()){
			
			if(!$datos['anopresup'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			if($datos['tiporep']=='fases' and (!$datos['anopresup'] or !$datos['codplangob'] or !$datos['nroh']))
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			if($datos['tiporep']=='fases'){$spg = $this->ResumenPartidasEp3Fases($datos);}
			else{$spg = $this->ResumenPartidasEp3($datos);}
								
			if($spg['rs']===false){return false;}			
			if(!$spg['rs']->RecordCount()){return 0;}
			$filasSPC = "";
			$total=0;
			$subtotrecprop=0;
			$subtototrorec=0;
			
			foreach($spg['rs'] as $datosSPG){	
			        
					$total += $datosSPG['totpartida'];
					$subtotrecprop += $datosSPG['monto_recprop'];
					$subtototrorec += $datosSPG['monto_otrorec'];
					
					$total1 += $datosSPG['mon1'];
					$total2 += $datosSPG['mon2'];
					$total3 += $datosSPG['mon3'];
					$total4 += $datosSPG['mon4'];
					$totaldist += $datosSPG['totdistrib'];
							        
					$datosSPG['monto_recprop'] = number_format($datosSPG['monto_recprop'],2,',','.');
					$datosSPG['monto_otrorec'] = number_format($datosSPG['monto_otrorec'],2,',','.');		
					$datosSPG['totpartida'] = number_format($datosSPG['totpartida'],2,',','.');	
					$datosSPG['mon1']=number_format(abs($datosSPG['mon1']),2,',','.');
					$datosSPG['mon2']=number_format(abs($datosSPG['mon2']),2,',','.');
					$datosSPG['mon3']=number_format(abs($datosSPG['mon3']),2,',','.');
					$datosSPG['mon4']=number_format(abs($datosSPG['mon4']),2,',','.');
					$datosSPG['totdistrib']=number_format(abs($datosSPG['totdistrib']),2,',','.');			
					$filasSPG .= $this->FilaResumenPartidas($datosSPG);			
			}
			
			$datosSPG['total'] = number_format($total,2,',','.');
			$datosSPG['subtotrecprop'] = number_format($subtotrecprop,2,',','.');
			$datosSPG['subtototrorec'] = number_format($subtototrorec,2,',','.');
			$datosSPG['total1'] = number_format($total1,2,',','.');
			$datosSPG['total2'] = number_format($total2,2,',','.');
			$datosSPG['total3'] = number_format($total3,2,',','.');
			$datosSPG['total4'] = number_format($total4,2,',','.');
			$datosSPG['totaldist'] = number_format($totaldist,2,',','.');
			
			
			$InfoSPG = $this->EncabezadoResumenPartidas().$filasSPG.$this->FinTablaResumenPartidas($datosSPG);

			
			return $InfoSPG;
	
	}
	
	
	
	
	
	function EncabezadoResumenCuentas($parametro=array()){		
		
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
						<tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="4" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="12">					            
								<b>RESUMEN DE CUENTAS</b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> PARTIDA</font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> TIPO </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> DENOMINACIÓN </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][4].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> REC. PROP </font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][5].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> OTROS REC. </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][6].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> TOTAL </font></td>
						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaResumenCuentas($datos=array()){
			
			$fin_tabla = '   <tr>
							   <td colspan="2"  width="'.($this->RepParam['ancho'][1]+$this->RepParam['ancho'][2]+$this->RepParam['ancho'][3]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>TOTALES:</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][4]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['subtotrecprop'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][5]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['subtototrorec'].'</font>
							   </td>							  
							   <td width="'.($this->RepParam['ancho'][6]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total'].'</font>
							   </td>
							 </tr>							 
						   </table></p>';
			return $fin_tabla; 
	}
	
	function FilaResumenCuentas($datos){			
			
			$datos = $this->FormatLonCodEstPro($datos);
			
			$filas .= '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
							<td width="'.$this->RepParam['ancho'][1].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['partida'].'</font></td>
							<td width="'.$this->RepParam['ancho'][3].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['tipo'].'</font></td>
							<td width="'.$this->RepParam['ancho'][2].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['denominacion'].'</font></td>
							<td width="'.$this->RepParam['ancho'][4].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['monto_recprop'].'</font></td>
							<td width="'.$this->RepParam['ancho'][5].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['monto_otrorec'].'</font></td>
							<td width="'.$this->RepParam['ancho'][6].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['totpartida'].'</font></td>
					 </tr>';
			
			return $filas;
	}
	
	
	function RepInfoResumenCuentas($datos=array()){
			
			if(!$datos['anopresup'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			
			if($datos['tiporep']=='fases' and (!$datos['anopresup'] or !$datos['codplangob'] or !$datos['nroh']))
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			if($datos['tiporep']=='fases'){$spg = $this->ResumenNivelesEp3Fases($datos);}
			else{$spg = $this->ResumenNivelesEp3($datos);}			
				
			if($spg['rs']===false){return false;}			
			if(!$spg['rs']->RecordCount()){return 0;}
			$filasSPC = "";
			$total=0;
			$subtotrecprop=0;
			$subtototrorec=0;
			
			foreach($spg['rs'] as $datosSPG){	
			        
					if($datosSPG['tipo']=='Partida'){
						$total += $datosSPG['totpartida'];
						$subtotrecprop += $datosSPG['monto_recprop'];
						$subtototrorec += $datosSPG['monto_otrorec'];
					}		        
					$datosSPG['monto_recprop'] = number_format($datosSPG['monto_recprop'],2,',','.');
					$datosSPG['monto_otrorec'] = number_format($datosSPG['monto_otrorec'],2,',','.');		
					$datosSPG['totpartida'] = number_format($datosSPG['totpartida'],2,',','.');	
					//$datosSPG['partida'] = str_pad($datosSPG['partida'],9,'0',STR_PAD_RIGHT);
					$datosSPG['partida'] = $datosSPG['partida'];
								
					$filasSPG .= $this->FilaResumenCuentas($datosSPG);			
			}
			
			$datosSPG['total'] = number_format($total,2,',','.');
			$datosSPG['subtotrecprop'] = number_format($subtotrecprop,2,',','.');
			$datosSPG['subtototrorec'] = number_format($subtototrorec,2,',','.');
			
			$InfoSPG = $this->EncabezadoResumenCuentas().$filasSPG.$this->FinTablaResumenCuentas($datosSPG);

			
			return $InfoSPG;
	
	}
	
	
	function EncabezadoResumenDetalle($parametro=array()){		
		
			
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
						<tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="4" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="12">					            
								<b>RESUMEN DE CUENTAS</b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> ACTIVIDAD</font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> UNIDAD </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> META </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][4].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> ESTADO </font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][5].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> CIUDAD </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][6].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> CUENTA </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][7].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> DENOM. </font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][8].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> REC. PROP.</font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][9].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> OTR. REC. </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][10].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> SUBTOT </font></td>
						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaResumenDetalle($datos=array()){
			
			$fin_tabla = '   <tr>
							   <td colspan="2"  width="'.($this->RepParam['ancho'][1]+$this->RepParam['ancho'][2]+$this->RepParam['ancho'][3]+$this->RepParam['ancho'][4]+$this->RepParam['ancho'][5]+$this->RepParam['ancho'][6]+$this->RepParam['ancho'][7]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>TOTALES:</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][8]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['subtotrecprop'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][9]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['subtototrorec'].'</font>
							   </td>							  
							   <td width="'.($this->RepParam['ancho'][10]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total'].'</font>
							   </td>
							 </tr>							 
						   </table></p>';
			return $fin_tabla; 
	}
	
	function FilaResumenDetalle($datos){			
			
			$datos = $this->FormatLonCodEstPro($datos);
			
			$filas .= '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
							<td width="'.$this->RepParam['ancho'][1].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['actividad'].'</font></td>
							<td width="'.$this->RepParam['ancho'][2].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['desunimed'].'</font></td>
							<td width="'.$this->RepParam['ancho'][3].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['meta'].'</font></td>
							<td width="'.$this->RepParam['ancho'][4].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['desest'].'</font></td>
							<td width="'.$this->RepParam['ancho'][5].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['desciu'].'</font></td>
							<td width="'.$this->RepParam['ancho'][6].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['spg_cuenta'].'</font></td>
							<td width="'.$this->RepParam['ancho'][7].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['denominacion'].'</font></td>
							<td width="'.$this->RepParam['ancho'][8].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['monrecprop'].'</font></td>
							<td width="'.$this->RepParam['ancho'][9].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['monotrorec'].'</font></td>
							<td width="'.$this->RepParam['ancho'][10].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['subtot'].'</font></td>
					 </tr>';
			
			return $filas;
	}
	
	
	function RepInfoResumenDetalle($datos=array()){
			
			if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codestpro2'] or !$datos['codestpro3'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			if($datos['tiporep']=='fases' and (!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['nroh']))
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte de fase.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			$datos['criterio'] = "por_codigo";
			if($datos['tiporep']=='fases'){$spg = $this->ConsultaDtEp3Fases($datos);}
			else{$spg = $this->ConsultaDtEp3($datos);}
			
			if($spg['rs']===false){return false;}			
			if(!$spg['rs']->RecordCount()){return 0;}
			$filasSPC = "";
			$total=0;
			$subtotrecprop=0;
			$subtototrorec=0;
			
			foreach($spg['rs'] as $datosSPG){	
			        
					$datosSPG['subtot'] = $datosSPG['monrecprop'] + $datosSPG['monotrorec'];
					
					$total += $datosSPG['subtot'];
					$subtotrecprop += $datosSPG['monrecprop'];
					$subtototrorec += $datosSPG['monotrorec'];
					
					$datosSPG['monrecprop']=number_format(abs($datosSPG['monrecprop']),2,',','.');
					$datosSPG['monotrorec']=number_format(abs($datosSPG['monotrorec']),2,',','.');
					$datosSPG['subtot']=number_format(abs($datosSPG['subtot']),2,',','.');
					$datosSPG['meta']=number_format(abs($datosSPG['meta']),2,',','.');
					$datosSPG['feciniact']=$this->io_conexiones->formatea_fecha_normal($datosSPG['feciniact']);
					$datosSPG['fecfinact']=$this->io_conexiones->formatea_fecha_normal($datosSPG['fecfinact']);				
													
					$filasSPG .= $this->FilaResumenDetalle($datosSPG);			
			}
			
			$datosSPG['total'] = number_format($total,2,',','.');
			$datosSPG['subtotrecprop'] = number_format($subtotrecprop,2,',','.');
			$datosSPG['subtototrorec'] = number_format($subtototrorec,2,',','.');
			
			$InfoSPG = $this->EncabezadoResumenDetalle().$filasSPG.$this->FinTablaResumenDetalle($datosSPG);

			
			return $InfoSPG;
	
	}
	
	
	function  BuscarAnosPlan($datos=array()){
							
				$ls_sql = "SELECT DISTINCT ep1.anopresup,ep1.codplangob,pg.desplangob 
				             FROM fop_ep1 ep1
						   INNER JOIN fop_plangob pg ON pg.codemp = ep1.codemp
						                           AND pg.codplangob = ep1.codplangob
						  ";
				
				$rs_data=$this->io_sql->select($ls_sql);			
				
				if($rs_data==false)
				{					
					$metodo = 'BuscarAnosPlan';
					$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_data;
	
	}
	
	
	function  BuscarCodActividad($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['estcla'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder generar el código de la actividad. 				           			    
							    <br><br><b>METODO:</b> BuscarCodActividad ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
							
				$query_rs = "SELECT (codact + 1) as codact
				           FROM fop_ep3_actividades
						   WHERE codemp = '".$this->ls_codemp."'
							 AND anopresup  = ".$datos['anopresup']."
							 AND codplangob  = ".$datos['codplangob']."
							 AND codestpro1  = '".$datos['codestpro1']."'
							 AND estcla  = '".$datos['estcla']."'
							 AND codestpro2  = '".$datos['codestpro2']."'
							 AND codestpro3  = '".$datos['codestpro3']."'
						    ORDER BY codact DESC LIMIT 1
						  ";
								
				$clase = get_class($this);
				$metodo = 'BuscarCodActividad';
				$param['arreglo'] = 'arreglo';
				$param['ajax'] = '0';
				$param['imprimir'] = '1';	
				$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
				$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
				return $respuesta;
	
	}
	
	function ConsultaActividad($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
				
			    case "por_codigo":
									        
						$campos = " ac.*,um.desunimed,pa.despai,es.desest,ci.desciu ";		
					    $sql_criterio = "  LEFT JOIN fop_unimed um ON um.codemp = ac.codemp 
																  AND um.codunimed = ac.codunimedact
										   LEFT JOIN sigesp_pais pa ON pa.codpai = ac.codpaiact
										   LEFT JOIN sigesp_estados es ON es.codpai = ac.codpaiact
										                              AND es.codest = ac.codestact
										   LEFT JOIN scv_ciudades ci ON ci.codpai = ac.codpaiact
										                            AND ci.codest = ac.codestact
										   							AND ci.codciu = ac.codciuact
						                   WHERE ac.codemp = '".$this->ls_codemp."'
										   AND ac.anopresup  = ".$param['anopresup']."
										   AND ac.codplangob  = ".$param['codplangob']."
										   AND ac.codestpro1  = '".$param['codestpro1']."'
										   AND ac.estcla  = '".$param['estcla']."'
										   AND ac.codestpro2  = '".$param['codestpro2']."'
										   AND ac.codestpro3  = '".$param['codestpro3']."'
										   AND ac.codact  = '".$param['codact']."' ";
					    break;
						
				case "por_listado":
									        
						$campos = " ac.*,um.desunimed,pa.despai,es.desest,ci.desciu ";		
					    $sql_criterio = "  LEFT JOIN fop_unimed um ON um.codemp = ac.codemp 
																  AND um.codunimed = ac.codunimedact
										   LEFT JOIN sigesp_pais pa ON pa.codpai = ac.codpaiact
										   LEFT JOIN sigesp_estados es ON es.codpai = ac.codpaiact
										                              AND es.codest = ac.codestact
										   LEFT JOIN scv_ciudades ci ON ci.codpai = ac.codpaiact
										                            AND ci.codest = ac.codestact
										   							AND ci.codciu = ac.codciuact
						                   WHERE ac.codemp = '".$this->ls_codemp."'
										   AND ac.anopresup  = ".$param['anopresup']."
										   AND ac.codplangob  = ".$param['codplangob']."
										   AND ac.codestpro1  = '".$param['codestpro1']."'
										   AND ac.estcla  = '".$param['estcla']."'
										   AND ac.codestpro2  = '".$param['codestpro2']."'
										   AND ac.codestpro3  = '".$param['codestpro3']."' ";
					    break;
				
				case "por_ep2":
									        
						$campos = " ac.*,um.desunimed,pa.despai,es.desest,ci.desciu ";		
					    $sql_criterio = "  LEFT JOIN fop_unimed um ON um.codemp = ac.codemp 
																  AND um.codunimed = ac.codunimedact
										   LEFT JOIN sigesp_pais pa ON pa.codpai = ac.codpaiact
										   LEFT JOIN sigesp_estados es ON es.codpai = ac.codpaiact
										                              AND es.codest = ac.codestact
										   LEFT JOIN scv_ciudades ci ON ci.codpai = ac.codpaiact
										                            AND ci.codest = ac.codestact
										   							AND ci.codciu = ac.codciuact
						                   WHERE ac.codemp = '".$this->ls_codemp."'
										   AND ac.anopresup  = ".$param['anopresup']."
										   AND ac.codplangob  = ".$param['codplangob']."
										   AND ac.codestpro1  = '".$param['codestpro1']."'
										   AND ac.estcla  = '".$param['estcla']."'
										   AND ac.codestpro2  = '".$param['codestpro2']."' ";
					    break;
				
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_ep3_actividades ac ".$sql_criterio ." ORDER BY ac.codact";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaDtEp3';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function  InsertarAct($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['estcla'] or !$datos['codact'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de insert. 				           			    
							    <br><br><b>METODO:</b> InsertarDtEp3 ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaActividad($param);
				if($resp===false){return false;}
				if($resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de la Actividad ya existe se generará uno automaticamente!";
						$this->io_conexiones->mensajes_ajax($mensaje);
						$resp = BuscarCodActividad($datos);
						if($resp===false){return false;}
						$datos['codact'] = $resp['rs']->fields['codact'];
				}
				
				$datos['pfs1'] = ($datos['pfs1']=="")?"0.00":$datos['pfs1'];
				$datos['pfs2'] = ($datos['pfs2']=="")?"0.00":$datos['pfs2'];
				$datos['pfs3'] = ($datos['pfs3']=="")?"0.00":$datos['pfs3'];
				$datos['pfs4'] = ($datos['pfs4']=="")?"0.00":$datos['pfs4'];				
				$datos['metact'] = $datos['pfs1']+$datos['pfs2']+$datos['pfs3']+$datos['pfs4'];
						
				$ls_sql = "INSERT INTO fop_ep3_actividades( codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
												            codestpro3, codact, actividad,indpriniv,indsegniv,supact, 
															metact, codunimedact, desubigeoact,codpaiact, codestact, codciuact,
															pfs1,pfs2,pfs3,pfs4,
															fecreg, usureg)
						   VALUES (  '".$this->ls_codemp."', ".
						   			"".$datos['anopresup'].", ".
								    "".$datos['codplangob'].", ".
								    "'".$datos['codestpro1']."', ".
								    "'".$datos['estcla']."', ".
								    "'".$datos['codestpro2']."', ".
									"'".$datos['codestpro3']."', ".						            							
									"'".$datos['codact']."',  ".
									"'".$datos['actividad']."',  ".
									"'".$datos['indpriniv']."',  ".
									"'".$datos['indsegniv']."',  ".
									"'".$datos['supact']."',  ".
									"'".$datos['metact']."',  ".
									"'".$datos['codunimedact']."',  ".
									"'".$datos['desubigeoact']."',  ".
									"'".$datos['codpaiact']."',  ".
									"'".$datos['codestact']."',  ".
									"'".$datos['codciuact']."',  ".									
									"'".$datos['pfs1']."',  ".
									"'".$datos['pfs2']."',  ".
									"'".$datos['pfs3']."',  ".
									"'".$datos['pfs4']."',  ".									
									"'".date("Y/m/d H:i:s")."', ".
									"'".$_SESSION['la_logusr']."' ".
									" ); ";
				
				
				$rs_data=$this->io_sql->select($ls_sql);	
				if($rs_data==false){				
					$metodo = 'InsertarAct';
					$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;				
				}

				$this->seguridad["evento"]="INSERT";
				$this->seguridad["descripcion"]="Se Insertó la actividad de ep3 del POA: ".$_SESSION["la_empresa"]['nomestpro3']." ".$datos['codestpro3']." Descripción: ".$datos['codestpro3']." cuenta: ".$datos['spg_cuenta']." anopresup: ".$datos['anopresup']." Actividad: ".$datos['codact'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	
	function ModificarAct($datos=array()){
		   
		  if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
			 !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['estcla'] or !$datos['codact'])
		  {				
				$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de update. 				           			    
							<br><br><b>METODO:</b> ModificarAct ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
		  }	
		  
		  $datos['pfs1'] = ($datos['pfs1']=="")?"0.00":$datos['pfs1'];
		  $datos['pfs2'] = ($datos['pfs2']=="")?"0.00":$datos['pfs2'];
		  $datos['pfs3'] = ($datos['pfs3']=="")?"0.00":$datos['pfs3'];
		  $datos['pfs4'] = ($datos['pfs4']=="")?"0.00":$datos['pfs4'];
		  $datos['metact'] = $datos['pfs1']+$datos['pfs2']+$datos['pfs3']+$datos['pfs4'];
		  
		   $ls_sql = "  UPDATE fop_ep3_actividades
						 SET actividad='".$datos['actividad']."',	
						     indpriniv='".$datos['indpriniv']."',
							 indsegniv='".$datos['indsegniv']."',
							 supact='".$datos['supact']."',
							 metact='".$datos['metact']."',
							 codunimedact='".$datos['codunimedact']."',
							 desubigeoact='".$datos['desubigeoact']."',
							 codpaiact='".$datos['codpaiact']."',
							 codestact='".$datos['codestact']."',
							 codciuact='".$datos['codciuact']."',							 
							 pfs1='".$datos['pfs1']."',
							 pfs2='".$datos['pfs2']."',
							 pfs3='".$datos['pfs3']."',
							 pfs4='".$datos['pfs4']."'							 
					   WHERE codemp = '".$this->ls_codemp."'
							 AND anopresup  = ".$datos['anopresup']."
							 AND codplangob  = ".$datos['codplangob']."
							 AND codestpro1  = '".$datos['codestpro1']."'
							 AND estcla  = '".$datos['estcla']."'
							 AND codestpro2  = '".$datos['codestpro2']."'
							 AND codestpro3  = '".$datos['codestpro3']."'
							 AND codact  = '".$datos['codact']."'; ";
		
						
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{
				
				$metodo = 'ModificarAct';
				$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;
				
			}
			
			//ACTUALIZAMOS LA PROGRAMACIÓN FÍSICA DE TODOS LOS DETALLES ASOCIADOS A LA ACTIVIDAD
			$ls_sql = "  UPDATE fop_dt_ep3
						 SET pfs_t1='".$datos['pfs1']."',
							 pfs_t2='".$datos['pfs2']."',
							 pfs_t3='".$datos['pfs3']."',
							 pfs_t4='".$datos['pfs4']."',	
							 meta='".$datos['metact']."'						 
					     WHERE codemp = '".$this->ls_codemp."'
						   AND anopresup  = ".$datos['anopresup']."
						   AND codplangob  = ".$datos['codplangob']."
						   AND codestpro1  = '".$datos['codestpro1']."'
						   AND estcla  = '".$datos['estcla']."'
						   AND codestpro2  = '".$datos['codestpro2']."'
						   AND codestpro3  = '".$datos['codestpro3']."'
						   AND codact  = '".$datos['codact']."'; ";	
		    
			$rs_data=$this->io_sql->select($ls_sql);			
			
			if($rs_data==false)
			{
				
				$metodo = 'ModificarAct';
				$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 true;
	
	}
	
	function  EliminarAct($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or 
				   !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['estcla'] or !$datos['codact'])
				{				
					$mensaje = '<b>VALIDACIÓN DE DATOS:</b><br> Faltan datos para poder realizar la operación de Eliminación. 				           			    
							    <br><br><b>METODO:</b> EliminarAct ';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				
				$param = $datos;
				$param['criterio'] = 'por_codigo';
				$resp = $this->ConsultaActividad($param);
				if($resp===false){return false;}
				if(!$resp['rs']->RecordCount()){
				        $mensaje = "<b>ERROR:</b> El código de la Actividad no existe !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				/*
				$datos['criterio'] = "por_actividad";
			    $resp = $this->ConsultaDtEp3($datos);		
			    if($resp===false){return false;}			
			    if($resp['rs']->RecordCount()){
					$mensaje = "<b>ERROR:</b> Existen Cuentas Asociadas a la actividad !<br>No se puede eliminar la actividad.";
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;	
				}
				*/
				$ls_sql = "   DELETE FROM fop_dt_ep3 
							   WHERE  codemp = '".$this->ls_codemp."'
								 AND anopresup  = ".$datos['anopresup']."
								 AND codplangob  = ".$datos['codplangob']."
								 AND codestpro1  = '".$datos['codestpro1']."'
								 AND estcla  = '".$datos['estcla']."'
								 AND codestpro2  = '".$datos['codestpro2']."'
								 AND codestpro3  = '".$datos['codestpro3']."'
								 AND codact  = '".$datos['codact']."';
								   
							  DELETE FROM fop_ep3_actividades 
							   WHERE codemp = '".$this->ls_codemp."'
								 AND anopresup  = ".$datos['anopresup']."
								 AND codplangob  = ".$datos['codplangob']."
								 AND codestpro1  = '".$datos['codestpro1']."'
								 AND estcla  = '".$datos['estcla']."'
								 AND codestpro2  = '".$datos['codestpro2']."'
								 AND codestpro3  = '".$datos['codestpro3']."'
								 AND codact  = '".$datos['codact']."';	 ";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data==false)
				{					
					$metodo = 'EliminarAct';
					$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;					
				}
						
				$mensaje = 'Se eliminaron '.$this->io_sql->conn->Affected_Rows().' '.$_SESSION["la_empresa"]['nomestpro3'].'(s)';			
				$this->io_conexiones->dato_js('hfilas_eliminadas',$mensaje);
				
				$this->seguridad["evento"]="DELETE";
				$this->seguridad["descripcion"]="Se Eliminó la actividad : ".$_SESSION["la_empresa"]['nomestpro3']." ".$datos['codestpro3']." Descripción: ".$datos['codestpro3']." cuenta: ".$datos['spg_cuenta']." anopresup: ".$datos['anopresup']." Actividad: ".$datos['codact'];
				$this->guardar_seguridad();
				
				return true;
	
	}
	
	
	function ComboYearPresup($opciones=array()){

				if(!$opciones['nombre_combo']){$nombre_combo = 'sel_anopresup';}else{$nombre_combo = $opciones['nombre_combo'];}
				if(!$opciones['anopresup']){$carga = ' Seleccione '; $id_carga = '';}
				else{				
					$carga = $opciones['anopresup'];				  
					$id_carga = $opciones['anopresup'];
				}			
				
				$opciones['criterio'] = 'por_listado';					
				$resp = $this->BuscarAnosPlan($opciones);
				if($resp===false){return false;}
				
				if($opciones['disable']===true){$disable='disabled';}
				
				$combo = '<select name="'.$nombre_combo.'" id="'.$nombre_combo.'" onChange="'.$opciones['funcion_js'].'" '.$disable.'>
				              <option value="'.$id_carga.'">- '.$carga.' -</option>';
				
				foreach($resp as $dato) { 				
					$combo .= '<option value="'.$dato["anopresup"].'">'.$dato["anopresup"].'</option>';								
				}
				$combo .= '</select>';
																							
				return $combo;
	}
	
	function EncabezadoRepListEp1($parametro=array()){		
		
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
						<tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="4" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="12">					            
								<b> '.$_SESSION["la_empresa"]["nomestpro1"].'</b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> CÓDIGO</font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> DENOMINACIÓN </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> MONTO CAR.</font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][4].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> MONTO EST.</font></td>

						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaRepListEp1($datos=array()){
			
			$fin_tabla = '   <tr>
							   <td colspan="2"  width="'.($this->RepParam['ancho'][1]+$this->RepParam['ancho'][2]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>TOTALES:</b></font>
							   </td>			  
							   <td width="'.($this->RepParam['ancho'][3]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total'].'</font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][4]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['totalest'].'</font>
							   </td>
							 </tr>							 
						   </table></p>';
			return $fin_tabla; 
	}
	
	function FilaRepListEp1($datos){			
			
			$datos = $this->FormatLonCodEstPro($datos);
			
			$filas .= '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
							<td width="'.$this->RepParam['ancho'][1].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['codestpro1'].'</font></td>
							<td width="'.$this->RepParam['ancho'][2].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['denestpro1'].'</font></td>
							<td width="'.$this->RepParam['ancho'][3].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['totdtep1'].'</font></td>
						    <td width="'.$this->RepParam['ancho'][4].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['montotpry'].'</font></td>

						 </tr>';
			
			return $filas;
	}
	
	
	function RepListEp1($datos=array()){
			
			if(!$datos['anopresup'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			$resul = $this->ConsultaEp1($datos);		
			if($resul['rs']===false){return false;}			
			if(!$resul['rs']->RecordCount()){return 0;}
			
			$total=0;
			
			foreach($resul['rs'] as $datosFila){					
					$total += $datosFila['totdtep1'];
					$totalest += $datosFila['montotpry'];					        
					$datosFila['totdtep1'] = number_format($datosFila['totdtep1'],2,',','.');
					$datosFila['montotpry'] = number_format($datosFila['montotpry'],2,',','.');													
					$filas .= $this->FilaRepListEp1($datosFila);			
			}
			$totales['totalest'] = number_format($totalest,2,',','.');
			$totales['total'] = number_format($total,2,',','.');						
			$reporte = $this->EncabezadoRepListEp1().$filas.$this->FinTablaRepListEp1($totales);
						
			return $reporte;
	
	}
	
	
	
	function EncabezadoInfoTeritorialEp1($parametro=array()){		
		
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
					    <tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="4" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="12">					            
								<b> Información Territorial </b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> CODEST </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> ESTADO</font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> MUNICIPIOS</font></td>
						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaInfoTeritorialEp1($datos=array()){
			
			$fin_tabla = '</table></p>';
			return $fin_tabla; 
	}
	
	function FilaInfoTeritorialEp1($datos){			
			
			$datos = $this->FormatLonCodEstPro($datos);
			
			$filas .= '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
							<td width="'.$this->RepParam['ancho'][1].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['codest'].'</font></td>
							<td width="'.$this->RepParam['ancho'][2].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['desest'].'</font></td>
							<td width="'.$this->RepParam['ancho'][3].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['municipios'].'</font></td>
						 </tr>';
			
			return $filas;
	}
	
	
	function InfoTeritorialEp1($datos=array()){
			
			if(!$datos['codestpro1'] or !$datos['estcla'] or !$datos['anopresup'] or !$datos['codplangob'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
			$datos['criterio'] = "por_ep1";
			
			if(!$datos['nroh']){$resul = $this->ConsultaEstadosEp1($datos);	}
			else{$resul = $this->ConsultaEstadosEp1Fases($datos);}
				
			if($resul['rs']===false){return false;}			
			if(!$resul['rs']->RecordCount()){return 0;}
			
			
			foreach($resul['rs'] as $datosFila){
			        $datosFila['nroh'] = $datos['nroh'];
			        $datosFila['municipios'] = $this->StrMunicipiosEp1($datosFila);														
					$filas .= $this->FilaInfoTeritorialEp1($datosFila);			
			}	
									
			$reporte = $this->EncabezadoInfoTeritorialEp1().$filas.$this->FinTablaInfoTeritorialEp1($totales);
						
			return $reporte;
	
	}
	
	
	
	function EncabezadoEp2xEp1($parametro=array()){		
		
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
					    <tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="7" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="'.$this->RepParam['encabezado3']['tamaño'].'">					            
								<b> '.$_SESSION["la_empresa"]['nomestpro2'].' </b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center"  width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'" color="'.$this->RepParam['encabezado']['color_letra'].'"> COD. P/A </font></td>
							<td align="center"  width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'" color="'.$this->RepParam['encabezado']['color_letra'].'">T.</font></td>
						    <td align="center"  width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'" color="'.$this->RepParam['encabezado']['color_letra'].'"> COD. AE</font></td>
							<td align="center"  width="'.$this->RepParam['ancho'][4].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'" color="'.$this->RepParam['encabezado']['color_letra'].'"> NOMBRE</font></td>
						    <td align="center"  width="'.$this->RepParam['ancho'][5].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'" color="'.$this->RepParam['encabezado']['color_letra'].'"> UNID.</font></td>
							<td align="center"  width="'.$this->RepParam['ancho'][6].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'" color="'.$this->RepParam['encabezado']['color_letra'].'"> META</font></td>
							<td align="center"  width="'.$this->RepParam['ancho'][7].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'" color="'.$this->RepParam['encabezado']['color_letra'].'"> POND.</font></td>
						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaEp2xEp1($datos=array()){
			
			$fin_tabla = '</table></p>';
			return $fin_tabla; 
	}
	
	function FilaEp2xEp1($datos){			
			
			$datos = $this->FormatDatosEp2($datos);
			
			$filas .= '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
							<td width="'.$this->RepParam['ancho'][1].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'" color="'.$this->RepParam['fila']['color_letra'].'">'.$datos['codestpro1'].'</font></td>
							<td width="'.$this->RepParam['ancho'][2].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'" color="'.$this->RepParam['fila']['color_letra'].'">'.$datos['estcla'].'</font></td>
							<td width="'.$this->RepParam['ancho'][3].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'" color="'.$this->RepParam['fila']['color_letra'].'">'.$datos['codestpro2'].'</font></td>
							<td width="'.$this->RepParam['ancho'][4].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'" color="'.$this->RepParam['fila']['color_letra'].'">'.$datos['denestpro2'].'</font></td>
							<td width="'.$this->RepParam['ancho'][5].'" align="left" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'" color="'.$this->RepParam['fila']['color_letra'].'">'.$datos['desunimedep2'].'</font></td>
							<td width="'.$this->RepParam['ancho'][6].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'" color="'.$this->RepParam['fila']['color_letra'].'">'.$datos['canmetep2'].'</font></td>
							<td width="'.$this->RepParam['ancho'][7].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'" color="'.$this->RepParam['fila']['color_letra'].'">'.$datos['pondera'].'</font></td>
						 </tr>';
			
			return $filas;
	}
	
	
	function InfoEp2xEp1($datos=array()){
			
			if(!$datos['codestpro1'] or !$datos['estcla'] or !$datos['anopresup'] or !$datos['codplangob'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
			$datos['criterio'] = "por_ep1";
			if(!$datos['nroh']){$resul = $this->ConsultaEp2($datos);}
			else{$resul = $this->ConsultaEp2Fases($datos);}		
			if($resul['rs']===false){return false;}			
			if(!$resul['rs']->RecordCount()){return 0;}
			
			
			foreach($resul['rs'] as $datosFila){			               												
					$filas .= $this->FilaEp2xEp1($datosFila);			
			}	
									
			$reporte = $this->EncabezadoEp2xEp1().$filas.$this->FinTablaEp2xEp1($totales);
						
			return $reporte;
	
	}
	
	function EncabezadoDtEp2($parametro=array()){		
		
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
					    <tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="7" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="12">					            
								<b> DETALLE DE ACTIVIDADES </b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> COD </font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> DESC </font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> DET.</font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][4].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> META</font></td>
						    <td align="center" colspan="2" width="'.$this->RepParam['ancho'][5].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> DIST</font></td>
							<td align="center" colspan="2" width="'.$this->RepParam['ancho'][6].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> PRESUP</font></td>
						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaDtEp2($datos=array()){
			$datos['total'] = number_format($datos['total'],2,',','.');
			$fin_tabla = '<tr>
							   <td colspan="5"  width="'.($this->RepParam['ancho'][1]+$this->RepParam['ancho'][2]+$this->RepParam['ancho'][3]+$this->RepParam['ancho'][4]+$this->RepParam['ancho'][5]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>TOTALES:</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][6]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> '.$datos['total'].'</font>
							   </td>
							 </tr></table></p>';
			return $fin_tabla; 
	}
	
	function FilaDtEp2($datos){			
			/*
			codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
			codestpro3, codact, actividad, fecreg, usureg, indpriniv, indsegniv, 
			supact, metact, codunimedact, desubigeoact, codpaiact, codestact, 
			codciuact, pfs1, pfs2, pfs3, pfs4
			*/
			$datos = $this->FormatDatosAct($datos);
			$detalle1 = "<b>Ind. 1° Niv:</b>".$datos['indpriniv'].
			            "<br /><b>Ind. 2° Niv:</b>".$datos['indsegniv'].
						"<br /><b>Supuesto:</b>".$datos['supact'];
			$progfis = "<b>Fisic I:</b>".$datos['pfs1'].
			           "<br /><b>Fisic II:</b>".$datos['pfs2'].
					   "<br /><b>Fisic III:</b>".$datos['pfs3'].
					   "<br /><b>Fisic IV:</b>".$datos['pfs4'];
			$meta = "<b>Unidad:</b>".$datos['desunimed'].
			        "<br /><b>Meta:</b>".$datos['metact'];
		    $datosSPG = $this->FormatLonCodEstPro($datos);
			$programatica = $datosSPG['codestpro1'].'-'.$datosSPG['codestpro2'].'-'.$datosSPG['codestpro3'];
			$datos['codestpro3'] = "";
			$PartidasDet = $this->InfoResumenPartidas($datos);
			
			$datos['actividad'] = $datos['actividad'].'<br /><br /><b>Prog:</b> '.$programatica;
			
			$filas .= '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
							<td width="'.$this->RepParam['ancho'][1].'" align="center" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['codact'].'</font></td>
							<td width="'.$this->RepParam['ancho'][2].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['actividad'].'</font></td>
							<td width="'.$this->RepParam['ancho'][3].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$detalle1.'</font></td>
							<td width="'.$this->RepParam['ancho'][4].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$meta.'</font></td>
							<td width="'.$this->RepParam['ancho'][5].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$progfis.'</font></td>
							<td width="'.$this->RepParam['ancho'][6].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$PartidasDet.'</font></td>
						 </tr>';
			
			return $filas;
	}
	
	
	function InfoDtEp2($datos=array()){
			
			if(!$datos['codestpro1'] or !$datos['estcla'] or !$datos['anopresup'] or !$datos['codplangob'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}			
			
			$datos['criterio'] = "por_ep2";
			$resul = $this->ConsultaActividad($datos);		
			if($resul['rs']===false){return false;}			
			if(!$resul['rs']->RecordCount()){return 0;}
			
			$totales=array();
			$this->datosSPG['total']=0;
			
			foreach($resul['rs'] as $datosFila){			               												
					$filas .= $this->FilaDtEp2($datosFila);	
					$totales['total'] += $this->datosSPG['total'];		
			}	
									
			$reporte = $this->EncabezadoDtEp2().$filas.$this->FinTablaDtEp2($totales);
						
			return $reporte;
	
	}
	
	
	function InfoResumenPartidas($datos=array()){
			
			if(!$datos['codestpro1'] or !$datos['estcla'] or !$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro2'])
			{				
				$mensaje = 'Faltan datos para poder generar el resumen de partidas';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}	
			
			$spg = $this->ResumenPartidasEp3($datos);		
			if($spg['rs']===false){return false;}			
			if(!$spg['rs']->RecordCount()){return 0;}
			$filasSPC = "";
			$total=0;
			$subtotrecprop=0;
			$subtototrorec=0;
			$string="";
			foreach($spg['rs'] as $datosSPG){	
			        
					$total += $datosSPG['totpartida'];
					$subtotrecprop += $datosSPG['monto_recprop'];
					$subtototrorec += $datosSPG['monto_otrorec'];
					
					$total1 += $datosSPG['mon1'];
					$total2 += $datosSPG['mon2'];
					$total3 += $datosSPG['mon3'];
					$total4 += $datosSPG['mon4'];
					$totaldist += $datosSPG['totdistrib'];
							        
					$datosSPG['monto_recprop'] = number_format($datosSPG['monto_recprop'],2,',','.');
					$datosSPG['monto_otrorec'] = number_format($datosSPG['monto_otrorec'],2,',','.');		
					$datosSPG['totpartida'] = number_format($datosSPG['totpartida'],2,',','.');	
					$datosSPG['mon1']=number_format(abs($datosSPG['mon1']),2,',','.');
					$datosSPG['mon2']=number_format(abs($datosSPG['mon2']),2,',','.');
					$datosSPG['mon3']=number_format(abs($datosSPG['mon3']),2,',','.');
					$datosSPG['mon4']=number_format(abs($datosSPG['mon4']),2,',','.');
					$datosSPG['totdistrib']=number_format(abs($datosSPG['totdistrib']),2,',','.');
					
					$string .= '<b>'.$datosSPG['partida'].':</b> '.$datosSPG['totpartida'].'<br />';		
					
			}
			
			$this->datosSPG['total'] = $total;
			$datosSPG['total'] = number_format($total,2,',','.');
			$datosSPG['subtotrecprop'] = number_format($subtotrecprop,2,',','.');
			$datosSPG['subtototrorec'] = number_format($subtototrorec,2,',','.');
			$datosSPG['total1'] = number_format($total1,2,',','.');
			$datosSPG['total2'] = number_format($total2,2,',','.');
			$datosSPG['total3'] = number_format($total3,2,',','.');
			$datosSPG['total4'] = number_format($total4,2,',','.');
			$datosSPG['totaldist'] = number_format($totaldist,2,',','.');
			
			$string .= '<br /><b>Total:</b> '.$datosSPG['total'].'';
				
			return $string;
	
	}
	
	function ChkGenFase($param=array()){
			
			
			$ls_sql = " SELECT 
							(
								SELECT count(*) 
								FROM fop_ep1
								WHERE codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 IN ( 
										SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 
										FROM fop_dt_ep3
										   WHERE anopresup ='".$param['anopresup']."'
									         AND codplangob ='".$param['codplangob']."'
								)
							) AS cant_ep1,
							(
								SELECT count(*) 
								FROM fop_ep2
								WHERE codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2 IN ( 
										SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2  
										FROM fop_dt_ep3
										   WHERE anopresup ='".$param['anopresup']."'
									         AND codplangob ='".$param['codplangob']."'
								)
							) AS cant_ep2,
							(
								SELECT count(*)  
								FROM fop_ep3
								WHERE codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2||'|'||codestpro3 IN ( 
										SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2||'|'||codestpro3  
										FROM fop_dt_ep3
										   WHERE anopresup ='".$param['anopresup']."'
									         AND codplangob ='".$param['codplangob']."'
								)
							) AS cant_ep3 ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data===false){
				$metodo = 'ChkGenFase';
				$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR-></b><br>'.$this->io_sql->message;					
				$this->io_conexiones->mensajes_ajax($mensaje);
				return false;				
			}
			
			if(!$rs_data->fields['cant_ep1']){
					$mensaje = "No existen estructuras de nivel 1 con detalle presupuestario para generar la fase";
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;
			}
			
			if(!$rs_data->fields['cant_ep2']){
					$mensaje = "No existen estructuras de nivel 2 con detalle presupuestario para generar la fase";
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;
			}
			
			if(!$rs_data->fields['cant_ep3']){
					$mensaje = "No existen estructuras de nivel 3 con detalle presupuestario para generar la fase";
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;
			}
			
			return true;
	
	}
	
	function GenFasePresup($datos=array()){
	
		    if(!$datos['anopresup'] or !$datos['codplangob'])
			{				
				$mensaje = 'Faltan datos para poder generar una fase histórica';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			if(!$datos['coddefhist'])
			{				
				$mensaje = 'Debe indicar cual fase generar';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			$this->ProcGenFase='GENERAR';
			$metodo = 'GenFasePresup';
			$this->nroh = $datos['coddefhist'];			
			$param = $datos;
			
			
			$param['criterio'] = 'por_codigo';
			$resp = $this->ConsultaDefHistorico($param);
			if($resp===false){return false;}
			if(!$resp->RecordCount()){
					$mensaje = "<b>ERROR:</b> No se encontro la información de la fase !";
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;
			}			
			$this->ordenfase = $resp->fields['ordenfase'];
			$this->denhist = $resp->fields['denhist'];
			$this->abvrhist = $resp->fields['abvrhist'];
			
			$param['criterio'] = 'por_fase';
			$respEp1 = $this->ConsultaPry($param);
			if($respEp1===false){return false;}
			if(!$respEp1['rs']->RecordCount()){
					$mensaje = "<b>ERROR:</b> No existen proyectos o acciónes centralizadas para este ejercicio !";
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;
			}
			
			
			$param['criterio'] = 'por_ep1';
			$param['nroh'] = $this->nroh;
			$resp = $this->ConsultaFases($param);
			if($resp===false){return false;}
			if($resp->RecordCount()){
					$mensaje = "<b>ERROR:</b> Ya esta fase fué generada !";
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;
			}
									
			$resp = $this->ChkGenFase($param);
			if($resp===false){return false;}
					
			$resp = $this->ControlFlujoFase($param);
			if($resp===false){return false;}
			
			$this->io_sql->begin_transaction();
			
			$ls_sql = " INSERT INTO fop_hep1(   codemp, anopresup, codplangob, codestpro1, estcla, nroh, denestpro1, 
												descripry, estint, codestpry, codsitprepry, considapp, considleea, 
												fecinipry, fecfinpry, montotpry, codamb, coddirect, codobj, codestrat, 
												codpol, objestrainst, objespec, enunprob, indsitact, fecultdat, 
												forind, fuenteind, indsitu, anoimpact, mesimpact, tipresul, desresul, 
												codunimed, cantidadmeta, codbenpry, usureg, codorgreg, fecreg, 
												nrobenfem, nrobenmas, nrototbenef, codagendadec, desexplora, 
												plancontinge, descplancont, nroesempfem, nroesempmas, nroesemptot, 
												nroempfofem, nroempfomas, nroempfotot, ejedes, nucdesend, zedes, 
												comind, latgra, latmin, latseg, longra, lonmin, lonseg, codsec, 
												codsubsec, cireqcont, cicontges, ciconflic, cicodorgreqcont, 
												cicodorgcontges, cicodorgconflic, cidesreqcont, cidescontges, 
												cidesconflic, codperger, codperreg, codperaut, uniger, unireg, 
												uniaut, carger, carreg, caraut, faxger, faxreg, faxaut, telger, 
												telreg, telaut, fecmod, usumod, nroesempindtot, nroempindfotot, 
												obsbenef, viabsocpol, viabtec, viabeconfinan, viabamb, genpoa, 
												usuregpoa, fecregpoa, usuregh, fecregh)
									SELECT      codemp, anopresup, codplangob, codestpro1, estcla, '".$this->nroh."', denestpro1, 
												descripry, estint, codestpry, codsitprepry, considapp, considleea, 
												fecinipry, fecfinpry, montotpry, codamb, coddirect, codobj, codestrat, 
												codpol, objestrainst, objespec, enunprob, indsitact, fecultdat, 
												forind, fuenteind, indsitu, anoimpact, mesimpact, tipresul, desresul, 
												codunimed, cantidadmeta, codbenpry, usureg, codorgreg, fecreg, 
												nrobenfem, nrobenmas, nrototbenef, codagendadec, desexplora, 
												plancontinge, descplancont, nroesempfem, nroesempmas, nroesemptot, 
												nroempfofem, nroempfomas, nroempfotot, ejedes, nucdesend, zedes, 
												comind, latgra, latmin, latseg, longra, lonmin, lonseg, codsec, 
												codsubsec, cireqcont, cicontges, ciconflic, cicodorgreqcont, 
												cicodorgcontges, cicodorgconflic, cidesreqcont, cidescontges, 
												cidesconflic, codperger, codperreg, codperaut, uniger, unireg, 
												uniaut, carger, carreg, caraut, faxger, faxreg, faxaut, telger, 
												telreg, telaut, fecmod, usumod, nroesempindtot, nroempindfotot, 
												obsbenef, viabsocpol, viabtec, viabeconfinan, viabamb, genpoa, 
												usuregpoa, fecregpoa,'".$_SESSION['la_logusr']."' ,'".date("Y/m/d H:i:s")."'
									FROM fop_ep1
									WHERE codemp = '".$this->ls_codemp."'								    
									  AND codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 IN ( 
												SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 
												FROM fop_dt_ep3
											   WHERE anopresup ='".$param['anopresup']."'
												 AND codplangob ='".$param['codplangob']."'
									    ) ";
   
			$rs_data=$this->io_sql->select($ls_sql);
				
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $this->io_sql->rollback();
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> No se pudo generar estructuras presupuestarias de nivel 1.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}
			$this->CantEp1 = $this->io_sql->conn->Affected_Rows();
			
			$ls_sql = " INSERT INTO fop_estados_x_hep1( codemp, anopresup, codplangob, codestpro1, estcla, codpai, codest, 
														nroh, usuregh, fecregh)
						SELECT codemp, anopresup, codplangob, codestpro1, estcla, codpai, codest, 
							   '".$this->nroh."', '".$_SESSION['la_logusr']."' ,'".date("Y/m/d H:i:s")."'
						FROM fop_estados_x_ep1					
						WHERE codemp = '".$this->ls_codemp."'								    
						  AND codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 IN ( 
									SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 
									FROM fop_dt_ep3
								   WHERE anopresup ='".$param['anopresup']."'
									 AND codplangob ='".$param['codplangob']."'
							) ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}
			
			
			$ls_sql = " INSERT INTO fop_municipios_x_hep1( codemp, anopresup, codplangob, codestpro1, estcla, codpai, codest, 
                                   codmun, nroh, usuregh, fecregh)
							SELECT codemp, anopresup, codplangob, codestpro1, estcla, codpai, codest, 
								   codmun, '".$this->nroh."', '".$_SESSION['la_logusr']."' ,'".date("Y/m/d H:i:s")."'
							FROM fop_municipios_x_ep1			
						   WHERE codemp = '".$this->ls_codemp."'								    
						     AND codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 IN ( 
									SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1 
									FROM fop_dt_ep3
								   WHERE anopresup ='".$param['anopresup']."'
									 AND codplangob ='".$param['codplangob']."'
							   ) ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}
			
			$ls_sql = " INSERT INTO fop_hep2( codemp, anopresup, codplangob, codestpro1, codestpro2, estcla, 
											  denestpro2, nroh, feciniep2, fecfinep2, coduniadm, desbienserv, 
											  codunimedep2, canmetep2, pfis_est, pfis_1, pfis_2, pfis_3, pfis_4, 
											  pfis_totact, pfis_totsig, pfis_totpost, pfin_est, pfin_1, pfin_2, 
											  pfin_3, pfin_4, pfin_totact, pfin_totsig, pfin_totpost, pfin_monrecord, 
											  pfin_monotrrec, pfin_monrecext, pfin_montotep2, fecreg, usureg, 
											  fecmod, usumod, pondera, usuregh, fecregh)
								SELECT codemp, anopresup, codplangob, codestpro1, codestpro2, estcla, 
									   denestpro2, '".$this->nroh."', feciniep2, fecfinep2, coduniadm, desbienserv, 
									   codunimedep2, canmetep2, pfis_est, pfis_1, pfis_2, pfis_3, pfis_4, 
									   pfis_totact, pfis_totsig, pfis_totpost, pfin_est, pfin_1, pfin_2, 
									   pfin_3, pfin_4, pfin_totact, pfin_totsig, pfin_totpost, pfin_monrecord, 
									   pfin_monotrrec, pfin_monrecext, pfin_montotep2, fecreg, usureg, 
									   fecmod, usumod, pondera, '".$_SESSION['la_logusr']."' ,'".date("Y/m/d H:i:s")."'
								FROM fop_ep2
							    WHERE codemp = '".$this->ls_codemp."'								    
								  AND codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2 IN ( 
											SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2 
											FROM fop_dt_ep3
										   WHERE anopresup ='".$param['anopresup']."'
											 AND codplangob ='".$param['codplangob']."'
									) ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $this->io_sql->rollback();
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> No se pudo generar estructuras presupuestarias de nivel 2.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}
			$this->CantEp2 = $this->io_sql->conn->Affected_Rows();
						
			$ls_sql = " INSERT INTO fop_hep3( codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
											  codestpro3, nroh, denestpro3, coduniadm, fecreg, usureg, fecmod, 
											  usumod, usuregh, fecregh)
								SELECT codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
									   codestpro3, '".$this->nroh."', denestpro3, coduniadm, fecreg, usureg, fecmod, 
									   usumod, '".$_SESSION['la_logusr']."' ,'".date("Y/m/d H:i:s")."'
								FROM fop_ep3
								WHERE codemp = '".$this->ls_codemp."'								    
								  AND codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2||'|'||codestpro3 IN ( 
											SELECT DISTINCT codemp||'|'||anopresup||'|'||codplangob||'|'||estcla||'|'||codestpro1||'|'||codestpro2||'|'||codestpro3 
											FROM fop_dt_ep3
										   WHERE anopresup ='".$param['anopresup']."'
											 AND codplangob ='".$param['codplangob']."'
									) ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $this->io_sql->rollback();
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> No se pudo generar estructuras presupuestarias de nivel 3.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}
			$this->CantEp3 = $this->io_sql->conn->Affected_Rows();
			
			$ls_sql = " INSERT INTO fop_hep3_actividades(
										codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
										codestpro3, codact, nroh, actividad, fecreg, usureg, indpriniv, 
										indsegniv, supact, metact, codunimedact, desubigeoact, codpaiact, 
										codestact, codciuact, pfs1, pfs2, pfs3, pfs4, usuregh, fecregh)
							SELECT codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
								   codestpro3, codact, '".$this->nroh."', actividad, fecreg, usureg, indpriniv, 
								   indsegniv, supact, metact, codunimedact, desubigeoact, codpaiact, 
								   codestact, codciuact, pfs1, pfs2, pfs3, pfs4, '".$_SESSION['la_logusr']."' ,'".date("Y/m/d H:i:s")."'
							FROM fop_ep3_actividades
							WHERE codemp = '".$this->ls_codemp."'
							  AND anopresup ='".$param['anopresup']."'
							  AND codplangob ='".$param['codplangob']."' ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}
			
						
			$ls_sql = " INSERT INTO fop_dt_hep3(
												codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
												codestpro3, codact, spg_cuenta, nroh, monrecprop, monotrorec, 
												feciniact, fecfinact, codunimed, meta, codpai, codest, codciu, 
												pfs_t1, pfs_t2, pfs_t3, pfs_t4, pfn_t1, pfn_t2, pfn_t3, pfn_t4, 
												fecreg, usureg, fecmod, usumod, usuregh, fecregh)
							SELECT codemp, anopresup, codplangob, codestpro1, estcla, codestpro2, 
								   codestpro3, codact, spg_cuenta, '".$this->nroh."', monrecprop, monotrorec, 
								   feciniact, fecfinact, codunimed, meta, codpai, codest, codciu, 
								   pfs_t1, pfs_t2, pfs_t3, pfs_t4, pfn_t1, pfn_t2, pfn_t3, pfn_t4, 
								   fecreg, usureg, fecmod, usumod, '".$_SESSION['la_logusr']."' ,'".date("Y/m/d H:i:s")."'
							FROM fop_dt_ep3
							WHERE codemp = '".$this->ls_codemp."'
							  AND anopresup ='".$param['anopresup']."'
							  AND codplangob ='".$param['codplangob']."' ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}
			
			if($this->io_sql->conn->Affected_Rows()<1){
			        $this->io_sql->rollback();
					$mensaje = '<b>ADVERTENCIA:</b> Ninguna fila fué afectada ! <br> No se pudo generar ningún detalle presupuestario para esta fase.
								<br><br><b>METODO:</b> '.$metodo;
					$this->io_conexiones->mensajes_ajax($mensaje);				
					return false;
			}
			$this->CantDtEp3 = $this->io_sql->conn->Affected_Rows();
			
			
			$ls_sql = "INSERT INTO fop_fases(codemp, codplangob, anopresup, 
			                                 coddefhist, usuregh, fecregh)
						    VALUES ('".$this->ls_codemp."', 
							        '".$param['codplangob']."', 
									'".$param['anopresup']."', 
									'".$this->nroh."', 
									'".$_SESSION['la_logusr']."', 
									'".date("Y/m/d H:i:s")."'); ";
   
			$rs_data=$this->io_sql->select($ls_sql);	
			if($rs_data==false){
			    $this->io_sql->rollback();				
				$metodo = 'GenFasePresup';
				$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;				
			}		
			
			
			$mensaje = "Se generaron: 
					   <b>".$_SESSION["la_empresa"]['nomestpro1'].":</b> ".$this->CantEp1."
					   <b>".$_SESSION["la_empresa"]['nomestpro2'].":</b> ".$this->CantEp2."
					   <b>".$_SESSION["la_empresa"]['nomestpro3'].":</b> ".$this->CantEp3."
					   <b> Detalle de cuentas:</b> ".$this->CantDtEp3."
					   ";	
			//$this->io_conexiones->mensajes_ajax($mensaje);				
			//$this->io_sql->rollback();
			//return false;
			
			$this->io_sql->commit();					
			//$mensaje = "La operación se realizó exitosamente ";					
			$this->io_conexiones->mensajes_ajax($mensaje);	
			
			return true;
			
	}
	
	
	function ConsultaDefHistorico($prop=array()){	
		
		switch($prop['criterio']){
							
			case "por_listado":	
					 $ls_sql="SELECT *
							  FROM fop_defhistorico
							 WHERE codemp='".$this->ls_codemp."'  
							 ORDER BY ordenfase ";
					break;
			
			case "por_codigo": 					
					$ls_sql="SELECT codemp, coddefhist, denhist, abvrhist,ordenfase
							  FROM fop_defhistorico
							 WHERE codemp='".$this->ls_codemp."' 
							   AND coddefhist='".$prop["coddefhist"]."' ";
					break;
			
			case "por_combo":	
					 $ls_sql="SELECT codemp, coddefhist, denhist, abvrhist,ordenfase
							  FROM fop_defhistorico
							 WHERE codemp='".$this->ls_codemp."'  
							   AND coddefhist IN (SELECT DISTINCT nroh 
													FROM fop_hep1 
												   WHERE anopresup ='".$param['anopresup']."'
													 AND codplangob ='".$param['codplangob']."')";
					break;
					
			case "por_ordenfase":	
					 $ls_sql=" SELECT *
							     FROM fop_defhistorico dh						   
							    WHERE dh.codemp='".$this->ls_codemp."'
							      AND dh.ordenfase = '".$this->ordenfase."'
							 ";
					break;
					
			case "por_ultimafase":	
					 $ls_sql=" SELECT *
							     FROM fop_defhistorico dh						   
							    WHERE dh.codemp='".$this->ls_codemp."'							      
								ORDER BY dh.ordenfase
								DESC LIMIT 1
							 ";
					break;
						
		}
						
		$rs=$this->io_sql->select($ls_sql);
				
		if($rs===false){
			$metodo = 'ConsultaDefHistorico';
			$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR->:</b><br>'.$this->io_sql->message;					
			$this->io_conexiones->mensajes_ajax($mensaje);
			return false;					
		}		
						
		return $rs;
	}
	
	
	function ConsultaFases($prop=array()){	
		
		switch($prop['criterio']){
							
			case "por_ep1":	
					 $ls_sql="SELECT DISTINCT nroh
							  FROM fop_hep1
							 WHERE codemp='".$this->ls_codemp."'
							   AND anopresup = '".$prop['anopresup']."'
							   AND codplangob = '".$prop['codplangob']."'
							   AND nroh = '".$prop['nroh']."' ";
					break;
			
			case "por_ultimo_mov":	
					 $ls_sql=" SELECT DISTINCT hep1.nroh,dh.ordenfase,dh.abvrhist,dh.denhist
							     FROM fop_hep1 hep1
							    INNER JOIN fop_defhistorico dh ON hep1.nroh = dh.coddefhist
								INNER JOIN fop_fases f ON f.coddefhist = dh.coddefhist
							    WHERE hep1.codemp='".$this->ls_codemp."'
							      AND hep1.anopresup = '".$prop['anopresup']."'
							      AND hep1.codplangob = '".$prop['codplangob']."'
						        ORDER BY 2 DESC LIMIT 1
							 ";
					break;
					
			case "por_fases":	
					 $ls_sql="  SELECT *
								FROM fop_fases f
								INNER JOIN fop_defhistorico dh ON f.coddefhist = dh.coddefhist
								WHERE f.codemp='".$this->ls_codemp."'
							      AND f.anopresup = '".$prop['anopresup']."'
							      AND f.codplangob = '".$prop['codplangob']."'
								ORDER BY dh.ordenfase
							 ";
					break;
					
			
			
						
		}
				
		$rs=$this->io_sql->select($ls_sql);
				
		if($rs===false){
			$metodo = 'ConsultaFases';
			$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR->:</b><br>'.$this->io_sql->message;					
			$this->io_conexiones->mensajes_ajax($mensaje);
			return false;					
		}		
						
		return $rs;
	}
	
	function FaseCargaActual($datos=array()){
			
			if(!$datos['anopresup'] or !$datos['codplangob'])
			{				
				$mensaje = 'Faltan datos para buscar la fase de carga actual';
				if($this->ajax){$this->io_conexiones->mensajes_ajax($mensaje);}
				else{$this->io_mensajes->message($mensaje,2);}																
				return false;
			}
			
			$this->BloqCarga = 0;
			
			$datos['criterio'] = 'por_ultimo_mov';
			$resp = $this->ConsultaFases($datos);
			if($resp===false){return false;}
			if(!$resp->RecordCount()){					
					$this->ordenfase = 0;					
			}
			else{		        
				$this->ordenfase = ($resp->fields['ordenfase']+1);
			}
			
			$datos['criterio'] = 'por_ultimafase';
			$resp2 = $this->ConsultaDefHistorico($datos);
			if($resp2===false){return false;}
			if(!$resp2->RecordCount()){			
				$mensaje = '<b>ERROR DE FASE DE CARGA:</b>'.
						   '<br> No se encontro la fase máxima de carga'.
						   '<br><b>METODO:</b> FaseCargaActual ';
				if($this->ajax){$this->io_conexiones->mensajes_ajax($mensaje);}
				else{$this->io_mensajes->message($mensaje,2);}																	
				return false;
			}
			$this->maxordenfase = $resp2->fields['ordenfase'];
			
			if($this->maxordenfase<$this->ordenfase){				
				$this->BloqCarga = 1;		
				$mensaje = '<b>ADVERTENCIA DE FASE DE CARGA:</b>'.
						   '<br> Las fases estan completas. Se bloqueará la carga para el año seleccionado'.
						   '<br><b>METODO:</b> FaseCargaActual ';
				if($this->ajax){$this->io_conexiones->mensajes_ajax($mensaje);}
				else{$this->io_mensajes->message($mensaje,2);}
				
							
				$this->coddefhist = '';
				$this->denhist = '';
				$this->abvrhist = '';
				$this->ordenfase = '';
				
				$this->io_conexiones->dato_js('hajaxcoddefhist','');
				$this->io_conexiones->dato_js('hajaxdenhist','');
				$this->io_conexiones->dato_js('hajaxabvrhist','');
				$this->io_conexiones->dato_js('hajaxordenfase','');				
			    $this->io_conexiones->dato_js('hajaxbloqcarga',$this->BloqCarga);
					
				return true;
			}
			
			$datos['criterio'] = 'por_ordenfase';
			$resp = $this->ConsultaDefHistorico($datos);
			if($resp===false){return false;}
			if(!$resp->RecordCount()){			
				$mensaje = '<b>ERROR DE FASE DE CARGA:</b>'.
						   '<br> No se encontro la fase de carga actual'.
						   '<br><b>METODO:</b> FaseCargaActual ';
				if($this->ajax){$this->io_conexiones->mensajes_ajax($mensaje);}
				else{$this->io_mensajes->message($mensaje,2);}																	
				return false;
			}
			
			$this->maxordenfase = $resp2->fields['ordenfase'];			
			$this->coddefhist = $resp->fields['coddefhist'];
			$this->denhist = $resp->fields['denhist'];
			$this->abvrhist = $resp->fields['abvrhist'];
			$this->ordenfase = $resp->fields['ordenfase'];
						
			if($this->ajax){	
			    $this->io_conexiones->dato_js('hajaxcoddefhist',$this->coddefhist);
				$this->io_conexiones->dato_js('hajaxdenhist',$this->denhist);
				$this->io_conexiones->dato_js('hajaxabvrhist',$this->abvrhist);
				$this->io_conexiones->dato_js('hajaxordenfase',$this->ordenfase);				
			    $this->io_conexiones->dato_js('hajaxbloqcarga',$this->BloqCarga);				
			}	
			
			return true;
	}
	
	function ControlFlujoFase($datos=array()){
			
			if($this->ordenfase=="")
			{				
				$mensaje = '<b>ERROR DE CONTROL DE FLUJO: </b> Fase Inválida: '.$this->abvrhist.
						   '<br>Se necesita el nivel u orden de la fase que se quiere generar'.
						   '<br><b>METODO:</b> ControlFlujoFase ';
				$this->io_conexiones->mensajes_ajax($mensaje);																	
				return false;
			}
			
			$metodo = 'ControlFlujoFase';
			$this->nroh = $datos['coddefhist'];			
			
			
			$datos['criterio'] = 'por_ultimo_mov';
			$resp = $this->ConsultaFases($datos);
			if($resp===false){return false;}
			if(!$resp->RecordCount()){
					$this->nrohHist = -1;
					$this->ordenfaseHist = -1;					
			}
			else{   
			        $this->nrohHist = $resp->fields['nroh'];
					$this->ordenfaseHist = $resp->fields['ordenfase'];
			}
			
			
			switch($this->ProcGenFase){
			
					case 'GENERAR':
					
						if($this->ordenfaseHist > $this->ordenfase){
								$mensaje = '<b>ERROR DE DATOS: </b> Fase Inválida: '.$this->abvrhist.
										   '<br>Ya se han generado fases posteriores '.
										   '<br><b>METODO:</b> ControlFlujoFase ';					
								$this->io_conexiones->mensajes_ajax($mensaje);																	
								return false;
						}
						
						if($this->ordenfaseHist == $this->ordenfase){
								$mensaje = '<b>ERROR DE DATOS: </b> Fase Inválida: '.$this->abvrhist.
										   '<br>La fase ya fué generada '.
										   '<br><b>METODO:</b> ControlFlujoFase ';					
								$this->io_conexiones->mensajes_ajax($mensaje);																	
								return false;
						}			
						
						if(($this->ordenfaseHist < $this->ordenfase) and (($this->ordenfase-$this->ordenfaseHist)>1)){
								$mensaje = '<b>ERROR DE DATOS: </b> Fase Inválida: '.$this->abvrhist.
										   '<br>Deben generarse fases anteriores primero'.
										   '<br><b>METODO:</b> ControlFlujoFase ';					
								$this->io_conexiones->mensajes_ajax($mensaje);																	
								return false;
						}
						break;
						
					
					case 'ELIMINAR':
					
						if($this->ordenfaseHist > $this->ordenfase){
								$mensaje = '<b>ERROR DE DATOS: </b> Fase Inválida: '.$this->abvrhist.
										   '<br>No se pueden eliminar fases intermedias o anteriores a la última generada '.
										   '<br><b>METODO:</b> ControlFlujoFase ';					
								$this->io_conexiones->mensajes_ajax($mensaje);																	
								return false;
						}
						
											
						if($this->ordenfaseHist < $this->ordenfase){
								$mensaje = '<b>ERROR DE DATOS: </b> Fase Inválida: '.$this->abvrhist.
										   '<br>Solo se puede eliminar una fase si es la última generada'.
										   '<br><b>METODO:</b> ControlFlujoFase ';					
								$this->io_conexiones->mensajes_ajax($mensaje);																	
								return false;
						}
						break;
			
			
			
			}
			
			
			
			
			return true;
	}
	
	function ComboHist($opciones=array()){

				if(!$opciones['nombre_combo']){$nombre_combo = 'sel_defhist';}else{$nombre_combo = $opciones['nombre_combo'];}
				if(!$opciones['coddefhist']){$carga = ' Seleccione '; $id_carga = '';}
				else{	
				    $opciones['criterio'] = 'por_codigo';
					$ofic = $this->ConsultaTipoHistorico($opciones,'por_codigo');
					if($ofic===false){return false;}
					if(!$ofic['cantidad']){
						$mensaje = '<b>ERROR DE DATOS: </b> No existe el Código: '.$opciones['coddefhist'].
						   		   '<br><br><b>METODO:</b> ComboHist ';					
						$this->io_conexiones->mensajes_ajax($mensaje);																	
						return false;	
					}
					$carga = $ofic['fila']['denhist'];				  
					$id_carga = $opciones['coddefhist'];
				}			
				
				$opciones['criterio'] = 'por_listado';							
				$resp = $this->ConsultaDefHistorico($opciones,'por_listado');
				if($resp===false){return false;}
				
				$combo = '<select name="'.$nombre_combo.'" id="'.$nombre_combo.'" onChange="'.$opciones['funcion_js'].'">
				              <option value="'.$id_carga.'">- '.$carga.' -</option>';
				
				foreach($resp as $dato) { 				
					$combo .= '<option value="'.$dato["coddefhist"].'">'.'('.$dato["abvrhist"].') '.$dato["denhist"].'</option>';								
				}
				$combo .= '</select>';
																							
				return $combo;
	}
	
	
	function  EliminaFasePresup($datos=array()){
				
				if(!$datos['anopresup'] or !$datos['codplangob'])
				{				
					$mensaje = 'Faltan datos para poder generar una fase histórica';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				if(!$datos['coddefhist'])
				{				
					$mensaje = 'Debe indicar cual fase generar';
					$this->io_conexiones->mensajes_ajax($mensaje);																	
					return false;
				}
				
				$this->ProcGenFase='ELIMINAR';
				
				$this->nroh = $datos['coddefhist'];	
				
				$datos['criterio'] = 'por_ep1';
				$datos['nroh'] = $this->nroh;
				$resp = $this->ConsultaFases($datos);
				if($resp===false){return false;}
				if(!$resp->RecordCount()){
						$mensaje = "<b>ERROR:</b> Esta fase no ha sido generada generada todavía !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}
				
				$datos['criterio'] = 'por_codigo';
				$resp = $this->ConsultaDefHistorico($datos);
				if($resp===false){return false;}
				if(!$resp->RecordCount()){
						$mensaje = "<b>ERROR:</b> No se encontro la información de la fase !";
						$this->io_conexiones->mensajes_ajax($mensaje);
						return false;
				}			
				$this->ordenfase = $resp->fields['ordenfase'];
				
				$resp = $this->ControlFlujoFase($datos);
			    if($resp===false){return false;}
				
				$this->io_sql->begin_transaction();
				
				$ls_sql = "
							DELETE FROM fop_dt_hep3 
							WHERE codemp ='".$this->ls_codemp."' 
							  AND  anopresup ='".$datos['anopresup']."'
							  AND codplangob ='".$datos['codplangob']."'
							  AND nroh ='".$this->nroh."';
							
							DELETE FROM fop_hep3_actividades 
							WHERE codemp ='".$this->ls_codemp."' 
							  AND  anopresup ='".$datos['anopresup']."'
							  AND codplangob ='".$datos['codplangob']."'
							  AND nroh ='".$this->nroh."';
							
							DELETE FROM fop_hep3 
							WHERE codemp ='".$this->ls_codemp."' 
							  AND  anopresup ='".$datos['anopresup']."'
							  AND codplangob ='".$datos['codplangob']."'
							  AND nroh ='".$this->nroh."';
							
							 DELETE FROM fop_hep2 
							WHERE codemp ='".$this->ls_codemp."' 
							  AND  anopresup ='".$datos['anopresup']."'
							  AND codplangob ='".$datos['codplangob']."'
							  AND nroh ='".$this->nroh."';
							
							 DELETE FROM fop_municipios_x_hep1 
							WHERE codemp ='".$this->ls_codemp."' 
							  AND  anopresup ='".$datos['anopresup']."'
							  AND codplangob ='".$datos['codplangob']."'
							  AND nroh ='".$this->nroh."';
							
							 DELETE FROM fop_estados_x_hep1 
							WHERE codemp ='".$this->ls_codemp."' 
							  AND  anopresup ='".$datos['anopresup']."'
							  AND codplangob ='".$datos['codplangob']."'
							  AND nroh ='".$this->nroh."';
							
							 DELETE FROM fop_hep1 
							WHERE codemp ='".$this->ls_codemp."' 
							  AND anopresup ='".$datos['anopresup']."'
							  AND codplangob ='".$datos['codplangob']."'
							  AND nroh ='".$this->nroh."';
							  
							 DELETE FROM fop_fases
						           WHERE codemp ='".$this->ls_codemp."'
							         AND anopresup ='".$datos['anopresup']."' 
									 AND codplangob ='".$datos['codplangob']."' 
									 AND coddefhist ='".$this->nroh."'
				
				";
				
				$this->rs_data=$this->io_sql->select($ls_sql);			
				
				if($this->rs_data===false)
				{					
					$this->io_sql->rollback();
					$metodo = 'EliminaFasePresup';
					$mensaje = '<b>CLASE:</b> '.get_class($this).' <br><b>METODO:</b> '.$metodo.' <br><b>ERROR-></b><br>'.$this->io_sql->message;					
					$this->io_conexiones->mensajes_ajax($mensaje);
					return false;					
				}
				
				$this->io_sql->commit();
				return true;
	
	}
	
	
	function EncabezadoDetalleActiv($parametro=array()){		
		
			
		$encabezado = '<p  style="text-align:center;"><table cellspacing="0" cellpadding="1" border="1">
					<thead>
						<tr bgcolor="'.$this->RepParam['encabezado2']['color_fondo'].'" color="'.$this->RepParam['encabezado2']['color_letra'].'" >
						  <td colspan="4" align="center" width="'.$this->RepParam['ancho']['total'].'">
							<font size="12">					            
								<b>DETALLE DE ACTIVIDADES</b>								
							</font>
						  </td>
					   </tr>
						<tr bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" color="'.$this->RepParam['encabezado']['color_letra'].'" height="6">						
							<td align="center" width="'.$this->RepParam['ancho'][1].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> ACTIVIDAD</font></td>
							<td align="center" width="'.$this->RepParam['ancho'][2].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> UNIDAD </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][3].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> META </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][4].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> IND </font></td>
						    <td align="center" width="'.$this->RepParam['ancho'][5].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIS I </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][6].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIS II </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][7].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIS III </font></td>
						    <td align="center" width="'.$this->RepParam['ancho'][8].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIS IV </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][9].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> CUENTA </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][10].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIN I </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][11].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIN II </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][12].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIN III </font></td>
						    <td align="center" width="'.$this->RepParam['ancho'][13].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> FIN IV </font></td>
							<td align="center" width="'.$this->RepParam['ancho'][14].'" bgcolor="'.$this->RepParam['encabezado']['color_fondo'].'" ><font size="'.$this->RepParam['encabezado']['tamaño'].'"> SUBTOT </font></td>
						</tr>							
					</thead>';
					
		return $encabezado; 
	}
	
	function FinTablaDetalleActiv($datos=array()){

			$fin_tabla = '   <tr>
							   <td colspan="2"  width="'.($this->RepParam['ancho'][1]+$this->RepParam['ancho'][2]+$this->RepParam['ancho'][3]+$this->RepParam['ancho'][4]+$this->RepParam['ancho'][5]+$this->RepParam['ancho'][6]+$this->RepParam['ancho'][7]+$this->RepParam['ancho'][8]+$this->RepParam['ancho'][9]).'" align="right">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>TOTALES:</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][10]).'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_tot'].'">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>'.number_format($this->TotPF1,2,',','.').'</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][11]).'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_tot'].'">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>'.number_format($this->TotPF2,2,',','.').'</b></font>
							   </td>							  
							   <td width="'.($this->RepParam['ancho'][12]).'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_tot'].'">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>'.number_format($this->TotPF3,2,',','.').'</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][13]).'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_tot'].'">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>'.number_format($this->TotPF4,2,',','.').'</b></font>
							   </td>
							   <td width="'.($this->RepParam['ancho'][14]).'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_tot'].'">
								 <font size="'.$this->RepParam['encabezado']['tamaño'].'"> <b>'.number_format($this->Total,2,',','.').'</b></font>
							   </td>
							 </tr>							 
						   </table></p>';
			return $fin_tabla; 
	}
	
	function FilaDetalleActiv($datos,$datosAct,$RowSpan,$nroFila){			
			
			$datos = $this->FormatLonCodEstPro($datos);
			
			
			if($nroFila==1){
				
				$filas = '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][1].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datosAct['actividad'].'</font></td>
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][2].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datosAct['desunimed'].'</font></td>
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][3].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datosAct['metact'],2,',','.').'</font></td>
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][4].'" align="justify" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datosAct['indpriniv'].'</font></td>
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][5].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datosAct['pfs1'],2,',','.').'</font></td>
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][6].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datosAct['pfs2'],2,',','.').'</font></td>
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][7].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datosAct['pfs3'],2,',','.').'</font></td>
								<td rowspan="'.$RowSpan.'" width="'.$this->RepParam['ancho'][8].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datosAct['pfs4'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][9].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"><b>'.$datos['spg_cuenta'].'</b></font></td>
								<td width="'.$this->RepParam['ancho'][10].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t1'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][11].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t2'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][12].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t3'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][13].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t4'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][14].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['subtot'].'</font></td>
						 </tr>';
			}
			else{
			
				$filas = '<tr bgcolor="'.$this->RepParam['fila']['color_fondo'].'" color="'.$this->RepParam['fila']['color_letra'].'">																							
								<td width="'.$this->RepParam['ancho'][9].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"><b>'.$datos['spg_cuenta'].'</b></font></td>
								<td width="'.$this->RepParam['ancho'][10].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t1'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][11].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t2'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][12].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t3'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][13].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.number_format($datos['pfn_t4'],2,',','.').'</font></td>
								<td width="'.$this->RepParam['ancho'][14].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo'].'"><font size="'.$this->RepParam['fila']['tamaño'].'">'.$datos['subtot'].'</font></td>
						 </tr>';
			
			}
			
			return $filas;
	}
	
	function FilaSubTotActiv($datos=array()){			
			
																																											
			$filas = '<tr bgcolor="'.$this->RepParam['fila']['color_fondo_subtot'].'" color="'.$this->RepParam['fila']['color_letra'].'">																						
							<td width="'.$this->RepParam['ancho'][9].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_subtot'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"> <b>SUB TOT:</b> </font></td>
							<td width="'.$this->RepParam['ancho'][10].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_subtot'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"><b>'.number_format($this->SubTotPF1,2,',','.').'</b></font></td>
							<td width="'.$this->RepParam['ancho'][11].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_subtot'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"><b>'.number_format($this->SubTotPF2,2,',','.').'</b></font></td>
							<td width="'.$this->RepParam['ancho'][12].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_subtot'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"><b>'.number_format($this->SubTotPF3,2,',','.').'</b></font></td>
							<td width="'.$this->RepParam['ancho'][13].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_subtot'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"><b>'.number_format($this->SubTotPF4,2,',','.').'</b></font></td>
							<td width="'.$this->RepParam['ancho'][14].'" align="right" bgcolor="'.$this->RepParam['fila']['color_fondo_subtot'].'"><font size="'.$this->RepParam['fila']['tamaño'].'"><b>'.number_format($this->SubTotal,2,',','.').'</b></font></td>
					 </tr>';
			
			
			
			return $filas;
	}
	
	function RepDetalleActiv($datos=array()){
			
			if(!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codestpro2'] or !$datos['codestpro3'])
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			if($datos['tiporep']=='fases' and (!$datos['anopresup'] or !$datos['codplangob'] or !$datos['codestpro1'] or !$datos['estcla'] or !$datos['codestpro2'] or !$datos['codestpro3'] or !$datos['nroh']))
			{				
				$mensaje = 'Faltan datos para poder generar el Reporte de fase.';
				$this->io_mensajes->message($mensaje);																	
				return false;
			}
			
			//return $this->EncabezadoDetalleActiv().$this->FinTablaDetalleActiv();
			
			$datos['criterio'] = "por_codigo";
			if($datos['tiporep']=='fases'){$act = $this->ConsultaActividadesFases($datos);}
			else{$act = $this->ConsultaActividades($datos);}
			
			$this->TotPF1 = 0;
			$this->TotPF2 = 0;
			$this->TotPF3 = 0;
			$this->TotPF4 = 0;
			$this->Total = 0;
			
			foreach($act['rs'] as $datosAct){					
					
					$datos['criterio'] = "por_actividad";
					$datos['codact'] = $datosAct['codact'];
					if($datos['tiporep']=='fases'){$spg = $this->ConsultaDtEp3Fases($datos);}
					else{$spg = $this->ConsultaDtEp3($datos);}
					
					if($spg['rs']===false){return false;}			
					if(!$spg['rs']->RecordCount()){continue;}
					
					//El rowspan de cada fila de actividad es la cantidad de detalles de cuentas mas uno del subtotal que es es otra fila
					$RowSpan = $spg['rs']->RecordCount() + 1;
					$nroFila = 1;
					$total=0;
					$subtotrecprop=0;
					$subtototrorec=0;
					
					$this->SubTotPF1 = 0;
					$this->SubTotPF2 = 0;
					$this->SubTotPF3 = 0;
					$this->SubTotPF4 = 0;
					$this->SubTotal = 0;
					
					foreach($spg['rs'] as $datosSPG){	
							
							$datosSPG['subtot'] = $datosSPG['monrecprop'] + $datosSPG['monotrorec'];
							
							$total += $datosSPG['subtot'];
							$this->SubTotal += $datosSPG['subtot'];
							$subtotrecprop += $datosSPG['monrecprop'];
							$subtototrorec += $datosSPG['monotrorec'];
							
							$this->SubTotPF1 += $datosSPG['pfn_t1'];
							$this->SubTotPF2 += $datosSPG['pfn_t2'];
							$this->SubTotPF3 += $datosSPG['pfn_t3'];
							$this->SubTotPF4 += $datosSPG['pfn_t4'];
							
							$this->TotPF1 += $datosSPG['pfn_t1'];
							$this->TotPF2 += $datosSPG['pfn_t2'];
							$this->TotPF3 += $datosSPG['pfn_t3'];
							$this->TotPF4 += $datosSPG['pfn_t4'];
							$this->Total  += $datosSPG['subtot'];
							
							$datosSPG['monrecprop']=number_format(abs($datosSPG['monrecprop']),2,',','.');
							$datosSPG['monotrorec']=number_format(abs($datosSPG['monotrorec']),2,',','.');
							$datosSPG['subtot']=number_format(abs($datosSPG['subtot']),2,',','.');
							$datosSPG['meta']=number_format(abs($datosSPG['meta']),2,',','.');
							$datosSPG['feciniact']=$this->io_conexiones->formatea_fecha_normal($datosSPG['feciniact']);
							$datosSPG['fecfinact']=$this->io_conexiones->formatea_fecha_normal($datosSPG['fecfinact']);				
															
							$filasSPG .= $this->FilaDetalleActiv($datosSPG,$datosAct,$RowSpan,$nroFila);
							$nroFila++;
																	
					}
					
					$filasSPG .= $this->FilaSubTotActiv();
			}
			
			
			$datosSPG['total'] = number_format($total,2,',','.');
			$datosSPG['subtotrecprop'] = number_format($subtotrecprop,2,',','.');
			$datosSPG['subtototrorec'] = number_format($subtototrorec,2,',','.');
			
			$InfoSPG = $this->EncabezadoDetalleActiv().$filasSPG.$this->FinTablaDetalleActiv($datosSPG);

			
			return $InfoSPG;
	
	}
	
	
	function ConsultaActividades($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
				
			    case "por_codigo":
									        
						$campos = " DISTINCT ON (ac.codact) ac.*,um.desunimed ";		
					    $sql_criterio = "  				                   
										   INNER JOIN fop_ep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
											LEFT JOIN fop_unimed um ON um.codemp = ac.codemp 
																   AND um.codunimed = ac.codunimedact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."'
											 AND dt.codestpro3  = '".$param['codestpro3']."'";
					    break;					
									
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_dt_ep3 dt ".$sql_criterio ." ORDER BY ac.codact ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaActividades';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	function ConsultaActividadesFases($param=array()){
	
			$campos = " * ";
			$criteriosql='';
			$criterio="";
			$param['criterio'] = $param['criterio']?$param['criterio']:'por_listado';
						
			switch($param['criterio']){
				
			    case "por_codigo":
									        
						$campos = " DISTINCT ON (ac.codact) ac.*,um.desunimed ";		
					    $sql_criterio = "  				                   
										   INNER JOIN fop_hep3_actividades ac ON ac.codemp = dt.codemp
										                                         AND ac.anopresup = dt.anopresup
										   							             AND ac.codplangob = dt.codplangob
																				 AND ac.codestpro1 = dt.codestpro1
																				 AND ac.estcla = dt.estcla
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codestpro2 = dt.codestpro2
																				 AND ac.codact = dt.codact
											LEFT JOIN fop_unimed um ON um.codemp = ac.codemp 
																   AND um.codunimed = ac.codunimedact
										   WHERE dt.codemp = '".$this->ls_codemp."'
											 AND dt.anopresup  = ".$param['anopresup']."
											 AND dt.codplangob  = ".$param['codplangob']."
											 AND dt.nroh  = '".$param['nroh']."'
											 AND dt.codestpro1  = '".$param['codestpro1']."'
											 AND dt.estcla  = '".$param['estcla']."'
											 AND dt.codestpro2  = '".$param['codestpro2']."'
											 AND dt.codestpro3  = '".$param['codestpro3']."'";
					    break;					
									
			}
								   
			$query_rs = "SELECT ".$campos." FROM fop_dt_hep3 dt ".$sql_criterio ." ORDER BY ac.codact ";			
			
			//echo $query_rs.'<br>';
			$clase = get_class($this);
			$metodo = 'ConsultaActividades';
			$param['arreglo'] = 'arreglo';
			$param['ajax'] = '0';
			$param['imprimir'] = '1';	
			$msj = '<b>CLASE:</b> '.$clase.' <br><b>METODO:</b> '.$metodo;	
			$respuesta = $this->io_conexiones->conexion($query_rs,$param,$msj);	
			return $respuesta;
	
	}
	
	
}//////////////////////////////////////////////////////////////******* FIN CLASE FORMULACIÓN *******/////////////////////////////////////////////////////////


?>
