public function exportarExcelHorarios($datos) { $oLRrhh = new LRrhh(); // $nDias = intval(date("t", $datos["mes"])); $mes = mktime(0, 0, 0, $datos["mes"], 1, $datos["anio"]); setlocale('LC_ALL', 'fr_FR'); $nDias = date("t", $mes); $fechax = $nDias . "/" . $datos["mes"] . "/" . $datos["anio"]; $empleados = $oLRrhh->empleadoXarea($datos["idSedeEmpresaArea"], $fechax, $datos["cboTipoContrato"], $datos["idSubArea"]); // Se recupera a todos los empleados que pertenecen a una area especifica $cboTESA = $oLRrhh->listaTurnoSedeEmpresaArea($datos); // Se recupera los turnos que pertenecen al area de una sede $leyendaTESA = $cboTESA; $datosEmpleadoProg = $oLRrhh->listaTurnoProgramado("", $datos["iIdProgramacionpersonal"], $datos["mes"], $datos["anio"], 'empleadoProgramado', "", $datos["idSEACC"], $datos["cboTipoContrato"]); // se recupera a todos los empleados que ya fueron programados, tambien puede retornar null $idEmpleadoProgramado = $datosEmpleadoProg; /* =========================== Set datos a la cabecera =========================== */ $arrayCabecera = array(0 => "CODIGO", 1 => "EMPLEADOS PROGRAMADOS"); /* ========================== fin datos cabecera ================================= */ /* ================= Set datos para las columnas fijas =========================== */ $arrayFilas = array(); $datosEmpleados = array(); $filx = 0; foreach ($empleados as $i => $value) { if ($datosEmpleadoProg) { $r = 0; foreach ($datosEmpleadoProg as $j => $val) { if ($empleados[$i][0] == $datosEmpleadoProg[$j][0]) { $arrayFilas[$filx + $r][0] = $empleados[$i][0]; $arrayFilas[$filx + $r][1] = $empleados[$i][1] . " " . $empleados[$i][2] . " " . $empleados[$i][3]; //------------------------------------------------------ $datosEmpleados[$filx + $r][0] = $empleados[$i][0]; $datosEmpleados[$filx + $r][1] = $datosEmpleadoProg[$j][2]; //------------------------------------------------------ $r++; $filx = $filx + $r - 1; if ($r == $datosEmpleadoProg[$j][1]) { for ($p = 0; $p < $r; $p++) { unset($datosEmpleadoProg[$j - $p]); } break; } } else { $arrayFilas[$filx][0] = $empleados[$i][0]; $arrayFilas[$filx][1] = $empleados[$i][1] . " " . $empleados[$i][2] . " " . $empleados[$i][3]; //------------------------------------------------------ $datosEmpleados[$filx][0] = $empleados[$i][0]; $datosEmpleados[$filx][1] = "1"; //$datosEmpleadoProg[$j][2]; //------------------------------------------------------ } } } else { $arrayFilas[$filx][0] = $empleados[$i][0]; $arrayFilas[$filx][1] = $empleados[$i][1] . " " . $empleados[$i][2] . " " . $empleados[$i][3]; // es el nombre del empleado //------------------------------------------------------ $datosEmpleados[$filx][0] = $empleados[$i][0]; $datosEmpleados[$filx][1] = "1"; //------------------------------------------------------ } $filx++; } $arrayHidden = array(0 => "false", 1 => "false"); $arrayAling = array(0 => "left", 1 => "left"); // $arrayCombo=array(); /* ================= fin Set datos para las columnas fijas ====================== */ // print_r($datosEmpleados); /* ============================= Manejo de fechas ============================ */ $diasSem = array('Monday' => 'L', 'Tuesday' => 'M', 'Wednesday' => 'M', 'Thursday' => 'J', 'Friday' => 'V', 'Saturday' => 'S', 'Sunday' => 'D'); $fecha = getdate(time()); if ($datos["mes"] != "") { $mes = $datos["mes"]; } else { $mes = $fecha['mon']; } if ($datos["anio"] != "") { $anio = $datos["anio"]; } else { $anio = $fecha['year']; } $fecha = mktime(0, 0, 0, $mes, 1, $anio); $fechaInicioMes = mktime(0, 0, 0, $mes, 1, $anio); $fechaInicioMes = date("w", $fechaInicioMes); $ultimoDia = date('t', $fecha); // $númeroDeDias = intval(date("t", $mes)); $mes1 = mktime(0, 0, 0, $datos["mes"], 1, $datos["anio"]); setlocale('LC_ALL', 'fr_FR'); $númeroDeDias = date("t", $mes1); /* ============================= Fin Manejo de fechas ============================ */ /* ============ Set de la cabecera de las horas programadas existentes ============= */ $diaMes = 0; for ($coln = 2; $coln < $númeroDeDias + 2; $coln++) { if ($diaMes < $ultimoDia) { $diaMes++; $diaInicial = date("l", mktime(0, 0, 0, $mes, $diaMes, $anio)); $arrayCabecera[$coln] = $diasSem[$diaInicial] . " - " . $diaMes; // es la cabecera $arrayHidden[$coln] = "false"; $arrayAling[$coln] = "center"; } } /* ========== Fin set de la cabecera de las horas programadas existentes ============ */ /* ================== set datos de las horas programadas existentes ================= */ $turnoProgramado = array(); $flag = "NO"; $totalHoras = "0.0"; //================================================================================================ foreach ($datosEmpleados as $i => $valor) { $diaMes = 0; if ($idEmpleadoProgramado) { //verificar que haya empleados programados foreach ($idEmpleadoProgramado as $j => $valx) { if ($datosEmpleados[$i][0] == $idEmpleadoProgramado[$j][0]) { $oLRrhh = new LRrhh(); $turnoProgramado = $oLRrhh->listaTurnoProgramado($idEmpleadoProgramado[$j][0], $datos["iIdProgramacionpersonal"], $datos["mes"], $datos["anio"], 'listaTurnoProgramado', $datosEmpleados[$i][1], $datos["idSEACC"], $datos["cboTipoContrato"]); $flag = "SI"; unset($idEmpleadoProgramado[$j]); break; } else { $turnoProgramado = null; $flag = "NO"; } } $totalHoras = "0"; if ($flag == "SI") { foreach ($turnoProgramado as $r => $value) { $totalHoras = $totalHoras + $value[5]; } } } else { $totalHoras = "0"; } for ($coln = 2; $coln < $númeroDeDias + 2; $coln++) { if ($diaMes < $ultimoDia) { $diaMes++; if ($flag == "NO") { $arrayFilas[$i][$coln] = ""; } else { if ($turnoProgramado) { foreach ($turnoProgramado as $n => $value) { if ($turnoProgramado[$n][4] == $diaMes) { foreach ($cboTESA as $s => $val) { if ($cboTESA[$s][0] == $turnoProgramado[$n][2]) { $arrayFilas[$i][$coln] = $cboTESA[$s][0]; ////// aqui modifique para que se note el turno Jorge Hernandez unset($turnoProgramado[$n]); break; } else { if ($cboTESA[$s][0] == $turnoProgramado[$n][2] && $turnoProgramado[$n][2] != null) { $arrayFilas[$i][$coln] = ""; } } //---------------------------------------------------------------- if ($turnoProgramado[$n][2] == null) { $arrayFilas[$i][$coln] = ""; //es nulo unset($turnoProgramado[$n]); break; } //--------------------------------------------------------------- } break; } else { $arrayFilas[$i][$coln] = ""; } } } else { $arrayFilas[$i][$coln] = ""; } } } } $arrayFilas[$i][$númeroDeDias + 3] = $totalHoras; } //================================================================================================ /* =============== Fin set datos de las horas programadas existentes =============== */ $arrayCabecera[$númeroDeDias + 3] = "Horas Totales"; $arrayHidden[$númeroDeDias + 3] = "false"; $arrayAling[$númeroDeDias + 3] = "center"; $descSucursal = $datos["descSucursal"]; $descArea = $datos["descArea"]; require_once '../../cvista/rrhh/cronogramaHorariosExcel.php'; }