Incam_Intranet/functions_agenda.php

155 lines
5.4 KiB
PHP
Raw Permalink Normal View History

<?php
function ver_dia_agenda($dia, $mes, $ano, $oid, $fecha, $url, $vista){
$fecha = $ano."-".$mes."-".$dia;
//Si es la fecha actual lo marcamos:
if(fecha_valida($fecha) == 0) $url= "<span class=encabezado>$url</span>";
//Si es festivo lo marcamos.
if(festivo($dia, $mes, $ano, $oid)){
echo "<td class=dia_festivo>$url";
//Si no es festivo comprobamos las vacaciones.
}else{
$aprobada = estado_vacaciones($oid, $fecha);
if($aprobada >= 0){
if($aprobada == 0){
echo "<td class=dia_vacaciones_s>$url";
}else if($aprobada == 1){
echo "<td class=dia_vacaciones_ap>$url";
}else if($aprobada == 2){
echo "<td class=dia_vacaciones_r>$url";
}else if($aprobada == 3){
echo "<td class=dia_vacaciones_an>$url";
}
}else{
echo "<td class=dia_laboral_an>$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 "<input type='checkbox' name=fecha[] value='$fecha' checked>";
}else{
echo "<input type='checkbox' name=fecha[] value='$fecha'>";
}
echo "<input type='hidden' name=fecha_del[] value='$fecha'>";
}
}
//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 "<input type=text size=1 name=".$fecha." value='".$parte."'>";
}else{
echo "<input type=text size=1 name=".$fecha." value='".$parte."' readonly>";
}
}
echo "</td>";
}
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<73>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<62>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;
}
?>