<?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_ipostel.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;}					

							//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>';
	
							if($datos[6] == 'E' and $datos[7] == 'F'){$datos['codtippersss'] = '0000001'; $datos['estper'] = '1';}		
							else if($datos[6] == 'E' and $datos[7] == 'C'){$datos['codtippersss'] = '0000002'; $datos['estper'] = '1';}	
							else if($datos[6] == 'O' and $datos[7] == 'F'){$datos['codtippersss'] = '0000004'; $datos['estper'] = '1';}	
							else if($datos[6] == 'O' and $datos[7] == 'C'){$datos['codtippersss'] = '0000005'; $datos['estper'] = '1';}	
							
							else if($datos[6] == 'D' and $datos[7] == 'F'){$datos['codtippersss'] = '0000001'; $datos['estper'] = '1';}
							else if($datos[6] == 'D' and $datos[7] == 'C'){$datos['codtippersss'] = '0000002'; $datos['estper'] = '1';}	
															
							else if($datos[7] == 'J'){$datos['codtippersss'] = '0000010'; $datos['estper'] = '3';}	
							else if($datos[7] == 'P'){$datos['codtippersss'] = '0000014'; $datos['estper'] = '3';}	
							else{ 
									//echo $numerox.'.- ***********************************>'.$datos[6].' | '.$datos[7].' | '.$datos[8].'<br>'; 
									//$numerox++; 
									continue;
							}
							
							$datos['codmun'] = '001'; $datos['codpar'] = '001';
							
							if(trim($datos[2]) == '005'){$datos['codmun'] = '002'; $datos['codpar'] = '001';}
							if(trim($datos[2]) == '017'){$datos['codmun'] = '003'; $datos['codpar'] = '001';}
							if(trim($datos[2]) == '018'){$datos['codmun'] = '002'; $datos['codpar'] = '001';}
							if(trim($datos[2]) == '020'){$datos['codmun'] = '003'; $datos['codpar'] = '001';}
							if(trim($datos[2]) == '022'){$datos['codmun'] = '003'; $datos['codpar'] = '001';}
											
							
							$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, codreg, codent, tipperipo, tipcontipo, condipo,
																			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','%s',
																  '%s','%s','%s','%s')",
														 '0001',
														 str_pad($datos[9],10,"0",STR_PAD_LEFT),
													 	 trim((integer)$datos[9]),
														 trim($datos[10]),
														 trim($datos[11]),
														 'Pendiente',
														 $this->io_conexiones->formatea_fecha_bd($datos[13]),
														 'S',
														 
														 'V',
														 trim($datos[12]),
														 '001',
														 '0',
														 '058',
														 trim($datos[2]),
														 $datos['codmun'],
														 $datos['codpar'],
														 0,
														 
														 $datos['codtippersss'],
														 '0',
														 ($datos[19])?$this->io_conexiones->formatea_fecha_bd($datos[19]):'1900/01/01',
														 '0',
														 ($datos[19])?$this->io_conexiones->formatea_fecha_bd($datos[19]):'1900/01/01',
														 '0',
														 
														 '',
														 '0',
														 $datos['estper'],
														 $datos[0],
														 $datos[2],
														 $datos[6],
														 $datos[7],
														 $datos[8],
														 
														 ($datos[21])?$this->io_conexiones->formatea_fecha_bd($datos[21]):'1900/01/01',
														 ($datos[22])?$this->io_conexiones->formatea_fecha_bd($datos[22]):'1900/01/01',
														 'S/E'													 													 
														 );
														
									$query_existe = "SELECT * FROM sno_personal WHERE codemp='0001' AND codper='".str_pad($datos[9],10,"0",STR_PAD_LEFT)."' ";
									
									$this->rs_per=$this->io_sql->select($query_existe);
									
									if($this->rs_per==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_per->RecordCount()){									
											$encontrados[] = '<b>'.$numero.'.-</b> <b class="texto-rojo">'.str_pad($datos[9],10,"0",STR_PAD_LEFT).'</b> - '.trim($datos[10]).'  '.trim($datos[11]);
											$numero++;
											continue;
									}
									
									/*
									echo $numero.'.- '.$this->rs_per->RecordCount().' ----> '.$codper.' | '.trim($datos[1]).' | '.trim($datos[2]).' | '.trim($datos[4]).' | '.$datos[5].' | '.$datos[6].' | '.$datos[7].' | '.$datos[8].' | '.$datos[9].'<br>';			
									echo $query_rs.'<br>';
									echo '<br>'.'<br>';
									*/
									
									$this->io_sql->begin_transaction();				
									$this->rs_data=$this->io_sql->select($query_rs);								
									
									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();								
									

									$insertado[] = '<b>'.$numero.'.-</b> <b class="texto-azul">'.str_pad($datos[9],10,"0",STR_PAD_LEFT).'</b> - '.trim($datos[10]).'  '.trim($datos[11]);
									$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 = 'txtpersonalnomina.csv';
				$fp = fopen($nombre_archivo,"r");
				$numero = 0;
				$numerox = 1;
				$this->io_sql->begin_transaction();	
					
				while ($linea= fgets($fp,4096)){
	
						    //CODIGO SIGESP;CEDULA;Carnum;INGRESO;Banco;TipoPago;Bancaria;sueldo;sueldo_mensual;pension_sobreviviente_m;T_PERSONAL;DEDICACION;codtipper;codnom_Sigesp
							// 0              1      2       3      4      5        6       7           8              9                     10       11        12           13
							
							if($numero==0){$numero++; continue;}
							
							$datos = explode(';',$linea);
							//$datos['codper'] = str_pad(trim((integer)$datos[0]),10,'0',STR_PAD_LEFT);
							switch(trim($datos[5])){
							
									case 'EF':
										$datos['pagbanper'] = 0;
										$datos['pagefeper'] = 1;
										$datos['pagtaqper'] = 0;
										$datos['tipcuebanper'] = 0;
										$datos[6] = '';
										$datos[4] = '';
									break;
									
									
									case 'IA':
										$datos['pagbanper'] = 1;
										$datos['pagefeper'] = 0;
										$datos['pagtaqper'] = 0;
										$datos['tipcuebanper'] = 'A';
																			
									break;
									
									
									case 'IC':
										$datos['pagbanper'] = 1;
										$datos['pagefeper'] = 0;
										$datos['pagtaqper'] = 0;
										$datos['tipcuebanper'] = 'C';									
									break;
							
							}		
							
							switch(trim($datos[4])){
							
									case 'BVZ':
										$datos['codban'] = '004';
									break;
									
									case 'BIN':
										$datos['codban'] = '008';
									break;
									
									default:
										$datos['codban'] = '';
									break;									
							
							}						
							
							$datos[8] = trim(str_replace(".","",$datos[8]));
							$datos[8] = trim(str_replace(",",".",$datos[8]));			
							
							$datos[9] = trim(str_replace(".","",$datos[9]));
							$datos[9] = trim(str_replace(",",".",$datos[9]));	
							
							$datos[12] = ($datos[12]=='0109')?'0103':$datos[12];
							$datos[12] = ($datos[12]=='0110')?'0107':$datos[12];
							$datos['codper'] =  str_pad(trim((integer)$datos[1]),10,'0',STR_PAD_LEFT);
							$datos['codnom'] = trim($datos[13]);
							$datos['coduniadm']	= $datos[0];
							$datos['codtabvac']	= '01';
											 
							$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');",
														 trim($datos[13]),
														 str_pad(trim((integer)$datos[1]),10,'0',STR_PAD_LEFT),
														 (trim($datos[8]))?$datos[8]:$datos[9],
														 substr($datos[0],0,4),
														 substr($datos[0],4,2),
														 substr($datos[0],6,2),
														 substr($datos[0],8,2),
														 substr($datos[0],10,2),
														 $datos['pagbanper'],
														 $datos['codban'],
														 trim($datos[6]),
														 $datos['tipcuebanper'],
														 trim($datos[2]),														 
														 ($datos[3])?$this->io_conexiones->formatea_fecha_bd($datos[3]):'1900/01/01',
														 trim($datos[11]),
														 trim($datos[12]),
														 $datos['pagefeper']										 													 
														 );
														 
														 									
									$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++;
									
							if(trim($datos['coduniadm']) and trim($datos['codtabvac'])){
																	
									$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'];		
							} 
							else{
									if(!trim($datos['coduniadm'])){echo '<b>ERROR:</b> Codper: '.$datos['codper'].'    Falata uniadm ! <br>';}
									if(!trim($datos['codtabvac'])){echo '<b>ERROR:</b> Codper: '.$datos['codper'].'    Falata tabvac ! <br>';}
									
							
							}
							
							      
				}
				
				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 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();

 ?>