diff --git a/cis/private/profile/urlaubsfreigabe.php b/cis/private/profile/urlaubsfreigabe.php index f71d7adda..d1d4d3648 100644 --- a/cis/private/profile/urlaubsfreigabe.php +++ b/cis/private/profile/urlaubsfreigabe.php @@ -64,6 +64,8 @@ else $datum_obj = new datum(); + + echo ' Urlaubsfreigabe @@ -138,6 +140,7 @@ if ($result = $db->db_query($qry)) if ($uid != '' && !isset($mitarbeiter[$uid]) && $uid != $user && !$rechte->isBerechtigt('admin')) die('Sie haben keine Berechtigung fuer diesen Mitarbeiter'); + //Freigeben eines Urlaubes if (isset($_GET['action']) && $_GET['action'] == 'freigabe') { @@ -213,6 +216,8 @@ function draw_monat($monat) $qry.= " AND mitarbeiter_uid=". $db->db_add_param($uid); $qry.="ORDER BY vondatum, mitarbeiter_uid"; + + if ($result = $db->db_query($qry)) { while ($row = $db->db_fetch_object($result)) @@ -225,10 +230,15 @@ function draw_monat($monat) } echo ""; echo $mitarbeiter[$row->mitarbeiter_uid]['nachname'].' '.$datum_obj->formatDatum($row->vondatum,'d.m.Y')." - ".$datum_obj->formatDatum($row->bisdatum,'d.m.Y'); + if ($vertretung->uid != '') echo ' (Vertretung: '.$vertretung->nachname.')'; + if($row->freigabeamum=='') - echo " zeitsperre_id&year=$year&uid=$uid' class='Item'>Freigabe"; + { + echo " zeitsperre_id&year=$year&uid=$uid' class='Item'>Freigabe"; + } + echo ""; echo '
'; } @@ -247,6 +257,20 @@ if ($uid!='') echo '
'; echo '
'; + //Abschnitt zukünftige Urlaube + $zeitsperre = new zeitsperre(); + $enddatum= $year ."-08-31"; + + if($zeitsperre->getUrlaubstage($uid)) + { + echo "

zukünftige Urlaubstage* angesucht: ". $zeitsperre->getUrlaubstage($uid, $enddatum, false) . " Tage

"; + if ($zeitsperre->getUrlaubstage($uid, $enddatum, true)) + echo "

davon bereits genehmigt: ". $zeitsperre->getUrlaubstage($uid, $enddatum, true) . " Tage

"; + else + echo "

davon bereits genehmigt: 0 Tage

"; + echo "* bis 31.8.". $year; + } + echo ''; } @@ -275,6 +299,8 @@ for($i = 0;$i < 12;$i++) } echo ' + + '; ?> diff --git a/include/zeitsperre.class.php b/include/zeitsperre.class.php index efae1c91d..bafc014a0 100644 --- a/include/zeitsperre.class.php +++ b/include/zeitsperre.class.php @@ -633,5 +633,69 @@ class zeitsperre extends basis_db return true; } + /** + * Liefert zukünftige Urlaube eines Users ab dem heutigen Tag + * + * @param $user + * @param $enddatum optional, wird nur abgefragt wenn != null, Format 'YYYY-MM-DD' + * @param $freigegeben, wird nur abgefragt wenn != true + * @return true wenn ok, false im Fehlerfall + */ + public function getUrlaubstage($user, $enddatum=null, $freigegeben=false) + { + + $qry = " + SELECT SUM(AnzahlTage) as output + FROM + ( + SELECT + * + ,(DATE_PART('day', bisdatum ::timestamp - vondatum ::timestamp )+1) as AnzahlTage + FROM + campus.tbl_zeitsperre + WHERE + zeitsperretyp_kurzbz = 'Urlaub' + AND vondatum >= now() + AND mitarbeiter_uid = ". $this->db_add_param($user); + + if($enddatum) + $qry.= 'AND bisDatum <= '. $this->db_add_param($enddatum); + + if( $freigegeben ) + $qry .= 'AND freigabeamum is not null'; + + if($enddatum) + { + $qry .= " + UNION + SELECT * + ,(DATE_PART('day',".$this->db_add_param($enddatum)."::timestamp - vondatum ::timestamp )+1) as AnzahlTage + FROM campus.tbl_zeitsperre + WHERE zeitsperretyp_kurzbz = 'Urlaub' + AND mitarbeiter_uid = ". $this->db_add_param($user); + + $qry.=" AND bisDatum >=" . $this->db_add_param($enddatum)." + AND vonDatum <= " .$this->db_add_param($enddatum); + + if( $freigegeben ) + $qry .= 'AND freigabeamum is not null'; + + } + $qry .= ') AS countHolidays'; + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->output; + } + } + else + { + $this->errormsg = 'Fehler beim Berechnen der Urlaubstage'; + return false; + } + } + } ?>