, * Andreas Oesterreicher , * Rudolf Hangl and */ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/zeitsperre.class.php'); require_once('../../../include/person.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/resturlaub.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); $user = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if(isset($_GET['year']) && is_numeric($_GET['year'])) $year = $_GET['year']; else { //Bis August das aktuelle Jahr anzeigen //Ab September das naechste if(date('m')<9) $year = date('Y'); else $year = date('Y')+1; } if(isset($_GET['uid'])) $uid=$_GET['uid']; else $uid=''; $datum_obj = new datum(); echo ' Urlaubsfreigabe '; } //Jahr mit Pfeilen zum blaettern anzeigen if($uid!='') { echo '
 
 Urlaubsfreigabe

'; //Untergebene holen $mitarbeiter = new mitarbeiter(); $mitarbeiter->getUntergebene($user); if(count($mitarbeiter->untergebene)==0 && !$rechte->isBerechtigt('admin')) die('Es sind Ihnen keine Mitarbeiter zugeteilt für die sie den Urlaub freigeben dürfen'); $untergebene = ''; foreach ($mitarbeiter->untergebene as $row) { if($untergebene!='') $untergebene.=','; $untergebene .= "'".$row."'"; } if($rechte->isBerechtigt('admin')) { if($untergebene!='') $untergebene.=','; $untergebene .= "'".$uid."'"; } $qry = "SELECT * FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE uid in($untergebene)"; $mitarbeiter = array(); if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { $mitarbeiter[$row->uid]['vorname']=$row->vorname; $mitarbeiter[$row->uid]['nachname']=$row->nachname; $mitarbeiter[$row->uid]['titelpre']=$row->titelpre; $mitarbeiter[$row->uid]['titelpost']=$row->titelpost; } } 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') { $zeitsperre = new zeitsperre(); if($zeitsperre->load($_GET['id'])) { if(isset($mitarbeiter[$zeitsperre->mitarbeiter_uid])) { $zeitsperre->freigabeamum = date('Y-m-d H:i:s'); $zeitsperre->freigabevon = $user; if(!$zeitsperre->save(false)) echo "Fehler bei der Freigabe: $zeitsperre->errormsg"; } else { echo 'Sie haben keine Berechtigung den Urlaub für diesen Mitarbeiter freizugeben'; } } else { echo 'Die Zeitsperre konnte nicht geladen werden'; } } //Speichern der Resturlaubstage if(isset($_POST['saveresturlaub'])) { if(isset($_POST['resturlaubstage']) && is_numeric($_POST['resturlaubstage'])) { $resturlaub = new resturlaub(); $resturlaub->load($uid); $resturlaub->resturlaubstage=$_POST['resturlaubstage']; $resturlaub->updateamum=date('Y-m-d H:i:s'); $resturlaub->updatevon = $user; if($resturlaub->save()) echo 'Resturlaubstage wurden erfolgreich gespeichert'; else echo 'Fehler beim Speichern der Resturlaubstage: '.$resturlaub->errormsg.''; } else echo 'Fehler beim Speichern der Resturlaubstage: Resturlaub muss eine gueltige Zahl sein'; } //Monat zeichenen function draw_monat($monat) { global $untergebene, $mitarbeiter, $year, $datum_obj, $uid; if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); echo '
'; echo '
'; echo date('F',mktime(0,0,0,$monat,1,date('Y'))); echo " ".($monat>8?$year-1:$year); echo '
'; //Alle Anzeigen bei denen das von- oder bisdatum in dieses monat fallen $qry = "SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND ( (date_part('month', vondatum)='$monat' AND date_part('year', vondatum)='".($monat>8?$year-1:$year)."') OR (date_part('month', bisdatum)='$monat' AND date_part('year', bisdatum)='".($monat>8?$year-1:$year)."') )"; if($uid=='') $qry.=" AND mitarbeiter_uid in($untergebene)"; else $qry.=" AND mitarbeiter_uid='".addslashes($uid)."'"; $qry.="ORDER BY vondatum, mitarbeiter_uid"; if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { $freigabe=''; if($row->freigabeamum!='') { $freigabe = "Freigabe am ".$datum_obj->formatDatum($row->freigabeamum, 'd.m.Y')." von Benutzer $row->freigabevon"; } echo ""; echo $mitarbeiter[$row->mitarbeiter_uid]['nachname'].' '.$datum_obj->formatDatum($row->vondatum,'d.m.Y')." - ".$datum_obj->formatDatum($row->bisdatum,'d.m.Y'); if($row->freigabeamum=='') echo " zeitsperre_id&year=$year&uid=$uid' class='Item'>Freigabe"; echo ""; echo '
'; } } echo '
"; echo '
'; echo "Alle Mitarbeiter anzeigen
'; echo ''; //Anzeige Resturlaubsberechnung $resturlaub = new resturlaub(); if($resturlaub->load($uid)) { $resturlaubstage = $resturlaub->resturlaubstage; $mehrarbeitsstunden = $resturlaub->mehrarbeitsstunden; $anspruch = $resturlaub->urlaubstageprojahr; } else { $resturlaubstage=0; $mehrarbeitsstunden=0; $anspruch=25; } $jahr=date('Y'); if (date('m')>8) { $datum_beginn_iso=$jahr.'-09-01'; $datum_beginn='1.Sept.'.$jahr; $datum_ende_iso=($jahr+1).'-08-31'; $datum_ende='31.Aug.'.($jahr+1); $geschaeftsjahr=$jahr.'/'.($jahr+1); } else { $datum_beginn_iso=($jahr-1).'-09-01'; $datum_beginn='1.Sept.'.($jahr-1); $datum_ende_iso=$jahr.'-08-31'; $datum_ende='31.Aug.'.$jahr; $geschaeftsjahr=($jahr-1).'/'.$jahr; } //Urlaub berechnen $gebuchterurlaub=0; $qry = "SELECT sum(bisdatum-vondatum+1) as anzahltage FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='$uid' AND ( vondatum>='$datum_beginn_iso' AND bisdatum<='$datum_ende_iso' )"; $result = $db->db_query($qry); $row = $db->db_fetch_object($result); $gebuchterurlaub = $row->anzahltage; if($gebuchterurlaub=='') $gebuchterurlaub=0; echo ""; echo ""; echo ""; echo ""; echo ""; echo "

Urlaub im Geschäftsjahr $geschaeftsjahr

Anspruch$anspruch Tage   ( jährlich )
+ Resturlaub"; if(date('m')>8 && date('m')<11) { echo "
"; echo " Tage"; echo ""; echo "
"; } else { echo "$resturlaubstage Tage"; } echo "
   ( Stichtag: $datum_beginn )
- aktuell gebuchter Urlaub $gebuchterurlaub Tage   ( $datum_beginn - $datum_ende )
aktueller Stand".($anspruch+$resturlaubstage-$gebuchterurlaub)." Tage   ( Stichtag: $datum_ende )
"; echo '
'; } echo '
'; echo ""; echo ' '; echo ($year-1).'/'.$year; echo ' '; echo ""; echo '
'; echo '
'; //Tabelle mit den Monaten ausgeben echo ''; $monat=9; for($i=0;$i<12;$i++) { if($i%3==0) { echo ''; } draw_monat($monat); $monat++; if($monat>12) $monat=1; } echo '
'; ?>