From a56be64ae97eb3b0b4b5a78a18aed909a72efe3e Mon Sep 17 00:00:00 2001 From: Rudolf Hangl Date: Fri, 20 Jun 2008 14:03:21 +0000 Subject: [PATCH] --- cis/private/profile/urlaubstool.php | 418 ++++++++++++++++++ cis/private/profile/zeitsperre_resturlaub.php | 2 +- 2 files changed, 419 insertions(+), 1 deletion(-) create mode 100644 cis/private/profile/urlaubstool.php diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php new file mode 100644 index 000000000..03c26153b --- /dev/null +++ b/cis/private/profile/urlaubstool.php @@ -0,0 +1,418 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + + //DB Verbindung herstellen + require_once('../../config.inc.php'); + require_once('../../../include/functions.inc.php'); + require_once('../../../include/zeitsperre.class.php'); + require_once('../../../include/datum.class.php'); + require_once('../../../include/resturlaub.class.php'); + require_once('../../../include/person.class.php'); + require_once('../../../include/benutzer.class.php'); + + if (!$conn = @pg_pconnect(CONN_STRING)) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + +$content_resturlaub = ''; +$content = ''; +$resturlaubstage = '0'; +$mehrarbeitsstunden = '0'; +$anspruch = '25'; +$zaehl=1; +$tage=array(); //Array Tage für Kalenderanzeige +$hgfarbe=array_fill(0,44,'white'); //Array mit Hintegrundfarben der Kalenderfelder +$monatsname = array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); +$jahre = array(); //Array mit Jahreszahlen für Auswahl +$akette=array_fill(0,2,0); +$ekette=array_fill(0,2,0); +$spmonat=array(); +$wvon=''; +$wbis=''; +$t=getdate(); +$uid = get_uid(); + +for($i=0;$i<5;$i++) +{ + $jahre[$i]="$t[year]"+$i; +} + + +if (isset($_GET['wmonat']) || isset($_POST['wmonat'])) + $wmonat=(isset($_GET['wmonat'])?$_GET['wmonat']:$_POST['wmonat']); +else +{ + $wmonat="$t[mon]"-1; +} + +if (isset($_GET['wjahr']) || isset($_POST['wjahr'])) + $wjahr=(isset($_GET['wjahr'])?$_GET['wjahr']:$_POST['wjahr']); +else +{ + $wjahr=0; +} + +if(isset($_GET['spmonat']) || isset($_POST['spmonat'])) +{ + $spmonat=explode(",",$_GET['spmonat']); + $mbeginn=mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]); + $ttt=getdate($mbeginn); + $wotag="$ttt[wday]"; + if ($wotag==0) + { + $wotag=7; + } + $mende=cal_days_in_month(CAL_GREGORIAN, ($wmonat+1), $jahre[$wjahr]); + $wvon=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr])); + $wbis=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr])); + for($i=1,$j=0;$i<44;$i++) + { + //ketten bilden + if($spmonat[$i]=='lime') + { + if($akette[$j]==0 || $spmonat[$i-1]!='lime') + { + $j++; + $akette[$j]=$i-$wotag+1; + $ekette[$j]=$i-$wotag+1; + } + elseif($spmonat[$i-1]=='lime') + { + $ekette[$j]=$i-$wotag+1; + } + } + } + //print_r($akette); + //print_r($ekette); + if($ekette[1]!=0) + { + //Unterscheidung anhand bestehender Einträge + //Urlaub vom Vormonat überragend + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND vondatum<='".$wvon."' AND bisdatum>='".$wvon."' AND bisdatum<='".$wbis."' ;"; + if($result = pg_query($conn, $qry)) + { + if(pg_num_rows($result)==1) + { + if($row = pg_fetch_object($result)) + { + if($akette[1]==1) + { + $qryupd="UPDATE campus.tbl_zeitsperre SET bisdatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $ekette[1], $jahre[$wjahr]))."' WHERE zeitsperre_id='".$row->zeitsperre_id."';"; + $result = pg_query($conn, $qryupd); + $akette[1]=0; + $ekette[1]=0; + //echo "
".$qryupd; + } + } + } + } + //Urlaub ins nächste Monat überragend + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND bisdatum>='".$wbis."' AND vondatum>='".$wvon."' AND vondatum<='".$wbis."' ;"; + if($result = pg_query($conn, $qry)) + { + if(pg_num_rows($result)==1) + { + if($row = pg_fetch_object($result)) + { + if($ekette[count($akette)-1]==$mende) + { + $qryupd="UPDATE campus.tbl_zeitsperre SET vondatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $akette[count($akette)-1], $jahre[$wjahr]))."' WHERE zeitsperre_id='".$row->zeitsperre_id."';"; + $result = pg_query($conn, $qryupd); + $akette[count($akette)-1]=0; + $ekette[count($ekette)-1]=0; + //print_r($akette); + //print_r($ekette); + //echo "
".$qryupd; + + } + } + } + } + //Urlaub überragt beide Monatsenden + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND bisdatum>='".$wbis."' AND vondatum<='".$wvon."' ;"; + if($result = pg_query($conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + //"Abschneiden" des Eintrags am Ende des vorigen Monats + $qryupd="UPDATE campus.tbl_zeitsperre SET + bisdatum='".date("Y-m-d",mktime(0, 0, 0, ($wmonat) , cal_days_in_month(CAL_GREGORIAN, ($wmonat), $jahre[$wjahr]), $jahre[$wjahr]))."' + WHERE zeitsperre_id='".$row->zeitsperre_id."';"; + $result = pg_query($conn, $qryupd); + //Einfügen eines Eintrags ab dem 1Tag des nächsten Monats + $qryins="INSERT INTO campus.tbl_zeitsperre ( + zeitsperretyp_kurzbz,mitarbeiter_uid,bezeichnung,vondatum,vonstunde,bisdatum,bisstunde,vertretung_uid, + updateamum,updatevon,insertamum,insertvon, erreichbarkeit_kurzbz, freigabeamum, freigabevon) VALUES ( + 'Urlaub','".$uid."', 'Urlaub', '".date("Y-m-d",mktime(0, 0, 0, ($wmonat+2) , 1, $jahre[$wjahr]))."', + NULL,'".$row->bisdatum."',NULL,NULL,NULL,NULL,now(),'".$uid."','e',NULL,NULL + )"; + $result = pg_query($conn, $qryins); + //echo "
".$qryupd; + //echo "
"."1-".$qryins; + //Einfügen des Urlaubs innerhalb des Monats + for($i=0;$i"."2-".$qryins; + } + } + } + } + //Urlaub innerhalb des Monats + $qrydel="DELETE FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND vondatum>='".$wvon."' AND bisdatum<='".$wbis."' ;"; + $result = pg_query($conn, $qrydel); + //echo "
".$qrydel; + for($i=0;$i"."3-".$qryins; + } + } + } + +} +//if ((isset($_GET['wmonat']) || isset($_POST['wmonat']))&&(isset($_GET['wjahr']) || isset($_POST['wjahr']))) +if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr))) +{ + //Urlaubstageage markieren + $mbeginn=mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]); + $ttt=getdate($mbeginn); + $wotag="$ttt[wday]"; + if ($wotag==0) + { + $wotag=7; + } + $mende=cal_days_in_month(CAL_GREGORIAN, ($wmonat+1), $jahre[$wjahr]); + $wvon=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr])); + $wbis=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr])); + $qry="SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='".$uid."' AND (vondatum<='".$wbis."' AND bisdatum>='".$wvon."') "; + //echo "
"."db:".$qry; + if($result = pg_query($conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + //echo " ".$row->vondatum; + //echo "-".$row->bisdatum; + for($i=$wotag;$i<$mende+$wotag;$i++) + { + if(date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))>=$row->vondatum + && date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))<=$row->bisdatum) + { + $hgfarbe[$i]='lime'; + } + else + { + if($hgfarbe[$i]!='lime') + $hgfarbe[$i]='white'; + } + } + } + //print_r($hgfarbe); + } +} + +if (isset($_GET['kastl']) || isset($_POST['kastl'])) + $kastl=(isset($_GET['kastl'])?$_GET['kastl']:$_POST['kastl']); +else +{ + $kastl=0; +} + +if (isset($_GET['hgfarbe'])) +{ + $hgfarbe=explode(",",$_GET['hgfarbe']); +} +else +{ + for($i=0;$i<44;$i++) + { + if(!isset($hgfarbe[$i]) || $hgfarbe[$i]!='lime') + $hgfarbe[$i]='white'; + } +} + + +$PHP_SELF = $_SERVER['PHP_SELF']; +$datum_obj = new datum(); + +echo ' + + + + + + +Urlaubstool + +'; +//alert("Ich bin auf Tag " + kastl); +echo "

Urlaubstool (".$uid.")

"; +//Anzeige Resturlaubsberechnung +echo ''; +echo ''; -$content_form.= "
'; +$resturlaub = new resturlaub($conn); + +if($resturlaub->load($uid)) +{ + $resturlaubstage = $resturlaub->resturlaubstage; + $mehrarbeitsstunden = $resturlaub->mehrarbeitsstunden; + $anspruch = $resturlaub->urlaubstageprojahr; +} +$content_resturlaub.=""; +$content_resturlaub.=""; +$gebuchterurlaub=0; +//Urlaub berechnen +$qry = "SELECT sum(bisdatum-vondatum+1) as anzahltage FROM campus.tbl_zeitsperre + WHERE zeitsperretyp_kurzbz='Urlaub' AND mitarbeiter_uid='$uid' AND + ( + (date_part('month', vondatum)>9 AND date_part('year', vondatum)='".(date('Y')-1)."') OR + (date_part('month', vondatum)<9 AND date_part('year', vondatum)='".date('Y')."') + )"; +$result = pg_query($conn, $qry); +$row = pg_fetch_object($result); +$gebuchterurlaub = $row->anzahltage; +if($gebuchterurlaub=='') + $gebuchterurlaub=0; +$content_resturlaub.=""; +$content_resturlaub.=""; +$content_resturlaub .=""; +$content_resturlaub.="
Anspruch$anspruch Tage
+ Resturlaub$resturlaubstage Tage
- aktuell gebuchter Urlaub $gebuchterurlaub Tage
aktueller Stand".($anspruch+$resturlaubstage-$gebuchterurlaub)." Tage
"; + +//Formular Auswahl Monat und Jahr für Kalender +echo ''; +echo ""; +echo ''; +echo ''; //style="background-color:lime" + } + $content.=''; +} +$content.='
$content_resturlaub
'; +$content= '
'; + +$content.='Monat '; +$content.=' Jahr '; +$content.=" "; +$content.='
'; + +//Tage +$mbeginn=mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]); +$ttt=getdate($mbeginn); +$wotag="$ttt[wday]"; +if ($wotag==0) +{ + $wotag=7; +} +$mende = cal_days_in_month(CAL_GREGORIAN, ($wmonat+1), $jahre[$wjahr]); +//echo "monatsende:".$mende; +for($i=1;$i<43;$i++) +{ + if($i<$wotag || $zaehl>$mende) + { + $tage[$i]=''; + } + else + { + $tage[$i]=$zaehl; + $zaehl++; + } +} +//Toggle der Hintergrundfarbe +if($kastl>0) +{ + if($hgfarbe[$kastl]=="white" ) + { + $hgfarbe[$kastl]='lime'; + } + else + { + $hgfarbe[$kastl]='white'; + } +} +ksort($hgfarbe); +$content.='
'; +$content.='
'; +$content.=''.$tage[$j+7*$i].'
'; +echo $content; +?> + + \ No newline at end of file diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index cca61b17a..8e3318d7c 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -424,7 +424,7 @@ if(isset($_GET['type']) && $_GET['type']=='edit') else $content_form.= ""; $content_form.= '
 Achtung: Es werden alle eingegeben Tage berücksichtigt daher müssen mehrtägige Zeitsperren an Unterbrechungen wie Wochenenden
oder Feiertagen unterteilt werden!"; +$content_form.= "
 Achtung: Es werden alle eingegeben Tage berücksichtigt, daher müssen mehrtägige Zeitsperren an Unterbrechungen wie Wochenenden
oder Feiertagen unterteilt werden!"; $content_form.= '
'; // ******* RESTURLAUB ******** //