<?php 
////////////////////////////////////////////////////////////////////////////////////////////////////////
//       Class : sigesp_copia_cxp.php                                                 			  	  //    
// Description : Procesa la copia de datos del modulo de cuentas por pagar							  //
////////////////////////////////////////////////////////////////////////////////////////////////////////

class sigesp_copia_cxp {

	var $io_sql_origen;
	var $io_sql_destino;
	var $io_mensajes;
	var $io_funciones;
	var $io_validacion;
	var	$lo_archivo;
		
	//-----------------------------------------------------------------------------------------------------------------------------------	
	function sigesp_copia_cxp()
	{
		$ld_fecha=date("_d-m-Y");
		$ls_nombrearchivo="resultado/".$_SESSION["ls_data_des"]."_cxp_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_cxp
	
	
	function ue_copiar_cxp_basico()
	{
		$lb_valido=true;
		if($this->lo_archivo){@fwrite($this->lo_archivo," \r\n".date('H:i:s').'.- Iniciando Apertura de Cuentas por Pagar ... '." \r\n"." \r\n");}
		$this->io_sql_destino->begin_transaction();		
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_clasificador()<br />'; $lb_valido=$this->uf_insert_clasificador();} 
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_documento()<br />'; $lb_valido=$this->uf_insert_documento();} 
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_cargos()<br />'; $lb_valido=$this->uf_insert_cargos();} 
		if($lb_valido){$this->msjejec .= date('H:i:s').'.- <b>Ejecutando:</b> uf_insert_deducciones()<br />'; $lb_valido=$this->uf_insert_deducciones();} 
		
		if(!$lb_valido){$this->io_sql_destino->rollback(); $this->io_mensajes->message("Ocurrió un error al copiar la data de Cuentas por Pagar."); return false;}    
		$this->io_mensajes->message("La data de Cuentas por Pagar se copió correctamente."); 
		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- La data de Cuentas por Pagar se copió correctamente.'." \r\n"." \r\n");} 
		$this->io_sql_destino->commit();
		$this->io_validacion->uf_insert_sistema_apertura('CXP');	
		return true;
			
	}

	function uf_insert_clasificador(){

		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Copiando cxp_clasificador_rd ... '." \r\n");}
		$lb_valido=true;
		$li_total_select=0;
		$li_total_insert=0;
		
		if($this->borrar_tabla){
			$valido=$this->uf_limpiar_tabla('cxp_clasificador_rd');
			if($valido===false){return false;}
		}
		
		$ls_sql  = " SELECT codcla, dencla  
		             FROM cxp_clasificador_rd ";
		$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_clasificador 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_codcla=$this->io_validacion->uf_valida_texto($row["codcla"],0,2,"");
				$ls_dencla=$this->io_validacion->uf_valida_texto($row["dencla"],0,60,"");
					   
				 $ls_sql="INSERT INTO cxp_clasificador_rd (codcla, dencla) VALUES ('".$ls_codcla."','".$ls_dencla."')";
				 $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_clasificador ERROR->".$this->io_sql_destino->message);
					return false;						
				 }					
				 $li_total_insert++;
				
		  }
			  
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Origen:</b>  cxp_clasificador_rd Registros ".$li_total_select."<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Destino:</b> cxp_clasificador_rd Registros ".$li_total_insert."<br />";
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br /><br />";
				  
		 return true;
	}// end function uf_insert_planunico	


	function uf_insert_documento(){

		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Copiando cxp_documento ... '." \r\n");}
		$lb_valido=true;
		$li_total_select=0;
		$li_total_insert=0;
		
		if($this->borrar_tabla){
			$valido=$this->uf_limpiar_tabla('cxp_documento');
			if($valido===false){return false;}
		}
		
		 $ls_sql = " SELECT codtipdoc, dentipdoc, estcon, estpre  
		             FROM cxp_documento ";
		$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_documento 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_codtipdoc=$this->io_validacion->uf_valida_texto($row["codtipdoc"],0,5,"");
				 $ls_dentipdoc=$this->io_validacion->uf_valida_texto($row["dentipdoc"],0,80,"");
				 $ls_estcon=$this->io_validacion->uf_valida_monto($row["estcon"],0);
				 $ls_estpre=$this->io_validacion->uf_valida_monto($row["estpre"],0);
					   
				 $ls_sql="INSERT INTO cxp_documento (codtipdoc, dentipdoc, estcon, estpre) 
				          VALUES ('".$ls_codtipdoc."','".$ls_dentipdoc."',".
							         $ls_estcon.",".$ls_estpre.")";
				 $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_documento ERROR->".$this->io_sql_destino->message);
					return false;						
				 }					
				 $li_total_insert++;
				
		  }
			  
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Origen:</b>  cxp_documento Registros ".$li_total_select."<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Destino:</b> cxp_documento Registros ".$li_total_insert."<br />";
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br /><br />";
				  
		 return true;
	}// end function uf_insert_documento	


	function uf_insert_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('sigesp_cargos');
			if($valido===false){return false;}
		}
		
		 $ls_sql = " SELECT codemp, codcar, dencar, codestpro, spg_cuenta, porcar, estlibcom, formula  
		             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_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_codcar=$this->io_validacion->uf_valida_texto($row["codcar"],0,5,"");
				$ls_dencar=$this->io_validacion->uf_valida_texto($row["dencar"],0,254,"");
				$ls_codestpro=$this->io_validacion->uf_valida_texto($row["codestpro"],0,33,"");
				$ls_spg_cuenta=$this->io_validacion->uf_valida_texto($row["spg_cuenta"],0,25,"");
				$li_porcar=$this->io_validacion->uf_valida_monto($row["porcar"],0);
				$li_estlibcom=$this->io_validacion->uf_valida_monto($row["estlibcom"],0);
				$ls_formula=$this->io_validacion->uf_valida_texto($row["formula"],0,254,"");
					   
				$ls_sql="INSERT INTO sigesp_cargos (codemp, codcar, dencar, codestpro, spg_cuenta, porcar, estlibcom, formula) VALUES ".
							"('".$ls_codemp."','".$ls_codcar."','".$ls_dencar."','".$ls_codestpro."','".$ls_spg_cuenta."',".$li_porcar.",".
							     $li_estlibcom.",'".$ls_formula."')";
				 $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_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_cargos	


	function uf_insert_deducciones(){

		if($this->lo_archivo){@fwrite($this->lo_archivo,date('H:i:s').'.- Copiando sigesp_deducciones ... '." \r\n");}
		$lb_valido=true;
		$li_total_select=0;
		$li_total_insert=0;
		
		if($this->borrar_tabla){
			$valido=$this->uf_limpiar_tabla('sigesp_deducciones');
			if($valido===false){return false;}
		}
		
		 $ls_sql = " SELECT codemp, codded, dended, sc_cuenta, porded, monded, islr, iva, 
                            estretmun, formula, otras, tipopers, retaposol, codconret, estretmil
		             FROM sigesp_deducciones ";
		$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_deducciones 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_codded=$this->io_validacion->uf_valida_texto($row["codded"],0,5,"");
				$ls_dended=$this->io_validacion->uf_valida_texto($row["dended"],0,254,"");
				$ls_sc_cuenta=$this->io_validacion->uf_valida_texto($row["sc_cuenta"],0,25,"");
				$li_porded=$this->io_validacion->uf_valida_monto($row["porded"],0);
				$li_monded=$this->io_validacion->uf_valida_monto($row["monded"],0);
				$li_islr=$this->io_validacion->uf_valida_monto($row["islr"],0);
				$li_iva=$this->io_validacion->uf_valida_monto($row["iva"],0);
				$li_estretmun=$this->io_validacion->uf_valida_monto($row["estretmun"],0);
				$ls_formula=$this->io_validacion->uf_valida_monto($row["formula"],0,254,"");
				$li_otras=$this->io_validacion->uf_valida_monto($row["otras"],0);
				$li_mondedaux=$this->io_validacion->uf_valida_monto($row["monded"],0);
				
					   
				$ls_sql=" INSERT INTO sigesp_deducciones (codemp, codded, dended, sc_cuenta, porded, monded, islr, iva, 
                                                          estretmun, formula, otras, tipopers, retaposol, codconret, estretmil) 
					      VALUES ('".$ls_codemp."','".$ls_codded."','".$ls_dended."','".$ls_sc_cuenta."',".$li_porded.",".
							         $li_monded.",".$li_islr.",".$li_iva.",".$li_estretmun.",'".$ls_formula."',".$li_otras.",'".
									 $row["tipopers"]."',".$row["retaposol"].",'".$row["codconret"]."','".$row["estretmil"]."'".
									 ")";
				 $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_deducciones 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_deducciones Registros ".$li_total_select."<br />";
		 $this->msjresultado = $this->msjresultado."   <b>Tabla Destino:</b> sigesp_deducciones Registros ".$li_total_insert."<br />";
		 $this->msjresultado = $this->msjresultado."*****************************************************************<br /><br />";
				  
		 return true;
	}// end function uf_insert_deducciones	

	function ue_limpiar_cxp_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("cxp_clasificador_rd","");}	
		if($lb_valido){$lb_valido=$this->uf_limpiar_tabla("cxp_documento","");}	
		if($lb_valido){$lb_valido=$this->uf_limpiar_tabla("sigesp_cargos","");}	
		if($lb_valido){$lb_valido=$this->uf_limpiar_tabla("sigesp_deducciones","");}	
		
		if(!$lb_valido){
		    $this->io_sql_destino->rollback();	
		 	$this->io_mensajes->message("Ocurrió un error al borrar la data de Cuentas por Pagar. "); 
			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 Cuentas por Pagar 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
	



}
?>