usuario=$usuario; if($mes < 10){ //Me aseguro de que no tenga cero delante $mes = $mes + 0; //Y le pongo el cero delante. $mes = "0".$mes; } $this->mes=$mes; $this->anio=$anio; $this->oid = $oid; $this->locale = $locale; $this->calendario = new Calendario($this->usuario, $this->mes, $this->anio, array(), "", $this->locale); if($oid > 0){ $this->empleado = new Empleado($usuario, $oid); }else{ $error = $this->locale['1534']; throw new Exception($error); return array(); exit; } } /** * Obtiene una lista de todas las vacaciones del usuario en el mes y a�o que * est�n en un determinado estado. * * @param estado - Estado en el que se busca que est�n las vacaciones. * @return Una lista con las vacaciones en ese estado. * @throws Lanza excepciones si el usuario no tiene vacaciones. */ private function cargaVacaciones(){ if($this->vacaciones == null){ $this->vacacionesSolicitadas = array(); $this->vacacionesAprobadas = array(); $this->vacacionesRechazadas = array(); $this->vacacionesAnulables = array(); //Comprobamos vacaciones: $oidP = $this->usuario->getValor("oid"); //Si no soy yo y no soy admin ni RRHH, no tengo permiso: if(($oidP != $this->oid) && (!$this->usuario->tieneRol(1)) && (!$this->usuario->tieneRol(4))){ $error = $this->locale['3031']; throw new Exception($error); return array(); exit; //Vacaciones correctos, sigo. }else{ //Cargo la lista de d�as: $fecha = $this->anio."-".$this->mes."-"; $consulta = "SELECT fecha, aprobada FROM vacaciones WHERE oid='".$this->oid."' AND fecha like '".$fecha."%'"; $bd = new BD(); $array = $bd->keyValueQuery($consulta, "fecha", "aprobada"); $this->vacaciones = array(); foreach($array as $fecha => $estado){ $dia = explode("-", $fecha); $dia = $dia[2]+0; $this->vacaciones[$dia] = $estado; switch($estado){ case 0: $this->vacacionesSolicitadas[] = $dia; break; case 1: $this->vacacionesAprobadas[] = $dia; break; case 2: $this->vacacionesRechazadas[] = $dia; break; case 3: $this->vacacionesAnulables[] = $dia; break; } } } } // $dias=array(); // // //Comprobamos vacaciones: // $oidP = $this->usuario->getValor("oid"); // // //Si no soy yo y no soy admin ni RRHH, no tengo permiso: // if(($oidP != $this->oid) && (!$this->usuario->tieneRol(1)) && (!$this->usuario->tieneRol(4))){ // $error = $this->locale['3031']; // throw new Exception($error); // return $dias; // exit; // }else{ // //Busco los d�as solicitados: // $fecha = $this->anio."-".$this->mes."-"; // $consulta = "SELECT fecha FROM vacaciones WHERE oid='".$this->oid."' AND aprobada = '".$estado."' AND fecha like '".$fecha."%'"; // $bd = new BD(); // $array = $bd->arrayQuery($consulta, "fecha"); // foreach($array as $elem){ // $dia = explode("-", $elem); // $dias[] = $dia[2]+0; // } // } // // return $dias; } /** * Obtiene una lista de todas las vacaciones del usuario en el mes y a�o que * est�n solicitadas. * * @return Una lista con las vacaciones aprobadas. * @throws Lanza excepciones si el usuario no tiene vacaciones. */ function getVacSoli(){ if($this->vacacionesSolicitadas == null){ $this->cargaVacaciones(); } return $this->vacacionesSolicitadas; } /** * Obtiene una lista de todas las vacaciones del usuario en el mes y a�o que * est�n aprobadas. * * @return Una lista con las vacaciones aprobadas. * @throws Lanza excepciones si el usuario no tiene vacaciones. */ function getVacApro(){ if($this->vacacionesAprobadas == null){ $this->cargaVacaciones(); } return $this->vacacionesAprobadas; } /** * Obtiene una lista de todas las vacaciones del usuario en el mes y a�o que * est�n rechazadas. * * @return Una lista con las vacaciones rechazadas. * @throws Lanza excepciones si el usuario no tiene vacaciones. */ function getVacRech(){ if($this->vacacionesRechazadas == null){ $this->cargaVacaciones(); } return $this->vacacionesRechazadas; } /** * Obtiene una lista de todas las vacaciones del usuario en el mes y a�o que * est�n pendientes de anulaci�n. * * @return Una lista con las vacaciones pendientes de anulaci�n. * @throws Lanza excepciones si el usuario no tiene vacaciones. */ function getVacPend(){ if($this->vacacionesAnulables == null){ $this->cargaVacaciones(); } return $this->vacacionesAnulables; } // /** // * Calcula el n�mero de d�as de vacaciones restantes de un empleado. // * // * @return los d�as restantes de vacaciones dentro del año. // */ // public function getVacacionesRestantes(){ // //TODO deber�a lanzar excepci�n por permisos de consulta. // $anio_hoy = date("Y"); // $consulta = "SELECT dias FROM vacaciones_oid WHERE oid='".$this->empleado->getValor("oid")."' AND anyo='".$this->anio."'"; // $bd = new BD(); // $dias = $bd->getCampo($consulta); // //Primero comprobamos si est� en la tabla guardado: // if(($dias >= 0) && ($dias != "")){ // return $dias; // //Para el a�o presente se calcula seg�n su fecha de alta. // }else if($this->anio == $anio_hoy){ // $fecha = $this->empleado->getValor("fecha_alta"); // $fecha_array = explode("-", $fecha); // $anyo = $fecha_array[0]; // $mes = $fecha_array[1]; // $dia = $fecha_array[2]; // $fecha = mktime(0,0,0,$mes,$dia,$anyo); // $dias_mes = date('t',$fecha); // $fiestas = constante("fiestas"); // //Si se dio de alta un a�o anterior al actual tiene todos sus d�as. // if($anyo < date('Y')){ // //Se deja fiestas tal y como est�. // //Si no, se calculan seg�n la f�rmula. // }else{ // $fiestas = (($fiestas/12)*(12-$mes))+(($fiestas/12/$dias_mes)*($dias_mes-$dia)); // $fiestas=round($fiestas,0); // } // //Para a�os posteriores tiene todos los d�as. // }else if($this->anio > $anio_hoy){ // $fiestas = constante("fiestas"); // //Y para a�os anteriores, devolvemos cero. // }else{ // $fiestas = 0; // } // // //Actualizamos la tabla para ahorrar c�lculos posteriores: // $consulta = "INSERT INTO vacaciones_oid (oid, anyo, dias) VALUES ('".$this->oid."', '".$this->anio."', '".$fiestas."')"; // $bd = new BD(); // $bd->execQuery($consulta); // // return $fiestas; // } /** * Acceso al mes. * @return El mes. */ function getMes(){ return $this->mes; } /** * Acceso al a�o. * @return El a�o. */ function getAnio(){ return $this->anio; } /** * Asigna el valor de las vacaciones restantes del empleado. * * @param dias - N�mero de d�as de vacaciones restantes a asociar. * @return True si se asign� correctamente y false en caso contrario. * @throws Lanza excepci�n si el usuario no tiene permiso. */ public function setVacacionesRestantes($dias){ //Comprobamos permisos. if($this->usuario->tieneRol(4) || $this->usuario->tieneRol(1)){ $consulta = "UPDATE vacaciones_oid SET dias='$dias' WHERE oid='".$this->oid."' AND anyo='".$this->anio."'"; $bd = new BD(); return $bd->execQuery($consulta); }else{ $error = $this->locale['3001']; throw new Exception($error); return $dias; exit; } } /** * Calcula el estado en el que se encuentra un d�a. * * @param dia - D�a dentro del mes y a�o de las vacaciones. * @return El c�digo de estado si se encuentra el d�a, -1 en caso contrario. */ public function getEstadoDia($dia){ $this->cargaVacaciones(); $estado = $this->vacaciones[$dia]; if($estado == "" || $estado < 0){ $estado = -1; } return $estado; } /** * */ private function insertarDias($dias, $estado){ $oid = $this->oid; $bd = new BD(); foreach($dias as $dia => $mensaje){ //En el caso de solicitud de vacaciones o solicitud de anulaci�n de vacaciones es t�cnico. if($estado == 0 || $estado == 3){ $observacion = "observacion_tecnico"; $observacion2 = "observacion_rrhh"; $mensaje2 = $this->getObservacionRRHH($dia); //En caso de aprobaci�n o rechace de vacaciones es RRHH }else if($estado == 1 || $estado == 2){ $observacion = "observacion_rrhh"; $observacion2 = "observacion_tecnico"; $mensaje2 = $this->getObservacionTecnico($dia); } $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "DELETE FROM vacaciones WHERE oid = '".$oid."' AND fecha='".$fecha."'"; $bd->execQuery($consulta); $consulta = "INSERT INTO vacaciones (oid, fecha, aprobada, f_mod, ".$observacion.", ".$observacion2.") VALUES ('".$oid."', '".$fecha."', '".$estado."',curdate(), '".$mensaje."', '".$mensaje2."')"; if(!$bd->execQuery($consulta)){ return false; //Si todo ha ido bien comprobamos el estado a ver si hay que actualizar //las vacaciones restantes. }else{ $estadoPrevio = $this->vacaciones[$dia]; $this->cambiaEstado($dia, $estado); $consulta = ""; /* Efectos de los cambios de estado: * Solicitada: sin efectos. * Aprobada: restar d�a de vacaciones y actualizar parte. * Rechazada: sin efectos. * Pendiente de anulaci�n: sin efectos. */ switch ($estado) { case 1: //Se quita un d�a de vacaciones, salvo en el caso de //que estemos rechazando una solicitud de anulaci�n. // Si el d�a es 24 de diciembre o 31 de Diciembre, se resta s�lo 0,5 if($estadoPrevio != 3){ if(($dia=="24") || ($dia=="31") && $this->mes=="12"){ $this->empleado->variaVacaciones(-0.5); }else { $this->empleado->variaVacaciones(-1); } } break; default: break; } } } return true; } private function eliminaDia($dia){ $this->vacaciones = array_diff($this->vacaciones, array($dia)); $estadoPrevio = $this->vacaciones[$dia]; //Lo eliminamos de la lista donde estuviera: switch($estadoPrevio){ case 0: $this->vacacionesSolicitadas = array_diff($this->vacacionesSolicitadas, array($dia)); break; case 1: $this->vacacionesAprobadas = array_diff($this->vacacionesAprobadas, array($dia)); break; case 2: $this->vacacionesRechazadas = array_diff($this->vacacionesRechazadas, array($dia)); break; case 3: $this->vacacionesAnulables = array_diff($this->vacacionesAnulables, array($dia)); break; } } private function cambiaEstado($dia, $estado){ $this->cargaVacaciones(); $estadoPrevio = $this->vacaciones[$dia]; if($estadoPrevio == "") $estadoPrevio = -1; $this->vacaciones[$dia] = $estado; //Actuamos s�lo si hay cambio de estado. if($estadoPrevio != $estado){ //Lo eliminamos de la lista donde estuviera: switch($estadoPrevio){ case 0: $this->vacacionesSolicitadas = array_diff($this->vacacionesSolicitadas, array($dia)); break; case 1: $this->vacacionesAprobadas = array_diff($this->vacacionesAprobadas, array($dia)); break; case 2: $this->vacacionesRechazadas = array_diff($this->vacacionesRechazadas, array($dia)); break; case 3: $this->vacacionesAnulables = array_diff($this->vacacionesAnulables, array($dia)); break; } //Y lo insertamos en la correspondiente: switch($estado){ case 0: $this->vacacionesSolicitadas[] = $dia; break; case 1: $this->vacacionesAprobadas[] = $dia; break; case 2: $this->vacacionesRechazadas[] = $dia; break; case 3: $this->vacacionesAnulables[] = $dia; break; } return true; }else{ return false; } } public function getObservacionTecnico($dia){ $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "SELECT observacion_tecnico FROM vacaciones WHERE fecha = '".$fecha."' AND oid = ".$this->oid.""; $bd = new BD(); return $bd->getCampo($consulta); } public function getObservacionRRHH($dia){ $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "SELECT observacion_rrhh FROM vacaciones WHERE fecha = '".$fecha."' AND oid = ".$this->oid.""; $bd = new BD(); return $bd->getCampo($consulta); } /** * Solicita unos d�as de vacaciones. Si alguno falla no se solicita ninguno. * @return true si se pudieron solicitar todos y false si falla alguno. */ public function solicitar($dias){ if(count($dias) <= 0){ $error = $this->locale['3027']; throw new Exception($error); return false; exit; } $dias_correctos = array(); $dias_fallidos = array(); //Comprobamos que estamos recibiendo el argumento bien formado. if(gettype($dias) == "array"){ //Si tiene rol t�cnico seguimos. if((($this->usuario->tieneRol(6)) && ($this->usuario->getValor("oid") == $this->oid)) || $this->usuario->tieneRol(4)){ foreach($dias as $dia => $mensaje){ if(($this->esSolicitable($dia))){ $dias_correctos[$dia] = $mensaje; $solicitud = $dia.","; }else{ $dias_incorrectos[] = $dia; } } //Comprobamos que todos son solicitables: if((count($dias_correctos) == count($dias)) && (count($dias_fallidos) == 0)){ //Si insertamos todos los d�as, enviamos el mail con la solicitud. if($this->insertarDias($dias_correctos, 0)){ $nombre = $this->usuario->getValor("nombre"); $apellidos = $this->usuario->getValor("apellidos"); $oid = $this->usuario->getValor("oid"); $email = $this->locale['616']." $nombre $apellidos.\n\n"; $email .= $solicitud."/".$this->mes."/".$this->anio."\n\n"; $email .= "\n\n"; $direccion = constante("email_rrhh"); if(!envia_correo_empleados($direccion, $this->locale['611'], $email)){ //TODO �Excepci�n? } } }else{ $error = $this->locale['3004']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3004']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3007']; throw new Exception($error); return false; exit; } } /** * Comprueba si se puede solicitar un d�a como vacaciones. * Si el usuario tiene rol RRHH sí que puede solicitar * */ public function esSolicitable($dia){ if($this->usuario->tieneRol("4")){ return true; } $plazo = constante("antelacion_vacaciones"); $fecha = $this->anio."-".$this->mes."-".$dia; $estado = $this->getEstadoDia($dia); $localidad = $this->empleado->getValor("localidad"); $oid = $this->oid; $mes_hoy=date("m"); $ano_hoy=date("Y"); //Si el plazo es correcto seguimos: if(fecha_valida($fecha) > $plazo){ //Si no est�n ya solicitadas ni el d�a es festivo seguimos: $c = $this->calendario; if(($estado == -1) && (!$c->esFestivo($localidad, $dia))){ //Si se solicita para este a�o o para el pr�ximo dentro del plazo, todo ok: if(($this->anio == date("Y")) || (($this->anio == date("Y") + 1) && (fecha_valida(date("Y")."-12-01") <= 0))){ return true; }else{ return false; } //D�a solicitado o festivo }else{ return false; } //Fecha fuera de plazo. }else{ return false; } } /** * Aprobaci�n de una solicitud de vacaciones. */ public function aprobar($dia){ //Si insertamos todos los d�as, enviamos el mail con la aprobaci�n e insertamos //una P en el parte de actividad. // Calculamos el número que va a restar $diasResta=1; if(($dia=="24") || ($dia=="31") && $this->mes=="12"){ $diasResta=0.5; } // Comprobamos que tenga vacaciones suficientes if($this->empleado->diasTotalesVacaciones()<$diasResta){ $error = $this->locale['3004']; throw new Exception($error); return false; exit; } $array=array(); $array[$dia]=""; if($this->insertarDias($array, 1)){ $bd = new BD(); $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "DELETE FROM partes_actividad WHERE oid = '".$this->oid."' AND fecha='".$fecha."'"; $bd->execQuery($consulta); $consulta = "INSERT INTO partes_actividad (oid, fecha, dato) VALUES ('".$this->oid."', '".$fecha."', 'P')"; if(!$bd->execQuery($consulta)){ return false; } $nombre = $this->empleado->getValor("nombre"); $apellidos = $this->empleado->getValor("apellidos"); $direccion = $this->empleado->getValor("email"); $email = $this->locale['613']." ".$dia.$this->locale['614']; //$direccion = constante("email_rrhh"); if(!envia_correo_empleados($direccion, $this->locale['622'], $email)){ //TODO Excepcion? } }else{ $error = $this->locale['3011']; throw new Exception($error); return false; exit; } } /** * Rechace de una solicitud de vacaciones. */ function rechazar($dias){ $dias_correctos = array(); $dias_fallidos = array(); //Comprobamos que estamos recibiendo el argumento bien formado. if(gettype($dias) == "array"){ //Si tiene rol t�cnico seguimos. if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){ foreach($dias as $dia => $mensaje){ //S�lo puedo rechazar vacaciones solicitadas. if($this->getEstadoDia($dia) == 0){ $dias_correctos[$dia] = $mensaje; $muestra_dias .= $dia."-".$this->mes."-".$this->anio." "; }else{ $dias_incorrectos[] = $dia; } } //Comprobamos que todos son rechazables: if((count($dias_correctos) == count($dias)) && (count($dias_fallidos) == 0)){ //Si insertamos todos los d�as, enviamos el mail con las rechazadas. if($this->insertarDias($dias_correctos, 2)){ $nombre = $this->usuario->getValor("nombre"); $apellidos = $this->usuario->getValor("apellidos"); $email = $this->locale['613']." ".$muestra_dias.$this->locale['615']; //$direccion = constante("email_rrhh"); $direccion = $this->empleado->getValor("email"); if(!envia_correo_empleados($direccion, $this->locale['622'], $email)){ //TODO �Excepci�n? } }else{ $email = $this->locale['613']." ".$muestra_dias.$this->locale['615']; throw new Exception($error); return false; exit; } //Si no son todos rechazables. }else{ $error = $this->locale['3012']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3017']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3007']; throw new Exception($error); return false; exit; } } /** * Rechace de una solicitud de anulaci�n de vacaciones. */ function rechazarAnulacion($dias){ $dias_correctos = array(); $dias_fallidos = array(); //Comprobamos que estamos recibiendo el argumento bien formado. if(gettype($dias) == "array"){ //Si tiene rol t�cnico seguimos. if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){ foreach($dias as $dia => $mensaje){ //S�lo puedo rechazar vacaciones pendientes de anulaci�n. if($this->getEstadoDia($dia) == 3){ $dias_correctos[$dia] = $mensaje; }else{ $dias_incorrectos[] = $dia; } } //Comprobamos que todos son rechazables: if((count($dias_correctos) == count($dias)) && (count($dias_fallidos) == 0)){ //Si insertamos todos los d�as, enviamos el mail con las rechazadas. if($this->insertarDias($dias_correctos, 1)){ //TODO �Necesario? }else{ $error = $this->locale['3029']; throw new Exception($error); return false; exit; } //Si no son todos rechazables. }else{ $error = $this->locale['3029']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3017']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3007']; throw new Exception($error); return false; exit; } } /** * Anulaci�n de unas vacaciones aprobados. */ function anular($dias){ $dias_correctos = array(); $dias_fallidos = array(); //Comprobamos que estamos recibiendo el argumento bien formado. if(gettype($dias) == "array"){ //Si tiene rol t�cnico seguimos. if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){ foreach($dias as $dia => $mensaje){ //S�lo puedo anular las pendientes de anulaci�n. if($this->getEstadoDia($dia) == 3){ $solicitud = $dia.","; $dias_correctos[] = $dia; }else{ $dias_incorrectos[] = $dia; } } //Comprobamos que todos son aprobables: if((count($dias_correctos) == count($dias)) && (count($dias_fallidos) == 0)){ //Si insertamos todos los d�as, enviamos el mail con las anuladas. if($this->anularDias($dias_correctos)){ $nombre = $this->usuario->getValor("nombre"); $apellidos = $this->usuario->getValor("apellidos"); $oid = $this->usuario->getValor("oid"); $email = $this->locale['600']." $nombre $apellidos.\n\n"; $email .= $solicitud."\n\n"; $path = "http://portal.selforsistemas.net"; $link = "".$nombre.""; $email = $email.$link."\n\n"; $direccion = constante("email_rrhh"); if(!envia_correo_empleados($direccion, $this->locale['619'], $email)){ //TODO �Excepci�n? } // Se suma 1 d�a a las vacaciones // Si es 24 o 31 de diciembre se suma 1; if(($dia=="24") || ($dia=="31") && $this->mes=="12"){ $this->empleado->variaVacaciones(0.5); }else{ $this->empleado->variaVacaciones(1); } }else{ $error = $this->locale['3013']; throw new Exception($error); return false; exit; } //Si no son todos anulables. }else{ $error = $this->locale['3013']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3018']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3007']; throw new Exception($error); return false; exit; } } function eliminarSolicitud($dias){ $dias_correctos = array(); $dias_fallidos = array(); //Comprobamos que estamos recibiendo el argumento bien formado. if(gettype($dias) == "array"){ foreach($dias as $dia => $mensaje){ //S�lo puedo eliminar vacaciones solicitadas. if($this->getEstadoDia($dia) == 0){ $dias_correctos[] = $dia; $muestra_dias .= $dia."-".$this->mes."-".$this->anio." "; }else{ $dias_incorrectos[] = $dia; } } //Comprobamos que todos son rechazables: if((count($dias_correctos) == count($dias)) && (count($dias_fallidos) == 0)){ //Si insertamos todos los d�as, enviamos el mail con las rechazadas. if($this->anularDias($dias_correctos)){ return true; } //Si no son todos rechazables. }else{ $error = $this->locale['3012']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3007']; throw new Exception($error); return false; exit; } } private function anularDias($dias){ $oid = $this->oid; $bd = new BD(); foreach($dias as $dia){ $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "DELETE FROM vacaciones WHERE oid = '".$oid."' AND fecha='".$fecha."'"; if(!$bd->execQuery($consulta)){ return false; //Si todo ha ido bien comprobamos el estado a ver si hay que actualizar //las vacaciones restantes. }else{ $this->eliminaDia($dia); $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "DELETE FROM partes_actividad WHERE oid = '".$oid."' AND fecha='".$fecha."'"; $bd->execQuery($consulta); // $consulta = "INSERT INTO partes_actividad (oid, fecha, dato) VALUES ('".$oid."', '".$fecha."', '0')"; // if(!$bd->execQuery($consulta)){ // return false; // } } } return true; } /** * Solicitud de anulaci�n de unas vacaciones aprobadas. */ function solicitarAnulacion($dias){ if(count($dias) <= 0){ $error = $this->locale['3027']; throw new Exception($error); return false; exit; } $dias_correctos = array(); $dias_fallidos = array(); //Comprobamos que estamos recibiendo el argumento bien formado. if(gettype($dias) == "array"){ //Si tiene rol t�cnico seguimos. if(($this->usuario->tieneRol(6)) && ($this->usuario->getValor("oid") == $this->oid)){ foreach($dias as $dia => $mensaje){ if($this->esAnulable($dia)){ $dias_correctos[$dia] = $mensaje; }else{ $dias_incorrectos[] = $dia; } } //Comprobamos que todos son solicitables: if((count($dias_correctos) == count($dias)) && (count($dias_fallidos) == 0)){ //Si insertamos todos los d�as, enviamos el mail con la solicitud. if($this->insertarDias($dias_correctos, 3)){ //TODO } }else{ $error = $this->locale['3016']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3016']; throw new Exception($error); return false; exit; } //Si no, lanzamos excepci�n. }else{ $error = $this->locale['3007']; throw new Exception($error); return false; exit; } } public function setEmpleado($empleado, $oid){ $this->empleado = $empleado; $this->oid = $oid; } /** * Comprueba si se puede anular un d�a de vacaciones. * */ public function esAnulable($dia){ $plazo = constante("antelacion_vacaciones"); $fecha = $this->anio."-".$this->mes."-".$dia; $estado = $this->getEstadoDia($dia); $localidad = $this->empleado->getValor("localidad"); $oid = $this->oid; //Si el plazo es correcto seguimos: if(fecha_valida($fecha) > $plazo){ //Si est�n aprobadas y el d�a es festivo seguimos: $c = $this->calendario; if(($estado == 1) && (!$c->esFestivo($localidad, $dia))){ //Si se solicita para este a�o o para el pr�ximo dentro del plazo, todo ok: if(($this->anio == date("Y")) || (($this->anio == date("Y") + 1) && (fecha_valida(date("Y")."-12-15") <= 0))){ return true; }else{ $error = $this->locale['3019']; throw new Exception($error); return false; exit; } //D�a solicitado o festivo }else{ $error = $this->locale['3015']; throw new Exception($error); return false; exit; } //Fecha fuera de plazo. }else{ $error = $this->locale['3019']; throw new Exception($error); return false; exit; } } function getOidPersona(){ return $this->empleado->getValor("oid"); } function getNombrePersona(){ return $this->empleado->getValor("nombre")." ".$this->empleado->getValor("apellidos"); } } ?>