<?php 
session_start();
class procesar_datos
{
	

	function procesar_datos()
	{	
		
		/*
		$_SESSION["ls_hostname"] = "localhost";
		$_SESSION["ls_login"] = "postgres";
		$_SESSION["ls_password"] = "postgres";
		$_SESSION["ls_database"] = "db_prueba";
		$_SESSION["ls_gestor"] = "POSTGRES";
		$_SESSION["ls_logo"] = "logo_ipsfa.jpg";
		$_SESSION["ls_width"] = "70";
		$_SESSION["ls_height"] = "70";
		$_SESSION["ls_port"] = "5432";					
		$_SESSION["la_empresa"]["codemp"] = "0001";
		$_SESSION["la_logusr"] = "SIGESP";	
		*/
		global $ruta;
		$ruta = '../';
		require_once($ruta."shared/class_folder/sigesp_include.php");
		$io_include=new sigesp_include();
		$io_conexion=$io_include->uf_conectar();
		require_once($ruta."shared/class_folder/class_sql.php");
		$this->io_sql=new class_sql($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"];
		

	}

	function ejecutar($parametros=array()){
				
				$resp = $this->insertar_personal($parametros);
				if(!$resp){return false;}
				
				$resp = $this->insertar_personalnomina($parametros);
				if(!$resp){return false;}
				
	
	}
	
	
	function insertar_personal($parametros=array()){
				
				$nombre_archivo = 'personal_fasac.csv';
				$fp = fopen($nombre_archivo,"r");
				$numero = 1;
				$numerox = 1;	
				$encontrados=array();
				
				while ($linea= fgets($fp,4096)){
							
							$datos = explode('|',$linea);
							if($numero==1){$numero++; continue;}					
							if($numero==2){$numero++; continue;}
							//0   |     1|       2|        3|                  4|           5|           6|  7|     8|        9|             10|         11|              12|              13|                                           14|                     15|16
							//C.I.|NOMBRE|APELLIDO|DIRECCIÓN|FECHA DE NACIMIENTO|ESTADO CIVIL|NACIONALIDAD|RIF|GENERO|PROFESION|NIVEL ACADEMICO|Nº DE HIJOS|TIPO DE PERSONAL|TIPO DE VIVIENDA|FECHA DE INGRESO EN LA ADMINISTRACION PUBLICA|AÑOS DE SERVICIO PREVIO|FECHA DE INGRESO INSTITUCION
												
							//echo sizeof($datos).'<br>';
	
							$codper = str_pad($datos[0],10,"0",STR_PAD_LEFT);	
							$query_rs = sprintf("INSERT INTO sno_personal(	codemp, codper, cedper, nomper, apeper, dirper, fecnacper, edocivper, 
																			nacper, sexper,codpro,nivacaper,codpai, codest, codmun,	codpar, numhijper,  
																			codtippersss, tipvivper,fecingadmpubper, anoservpreper, fecingper,cajahoper,
																			contraper,monpagvivper,estper,
																			fecegrper,fecjubper,numexpper
																		)
														  VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',
														  		  '%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',
																  '%s','%s','%s','%s','%s',
																  '%s','%s','%s','%s')",
														 '0001',
														 str_pad($datos[0],10,"0",STR_PAD_LEFT),
													 	 trim((integer)$datos[0]),
														 trim($datos[1]),
														 trim($datos[2]),
														 trim($datos[3]),
														 trim($datos[4]),
														 trim($datos[5]),
														 
														 trim($datos[6]),
														 trim($datos[8]),
														 '000',
														 trim($datos[10]),
														 '058',
														 '001',
														 '001',
														 '003',
														 trim($datos[11]),
														 
														 substr(trim($datos[12]),-7),
														 '0',
														 (trim($datos[14]))?trim($datos[14]):'1900/01/01',
														 trim($datos[15]),
														 (trim($datos[16]))?trim($datos[14]):'1900/01/01',
														 '0',
														 
														 '',
														 '0',
														 '1',
														 
														 '1900/01/01',
														 '1900/01/01',
														 'S/E'													 													 
														 );
									//echo $query_rs.'<br><br><br>';
													
									$query_existe = "SELECT * FROM sno_personal WHERE codemp='0001' AND codper='".str_pad($datos[0],10,"0",STR_PAD_LEFT)."' ";
									
									$this->rs_per=$this->io_sql->select($query_existe);
									
									if($this->rs_per==false){		
									    $this->io_sql->rollback();					
										$metodo = 'insertar_personal';
										$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->rs_per->RecordCount()){									
											$encontrados[] = '<b>'.$numero.'.-</b> <b class="texto-rojo">'.str_pad($datos[0],10,"0",STR_PAD_LEFT).'</b> - '.trim($datos[1]).'  '.trim($datos[2]);
											$numero++;
											continue;
									}
									
									
									$this->io_sql->begin_transaction();				
									$this->rs_data=$this->io_sql->select($query_rs);								
									
									if($this->rs_data==false){		
									    $this->io_sql->rollback();					
										$metodo = 'insertar_personal';
										$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;
										
									}
									
									$resp=$this->InsertIsr($codper);
									if($resp===false){$this->io_sql->rollback(); return false;}
									
									
									$sql1="INSERT INTO sno_fideicomiso (codemp, codper, codfid, ficfid, ubifid, cuefid, 
									                             fecingfid, capfid, capantcom, fecconpreant, conpreant, 
																 porintcap, scg_cuentafid, scg_cuentaintfid, calintfid) 
			                              VALUES ('0001', '".$codper."', '0000', '0000000000', '0000000000', '', '".trim($datos[14])."', 'S', 
								                  '', '1900-01-01', ' ', 0, '', '', '0');";
									
									$rs1=$this->io_sql->select($sql1);
									if($rs1==false){		
										$this->io_sql->rollback();					
										$metodo = 'insertar_personal';
										$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->io_sql->rollback();
									$this->io_sql->commit();								
									

									$insertado[] = '<b>'.$numero.'.-</b> <b class="texto-azul">'.str_pad($datos[0],10,"0",STR_PAD_LEFT).'</b> - '.trim($datos[1]).'  '.trim($datos[2]);
									$numero++;
									$numerox++;
											
							
							
				}
			   
			   
				
				    echo '<br><br>';
				    echo '<table width="508" border="0" align="center" cellpadding="1" cellspacing="0" class="formato-blanco">';
					echo '<tr>';
					echo '<td align="left">';
					echo '<b><span align="center">PERSONAL ENCONTRADO:</span></b><br><br>';
					if(is_array($encontrados)){foreach(array_unique($encontrados) as $personas){echo $personas.'<br>';}}					
					echo '</td>';					
					echo '</table><br><br>';
					
					
					echo '<table width="508" border="0" align="center" cellpadding="1" cellspacing="0" class="formato-blanco">';
					echo '<tr>';
					echo '<td align="left">';
					echo '<b><span align="center">PERSONAL NUEVO INSERTADO:</span></b><br><br>';
					if(is_array($insertado)){foreach(array_unique($insertado) as $personas){echo $personas.'<br>';}}					
					echo '</td>';					
					echo '</table><br><br>';
					
					return true;
	
	}//end function ejecutar
	
	function insertar_personalnomina($parametros=array()){
	
				$nombre_archivo = 'personalnomina_fasac.csv';
				$fp = fopen($nombre_archivo,"r");
				$numero = 0;
				$numerox = 1;
				$this->io_sql->begin_transaction();	
					
				while ($linea= fgets($fp,4096)){
	
						    //0   |1					  |2          |3             |4    |5    |6             |7       |8                           |9         |10              |11
							//C.I.|UNIDAD ADMINISTRATIVA|CODUNIADMIN|SUELDO MENSUAL|CARGO|BANCO|TIPO DE CUENTA|CTA BANC|FECHA DE INGRESO INSTITUCION|DEDICACION|TIPO DE PERSONAL|NOMINA
							
							if($numero==0){$numero++; continue;}
							if($numero==1){$numero++; continue;}
							$datos = explode('|',$linea);
							//$datos['codper'] = str_pad(trim((integer)$datos[0]),10,'0',STR_PAD_LEFT);
														
							$datos['codper'] =  str_pad(trim($datos[0]),10,'0',STR_PAD_LEFT);
							$datos['codnom'] = str_pad((trim($datos[11])),4,'0',STR_PAD_LEFT);
							$datos[2] = str_pad((trim($datos[2])),12,'0',STR_PAD_LEFT);
							$datos[5] = substr($datos[5],-3);
							$datos[4] = str_pad((trim($datos[4])),10,'0',STR_PAD_LEFT);
											 
							$query_rs = sprintf("INSERT INTO sno_personalnomina(
															codemp, codnom, codper, codsubnom, codasicar, codtab, codgra, 
															codpas, sueper, horper, minorguniadm, ofiuniadm, uniuniadm, depuniadm,prouniadm,  
															pagbanper, codban, codcueban, tipcuebanper, codcar, 
															fecingper, staper, cueaboper, fecculcontr, codded, codtipper, 
															quivacper, codtabvac, sueintper, pagefeper, sueproper, codage, 
															codescdoc, codcladoc, codubifis, 
															tipcestic, conjub, catjub, codclavia, codunirac, pagtaqper, grado, 
															fecascper, descasicar, coddep, salnorper, estencper)
													VALUES ('0001', '%s', '%s', '0000000000', '0000000', '00000000000000000000', '00', 
															'00', '%s', '0', '%s', '%s', '%s', '%s','%s',  
															'%s', '%s', '%s', '%s', '%s', 
															'%s', '1', '', '1900-01-01', '%s', '%s', 
															'', '01', '0', '%s', '0', '0000000001', 
															'0000', '0000', '0000', 
															'', '0000', '000', '', '', '0', '0000', 
															'1900-01-01', '', '', '0', '0');",
														 str_pad((integer)(trim($datos[11])),4,'0',STR_PAD_LEFT),
														 str_pad(trim((integer)$datos[0]),10,'0',STR_PAD_LEFT),
														 
														 trim($datos[3]),
														 substr($datos[2],0,4),
														 substr($datos[2],4,2),
														 substr($datos[2],6,2),
														 substr($datos[2],8,2),
														 substr($datos[2],10,2),
														 
														 '1',
														 trim($datos[5]),
														 trim($datos[7]),
														 trim($datos[6]),
														 trim($datos[4]),
														 														 
														 trim($datos[8]),
														 trim($datos[9]),
														 substr(trim($datos[10]),-4),
														 
														 '0'										 													 
														 );
														 
														 									
									$query_existe = "SELECT * FROM sno_personalnomina WHERE codemp='0001' AND codper='".$datos['codper']."' AND codnom='".$datos['codnom']."' ";
									
									$this->rs_pern=$this->io_sql->select($query_existe);
									
									if($this->rs_pern==false){		
									    $this->io_sql->rollback();					
										$metodo = 'ejecutar';
										$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->rs_pern->RecordCount()){									
											$encontradospn[] = '<b>'.$numero.'.-</b> <b class="texto-rojo">'.$datos['codper'].'</b> - '.trim($datos['codnom']);
											$numero++;
											continue;
									}
									
									//echo $query_rs.'<br>';
									//echo $numero.'.- '.$datos['codper'].' | '.$datos['sueper'].' | '.$datos['coduniadm'].' | '.$datos['codcar'].' | '.$datos['codded'].' | '.$datos['fecingper'].'<br>';			
									$numero++;
									
																	
									$this->rs_data=$this->io_sql->select($query_rs);															
									$this->io_sql->begin_transaction();			
									if($this->rs_data==false){		
										$this->io_sql->rollback();					
										$metodo = 'ejecutar';
										$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->io_sql->commit();
									$pn_insertado[] = '<b>'.$numero.'.-</b> <b class="texto-azul">'.$datos['codper'].'</b> - '.$datos['codnom'];		
							
							
							      
				}
				
				echo '<br><br>';
				echo '<table width="508" border="0" align="center" cellpadding="1" cellspacing="0" class="formato-blanco">';
				echo '<tr>';
				echo '<td align="left">';
				echo '<b><span align="center">PERSONAL EN NÓMINA ENCONTRADO:</span></b><br><br>';
				if(is_array($encontradospn)){foreach(array_unique($encontradospn) as $personas){echo $personas.'<br>';}}					
				echo '</td>';					
				echo '</table><br><br>';
			
				
				echo '<table width="508" border="0" align="center" cellpadding="1" cellspacing="0" class="formato-blanco">';
				echo '<tr>';
				echo '<td align="left">';
				echo '<b><span align="center">PERSONAL INGRESADO A NOMINA:</span></b><br><br>';
				if(is_array($pn_insertado)){foreach(array_unique($pn_insertado) as $personas){echo $personas.'<br>';}}					
				echo '</td>';					
				echo '</table><br><br>';
				
				return true;
	
	}
	
	function InsertIsr($as_codper)
	{
		
		for($li_index=1;$li_index<13;++$li_index)
		{
			$ls_codimp= $li_index."";
			if (strlen($ls_codimp)==1)
			{
				$ls_codimp="0".$ls_codimp;
			}
			$ls_sql="INSERT INTO sno_personalisr ".
					"(codemp,codper,codisr,porisr,codconret)VALUES('".$this->ls_codemp."','".$as_codper."','".$ls_codimp."',0.00,'001')";
			$rs=$this->io_sql->execute($ls_sql);
			if($rs===false){
				$metodo = 'InsertIsr';
				$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;
	}// end function uf_insert_isrpersonal
	//-----------------------------------------------------------------------------------------------------------------------------------

	
	function consultar_cargo($param=array()){
				
				$query = "SELECT * 
						  FROM sno_cargo 
						  WHERE codemp='0001' 
						  AND codsireh='".$param['codsireh']."' 
						  AND codnom ='".$param['codnom']."'";
				
				$this->rs=$this->io_sql->select($query);
				
				if($this->rs==false){		
					$this->io_sql->rollback();					
					$metodo = 'consultar_cargo';
					$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->rs->RecordCount()){									
						echo  '<b>Error de Cargo: ('.$param['codsireh'].')</b> <b class="texto-rojo">El cargo no tiene un correlativo en SIGESP. CODPER = '.$param['codper'].'</b><br>';
						return false;
				}
				
				return $this->rs->fields['codcar'];
	
	}
	
	
	function consultar_uniadm($param=array()){
				
				
				$query = "SELECT minorguniadm||ofiuniadm||uniuniadm||depuniadm||prouniadm AS coduniadm,desuniadm 
						  FROM sno_unidadadmin 
						  WHERE codemp='0001' 
						  AND minorguniadm||ofiuniadm||uniuniadm||depuniadm||prouniadm='".$param['coduniadm']."' ";
				
				$this->rs=$this->io_sql->select($query);
				
				if($this->rs==false){		
					$this->io_sql->rollback();					
					$metodo = 'consultar_uniadm';
					$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->rs->RecordCount()){									
						echo  '<b>Error de Unidad Administrativa: ('.$param['coduniadm'].')</b> <b class="texto-rojo">La Unidad Administrativa no está definida en la nomina de SIGESP. CODPER = '.$param['codper'].'</b><br>';
						return false;
				}
				
				return $this->rs->fields['coduniadm'];
	
	}

}






?>
<link href="../shared/css/ventanas.css" rel="stylesheet" type="text/css">
<link href="../shared/css/general.css" rel="stylesheet" type="text/css">
<link href="../shared/css/tablas.css" rel="stylesheet" type="text/css">
<link href="../shared/css/catalogos.css" rel="stylesheet" type="text/css">

<?php 


$procesar = new procesar_datos();

$procesar->ejecutar();

 ?>