<?php 
////////////////////////////////////////////////////////////////////////////////////////////////////////
//       Class : sigesp_copia_siv.php                                	                			  //    
// Description : Procesa la copia de datos del modulo de inventario									  //
////////////////////////////////////////////////////////////////////////////////////////////////////////
class sigesp_copia_sep {

	var $io_sql_origen;
	var $io_sql_destino;
	var $io_mensajes;
	var $io_funciones;
	var $io_validacion;
	var	$lo_archivo;
	var $ls_database_source;
	var $ls_dabatase_target;
	
	//-----------------------------------------------------------------------------------------------------------------------------------	
	function sigesp_copia_sep()
	{
		$ld_fecha=date("_d-m-Y");
		$ls_nombrearchivo="resultado/".$_SESSION["ls_data_des"]."_sep_result_".$ld_fecha.".txt";
		$this->lo_archivo=@fopen("$ls_nombrearchivo","a+");
	
		$this->ls_database_source=$_SESSION["ls_database"];
		$this->ls_dabatase_target=$_SESSION["ls_data_des"];		
		require_once("../shared/class_folder/sigesp_include_covensol.php");
		require_once("../shared/class_folder/class_mensajes.php");
		require_once("../shared/class_folder/class_sql_covensol.php");
		require_once("class_folder/class_validacion.php");
		
		$this->io_mensajes=new class_mensajes();
		$this->io_validacion      = new class_validacion();
		$io_conect	= new sigesp_include_covensol();
		$io_conexion_origen = $io_conect->uf_conectar();
		$io_conexion_destino  = $io_conect->uf_conectar_otra_bd ($_SESSION["ls_hostname"],$_SESSION["ls_login"],$_SESSION["ls_password"],$this->ls_dabatase_target,$_SESSION["ls_gestor"]); 
		$this->io_sql_origen = new class_sql_covensol($io_conexion_origen);
		$this->io_sql_destino = new class_sql_covensol($io_conexion_destino);
		
		global $ruta;		
		if($ruta==''){$ruta="../";}	
		require_once($ruta."shared/class_folder/sigesp_conexiones.php");
		$this->io_conexiones=new conexiones();
		
		$this->borrar_tabla = 0;
		$this->msjejec = "";
		$this->msjresultado = "";
		
	}// end function sigesp_copia_sep
	//-----------------------------------------------------------------------------------------------------------------------------------	


	function ue_copiar_sep_basico()
	{
		$lb_valido=true;
		if($this->lo_archivo){@fwrite($this->lo_archivo," \r\n".date('H:i:s').'.- Iniciando Apertura de Solicitud de Ejecucion Presupuestaria ... '." \r\n"." \r\n");}
		$this->io_sql_destino->begin_transaction();	
		$resp = $this->liberar_fk();
                if($resp===false){$this->io_sql_destino->rollback(); return false;}	
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_sigesp_cargos()<br />'; $lb_valido=$this->uf_insert_sigesp_cargos();} 	
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_tiposolicitud()<br />'; $lb_valido=$this->uf_insert_tiposolicitud();} 
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_conceptos()<br />'; $lb_valido=$this->uf_insert_conceptos();} 
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_conceptoscargos()<br />'; $lb_valido=$this->uf_insert_conceptoscargos();} 
		$resp = $this->encadenar_fk();
		if($resp===false){$this->io_sql_destino->rollback(); return false;}		
		if(!$lb_valido){$this->io_sql_destino->rollback(); $this->io_mensajes->message("Ocurrió un error al copiar la data de Solicitud de Ejecucion Presupuestaria."); return false;}    
		$this->io_mensajes->message("La data de Solicitud de Ejecucion Presupuestaria se copió correctamente."); 
		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- La data de Solicitud de Ejecucion Presupuestaria se copió correctamente.'." \r\n"." \r\n");} 
		$this->io_sql_destino->commit();
		$this->io_validacion->uf_insert_sistema_apertura('SEP');	
		return true;
			
	}

	
	function liberar_fk(){

		$ls_sql="   
			ALTER TABLE siv_cargosarticulo DROP CONSTRAINT fk_siv_carg_sigesp_ca_sigesp_c;
		";
		$resp=$this->io_sql_destino->execute($ls_sql);
		if($resp===false){								
			$this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->liberar_fk ERROR->".$this->io_sql_destino->message);
			return false;
		}
		return true;
	}
	

	function encadenar_fk(){

		$ls_sql="   
				ALTER TABLE siv_cargosarticulo
				  ADD CONSTRAINT fk_siv_carg_sigesp_ca_sigesp_c FOREIGN KEY (codemp, codcar)
				      REFERENCES sigesp_cargos (codemp, codcar) MATCH SIMPLE
				      ON UPDATE RESTRICT ON DELETE RESTRICT;
										
			";
		$resp=$this->io_sql_destino->execute($ls_sql);
		if($resp===false){								
			$this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->encadenar_fk ERROR->".$this->io_sql_destino->message);
			return false;
		}
		return true;

	}
	
	function uf_insert_tiposolicitud(){

		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Copiando sep_tiposolicitud ... '." \r\n");}
		$lb_valido=true;
		$li_total_select=0;
		$li_total_insert=0;
		
		if($this->borrar_tabla){
			$valido=$this->uf_limpiar_tabla('sep_tiposolicitud');
			if($valido===false){return false;}
		}
		
		$ls_sql = " SELECT codtipsol, dentipsol, estope, modsep  
				    FROM sep_tiposolicitud ";
		$io_recordset=$this->io_sql_origen->select($ls_sql);
		if ($io_recordset===false){			   	
		   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_tiposolicitud ERROR-> ".$this->io_sql_origen->message);
		   return false;
	    }
		
		
		 $li_total_select = $this->io_sql_origen->num_rows($io_recordset);
		 while($row=$this->io_sql_origen->fetch_row($io_recordset)){	
		 		
				$ls_codtipsol=$this->io_validacion->uf_valida_texto($row["codtipsol"],0,2,"");
				$ls_dentipsol=$this->io_validacion->uf_valida_texto($row["dentipsol"],0,80,"");
				$ls_estope=$this->io_validacion->uf_valida_texto($row["estope"],0,1,"");
				$ls_modsep=$this->io_validacion->uf_valida_texto($row["modsep"],0,1,"");
					   
				$ls_sql=" INSERT INTO sep_tiposolicitud (codtipsol, dentipsol, estope, modsep) 
				          VALUES ('".$ls_codtipsol."','".$ls_dentipsol."',".
							     "'".$ls_estope."','".$ls_modsep."')";
				 $li_row = $this->io_sql_destino->execute($ls_sql);
				 if ($li_row===false){						
					$this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_tiposolicitud ERROR->".$this->io_sql_destino->message);
					return false;						
				 }					
				 $li_total_insert++;
				
		  }
			  
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Origen:</b>  sep_tiposolicitud Registros ".$li_total_select."<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Destino:</b> sep_tiposolicitud Registros ".$li_total_insert."<br />";
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br /><br />";
				  
		 return true;
	}// end function uf_insert_tiposolicitud	

	function uf_insert_conceptos(){

		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Copiando sep_conceptos ... '." \r\n");}
		$lb_valido=true;
		$li_total_select=0;
		$li_total_insert=0;
		
		if($this->borrar_tabla){
			$valido=$this->uf_limpiar_tabla('sep_conceptos');
			if($valido===false){return false;}
		}
		
		$ls_sql = " SELECT codconsep, denconsep, monconsepe, obsconesp, spg_cuenta  
				    FROM sep_conceptos ";
		$io_recordset=$this->io_sql_origen->select($ls_sql);
		if ($io_recordset===false){			   	
		   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_conceptos ERROR-> ".$this->io_sql_origen->message);
		   return false;
	    }
		
		
		 $li_total_select = $this->io_sql_origen->num_rows($io_recordset);
		 while($row=$this->io_sql_origen->fetch_row($io_recordset)){	
		 		
				$ls_codconsep=$this->io_validacion->uf_valida_texto($row["codconsep"],0,10,"");
				$ls_denconsep=$this->io_validacion->uf_valida_texto($row["denconsep"],0,254,"");
				$li_monconsepe=$this->io_validacion->uf_valida_monto($row["monconsepe"],0);
				$ls_obsconesp=$this->io_validacion->uf_valida_texto($row["obsconesp"],0,8000,"");
				$ls_spg_cuenta=$this->io_validacion->uf_valida_texto($row["spg_cuenta"],0,25,"");
				
									   
				$ls_sql=" INSERT INTO sep_conceptos (codconsep, denconsep, monconsepe, obsconesp, spg_cuenta) 
				          VALUES ('".$ls_codconsep."','".$ls_denconsep."',".$li_monconsepe.",'".
						              $ls_obsconesp."','".$ls_spg_cuenta."'".")";
				 $li_row = $this->io_sql_destino->execute($ls_sql);
				 if ($li_row===false){						
					$this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_conceptos ERROR->".$this->io_sql_destino->message);
					return false;						
				 }					
				 $li_total_insert++;
				
		  }
			  
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Origen:</b>  sep_conceptos Registros ".$li_total_select."<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Destino:</b> sep_conceptos Registros ".$li_total_insert."<br />";
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br /><br />";
				  
		 return true;
	}// end function uf_insert_conceptos	


	function uf_insert_conceptoscargos(){

		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Copiando sep_conceptocargos ... '." \r\n");}
		$lb_valido=true;
		$li_total_select=0;
		$li_total_insert=0;
		
		if($this->borrar_tabla){
			$valido=$this->uf_limpiar_tabla('sep_conceptocargos');
			if($valido===false){return false;}
		}
		
		$ls_sql = " SELECT codemp, codcar, codconsep  
				    FROM sep_conceptocargos ";
		$io_recordset=$this->io_sql_origen->select($ls_sql);
		if ($io_recordset===false){			   	
		   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_conceptoscargos ERROR-> ".$this->io_sql_origen->message);
		   return false;
	    }
		
		
		 $li_total_select = $this->io_sql_origen->num_rows($io_recordset);
		 while($row=$this->io_sql_origen->fetch_row($io_recordset)){	
		 		
				 $ls_codemp=$this->io_validacion->uf_valida_texto($row["codemp"],0,4,"");
				 $ls_codcar=$this->io_validacion->uf_valida_texto($row["codcar"],0,5,"");
				 $ls_codconsep=$this->io_validacion->uf_valida_monto($row["codconsep"],0,3,"");
					   
				 $ls_sql=" INSERT INTO sep_conceptocargos (codemp, codcar, codconsep) 
				           VALUES ('".$ls_codemp."','".$ls_codcar."','".$ls_codconsep."')";
				 $li_row = $this->io_sql_destino->execute($ls_sql);
				 if ($li_row===false){						
					$this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_conceptoscargos ERROR->".$this->io_sql_destino->message);
					return false;						
				 }					
				 $li_total_insert++;
				
		  }
			  
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Origen:</b>  sep_conceptocargos Registros ".$li_total_select."<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Destino:</b> sep_conceptocargos Registros ".$li_total_insert."<br />";
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br /><br />";
				  
		 return true;
	}// end function uf_insert_conceptoscargos	

	function uf_insert_sigesp_cargos(){

		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Copiando sigesp_cargos ... '." \r\n");}
		$lb_valido=true;
		$li_total_select=0;
		$li_total_insert=0;
		
		if($this->borrar_tabla){
		    $valido=$this->uf_limpiar_tabla('sep_conceptocargos');
			if($valido===false){return false;}
			$valido=$this->uf_limpiar_tabla('sigesp_cargos');
			if($valido===false){return false;}
		}
		
		$ls_sql=" SELECT codemp, codcar, dencar, codestpro, spg_cuenta, 
		                 porcar, estlibcom, formula, estcla
				   FROM sigesp_cargos ";
		$io_recordset=$this->io_sql_origen->select($ls_sql);
		if ($io_recordset===false){			   	
		   $this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_sigesp_cargos ERROR-> ".$this->io_sql_origen->message);
		   return false;
	    }
		
		
		 $li_total_select = $this->io_sql_origen->num_rows($io_recordset);
		 while($row=$this->io_sql_origen->fetch_row($io_recordset)){	
		 		
				$ls_codemp= $this->io_validacion->uf_valida_texto($row["codemp"],0,4,"");
				$ls_codart= $this->io_validacion->uf_valida_texto($row["codart"],0,20,"");
				$ls_codcar= $this->io_validacion->uf_valida_texto($row["codcar"],0,5,"");
					   
				$ls_sql=" INSERT INTO sigesp_cargos(codemp, codcar, dencar, codestpro, spg_cuenta, 
		                                            porcar, estlibcom, formula, estcla) 
						  VALUES ('".$row["codemp"]."','".$row["codcar"]."','".$row["dencar"]."','".
						             $row["codestpro"]."','".$row["spg_cuenta"]."','".$row["porcar"]."',".
									 $row["estlibcom"].",'".$row["formula"]."','".$row["estcla"]."'".
								  ")";
				 $li_row = $this->io_sql_destino->execute($ls_sql);
				 if ($li_row===false){						
					$this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_insert_sigesp_cargos ERROR->".$this->io_sql_destino->message);
					return false;						
				 }					
				 $li_total_insert++;
				
		  }
			  
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Origen:</b>  sigesp_cargos Registros ".$li_total_select."<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Destino:</b> sigesp_cargos Registros ".$li_total_insert."<br />";
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br /><br />";
				  
		 return true;
	}// end function uf_insert_sigesp_cargos	
	
	
	function ue_limpiar_sep_basico()
	{
		$lb_valido=true;
		$this->io_sql_destino->begin_transaction();
			
		//$resp = $this->liberar_fk();
		//if($resp===false){$this->io_sql_destino->rollback(); return false;}	
		if($lb_valido){$lb_valido=$this->uf_limpiar_tabla("sep_conceptocargos","");}	
		if($lb_valido){$lb_valido=$this->uf_limpiar_tabla("sep_conceptos","");}	
		if($lb_valido){$lb_valido=$this->uf_limpiar_tabla("sep_tiposolicitud","");}	
		
		if(!$lb_valido){
		    $this->io_sql_destino->rollback();	
		 	$this->io_mensajes->message("Ocurrió un error al borrar la data de Solicitud de Ejecución Presupuestaria. "); 
			return false;
		}
		//$resp = $this->encadenar_fk();
		//if($resp===false){$this->io_sql_destino->rollback(); return false;}	
		$this->io_sql_destino->commit();
		$this->io_mensajes->message("La data de Solicitud de Ejecución Presupuestaria se borró correctamente.");
		return true;		
		
	}// end function ue_limpiar_scg_basico
	

	function uf_limpiar_tabla($as_tabla,$as_condicion="")
	{			
		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Eliminando datos de '.$as_tabla.' ... '." \r\n");}
		$this->io_sql_destino->begin_transaction();
		
		$li_total_select=0;
		$li_total_insert=0;
		$ls_sql="DELETE FROM ".$as_tabla." ".$as_condicion;
	
		$io_recordset=$this->io_sql_destino->execute($ls_sql);
	
		if($io_recordset===false)
		{ 
			$this->io_sql_destino->rollback();			
			$lb_valido=false;
			$this->msjresultado="Error al Borrar la tabla: ".$as_tabla.".\r\n".$this->io_sql_destino->message."\r\n";
			$error2="Error al Borrar la tabla: ".$as_tabla.".<br/>".$this->io_sql_destino->message."<br/>";			
			$this->io_mensajes->message("CLASE->".get_class($this)." MÉTODO->uf_limpiar_tabla ERROR->".$error2);
			return false;			
		}
		
		$this->io_sql_destino->commit();
		$this->msjresultado = $this->msjresultado."*****************************************************************<br />";
		$this->msjresultado=$this->msjresultado."   Tabla  ".$as_tabla."  Blanqueada <br />";
		$this->msjresultado=$this->msjresultado."*****************************************************************<br />";			
			
		return true;
	}// end function uf_limpiar_tabla
	

}
?>
