$url";
//Si es festivo lo marcamos.
if(festivo($dia, $mes, $ano, $oid)){
echo "
$url";
//Si no es festivo comprobamos las vacaciones.
}else{
$aprobada = estado_vacaciones($oid, $fecha);
if($aprobada >= 0){
if($aprobada == 0){
echo "
$url";
}else if($aprobada == 1){
echo "
$url";
}else if($aprobada == 2){
echo "
$url";
}else if($aprobada == 3){
echo "
$url";
}
}else{
echo "
$url";
}
if(puede_solicitar_vacaciones($oid, $fecha) || (comprobar_permisos("AP"))){
//Si la vista es diaria el día viene ya marcado para solicitar directamente.
if($vista == "diaria"){
echo "";
}else{
echo "";
}
echo "";
}
}
//Si no tiene permiso de rellenar partes de actividad no le aparece su parte.
if(permiso_parte($oid) && $vista != "anual"){
$parte = parte_diario($oid, $fecha);
if(!$parte) $parte = 0;
//En la vista anual no se muestran los partes de actividad.
if(puede_actualizar_parte($oid, $fecha) || (comprobar_permisos("AP"))){
echo "";
}else{
echo "";
}
}
echo "
";
}
function permiso_parte($oid){
$estado = -1;
$consulta = "select * from usuarios where oid='$oid'";
$resultado = mysql_query($consulta);
while($rows = mysql_fetch_array($resultado)){
$permisos = $rows["permisos"];
$rol = $rows["rol"];
}
if(in_array("RP", explode(".", $permisos))) return true;
$consulta = "select * from rol where oid='$rol'";
$resultado = mysql_query($consulta);
while($rows = mysql_fetch_array($resultado)){
$permisos_rol = $rows["permisos"];
}
if(in_array("RP", explode(".", $permisos_rol))) return true;
return false;
}
/* Devuelve el estado de vacaciones de un día concreto de un usuario */
function estado_vacaciones($oid, $fecha){
$estado = -1;
$consulta = "select * from vacaciones where oid='$oid' and fecha='$fecha'";
$resultado = mysql_query($consulta);
while($rows = @mysql_fetch_array($resultado)){
$estado = $rows["aprobada"];
}
return $estado;
}
/* Devuelve el estado de vacaciones de un día concreto de un usuario */
function parte_diario($oid, $fecha){
$parte = "";
$consulta = "select * from partes_actividad where oid='$oid' and fecha='$fecha'";
$resultado = mysql_query($consulta);
while($rows = @mysql_fetch_array($resultado)){
$parte = $rows["dato"];
}
return $parte;
}
function puede_actualizar_parte($oid, $fecha){
$mes = explode("-", $fecha);
$mes = $mes[1];
$anyo = explode("-", $fecha);
$anyo = $anyo[0];
$dia_hoy = date("j");
$mes_hoy = date("n");
$anyo_hoy = date("Y");
//No se puede rellenar parte de vacaciones solicitadas o aprobadas
if(estado_vacaciones($oid, $fecha) == 0) return false;
if(estado_vacaciones($oid, $fecha) == 1) return false;
//Sólo podemos actualizar partes del mismo mes o del anterior (hasta el día 3).
if($anyo != $anyo_hoy) return false;
if(($mes+1 == $mes_hoy) && ($dia_hoy <= 3)) return true;
if($mes != $mes_hoy) return false;
return true;
}
function puede_solicitar_vacaciones($oid, $fecha){
$plazo = constante("antelacion_vacaciones");
$mes = explode("-", $fecha);
$mes = $mes[1];
$anyo = explode("-", $fecha);
$anyo = $anyo[0];
$dia = explode("-", $fecha);
$dia = $dia[2];
if(!$dia){
$fecha = $anyo."-".$mes."-31";
}else{
$ev = estado_vacaciones($oid, $fecha);
//Sólo pueden pedirse fechas que no estén en proceso de ser pedidas.
if($ev != -1 && $ev != 1) return false;
}
//Las fechas se deben pedir con cierto plazo previo.
if(fecha_valida($fecha) < $plazo) return false;
//Siempre que cumpla el plazo se pueden solicitar vacaciones para el año presente.
if($anyo == date("Y")) return true;
//También se pueden solicitar vacaciones para el año siguiente...
if($anyo != date("Y") + 1) return false;
//a partir del 15 de diciembre.
if(fecha_valida(date("Y")."-12-15") <= 0) return true;
return false;
}
?>