".formaterror(mysqli_error($dbconn))); if(!$err) { message("Benutzer erfolgreich angelegt"); return mysqli_insert_id($dbconn); } return 0; } function urlaub_remaining($dbconn, $userid, $startyear = 9999) { if($startyear > Date("Y")){ $startyear = Date("Y"); } if($startyear == Date("Y")){ $date = "termtime > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y')"; } else{ $date = "termtime > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y') AND termtime < STR_TO_DATE('01.01.".Date("Y")."','%d.%m.%Y')"; } $qry = mysqli_query($dbconn, "SELECT sahours, vacationdays, YEAR(timelog_start), MONTH(timelog_start),DAY(timelog_start) FROM user WHERE id = '".$userid."'") or $err=error("Urlaubstage nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $sa = $res[0]; $days = $res[1]; $startY = $res[2]; $startM = $res[3]; $startD = $res[4]; if($startY == Date("Y")){ if($startD != 1){ //1/12 Urlaubsanspruch für jeden vollen Monat $startM++; } $days = $days/12*(13-$startM); } } $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) > 1 AND DAYOFWEEK(termtime) < 7 AND ".$date." AND typ = 0 AND user = '".$userid."'") or $err=error("Urlaubstage an Wochentagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $return = $return+1; } if($sa > 0){ //Samstage: (später evtl nur 1/2 Urlaubstag) $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) = 7 AND ".$date." AND typ = 0 AND user = '".$userid."'") or $err=error("Urlaubstage an Samstagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $return = $return+1; } } //include altlasten if($startyear == Date("Y")){ $qry = mysqli_query($dbconn, "SELECT YEAR(last_generated) FROM altlasten WHERE ma_id = '".$userid."'") or $err=error("Altlasten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ if($res[0] < Date("Y")){ generate_altlasten($dbconn,$userid); } } else{ $qry = mysqli_query($dbconn, "INSERT INTO altlasten SET ma_id = '".$userid."'") or $err=error("Altlasten nicht angelegt
".formaterror(mysqli_error($dbconn))); $qry = mysqli_query($dbconn, "SELECT YEAR(last_generated) FROM altlasten WHERE ma_id = '".$userid."'") or $err=error("Altlasten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ if($res[0] < date("Y")){ generate_altlasten($dbconn,$userid); } } } $qry = mysqli_query($dbconn, "SELECT vacationdays FROM altlasten WHERE ma_id = '".$userid."'") or $err=error("Altlasten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $days = $days + $res[0]; } } $return = $days - $return; if($err) { $return = 0; } return $return; } function getWorkingDays($startDate, $endDate){ $begin=strtotime($startDate); $end=strtotime($endDate); if($begin>$end){ echo "startdate is in the future!
"; return 0; } else{ $no_days=0; $weekends=0; while($begin<=$end){ if(feiertag_bayern(idate("d",$begin), idate("m",$begin), idate("Y",$begin)) == ""){ $no_days++; // no of days in the given interval $what_day=date("w",$begin); if($what_day==0) { // 6 weekend days $sundays++; } else if($what_day==6) { // weekend days $saturdays++; } } else $feiertage++; $begin+=86400; // +1 day }; $working_days=$no_days-$saturdays-$sundays; return array($working_days,$saturdays,$feiertage); } } function generate_altlasten($dbconn,$userid){ $qry = mysqli_query($dbconn, "SELECT YEAR(last_generated), vacationdays, hours FROM altlasten WHERE ma_id = '".$userid."'") or $err=error("Altlasten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ if($res[0] < 2013){ $res[0] = 2013; } $vacdays = $res[1]; $altstd = $res[2]; echo "überstd..."; $altstd += ueberstunden($dbconn, $userid, $res[0]); echo "urlaub..."; $vacdays += urlaub_remaining($dbconn, $userid, $res[0]); echo "insert"; $qry = mysqli_query($dbconn, "UPDATE altlasten SET last_generated = STR_TO_DATE('01.01.".Date("Y")."','%d.%m.%Y'), vacationdays = ".$vacdays.", hours = ".$altstd."") or $err=error("Altlasten nicht geändert
".formaterror(mysqli_error($dbconn))); } } function ueberstunden($dbconn, $userid, $startyear = 9999) { if($startyear > Date("Y")){ $startyear = Date("Y"); } if($startyear == Date("Y")){ $enddate = "DATE_SUB(NOW(),INTERVAL 1 DAY)"; $date=date_create(); date_sub($date,date_interval_create_from_date_string("1 days")); $workdaysend = date_format($date,"Y-m-d"); } else{ $enddate = "STR_TO_DATE('01.01.".Date("Y")."','%d.%m.%Y')"; $workdaysend = Date("Y-m-d",strtotime("01.01.".Date("Y"))); } $qry = mysqli_query($dbconn, "SELECT weekhours, sahours, vacationdays, DATE_FORMAT(timelog_start,'%Y-%m-%d'), YEAR(timelog_Start) FROM user WHERE id = '".$userid."'") or $err=error("Urlaubstage nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $weekhours = $res[0]; $sahours = $res[1]; $vacdays = $res[2]; $logStart = $res[3]; if($res[4] < $startyear){ $logStart = $startyear."-01-01"; } } //Urlaubstage vergangen: $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) > 1 AND DAYOFWEEK(termtime) < 7 AND typ = 0 AND user = '".$userid."' AND termtime < ".$enddate." AND termtime > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y')") or $err=error("Urlaubstage an Wochentagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $urlaub = $urlaub + 1; } if($sahours > 0){ //Samstage: (später evtl nur 1/2 Urlaubstag) $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) = 7 AND typ = 0 AND user = '".$userid."' AND termtime < ".$enddate." AND termtime > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y')") or $err=error("Urlaubstage an Samstagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $saurlaub = $saurlaub + 1; } } $krank = 0; $sakrank = 0; $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) > 1 AND DAYOFWEEK(termtime) < 7 AND typ = 5 AND user = '".$userid."' AND termtime < ".$enddate." AND termtime > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y')") or $err=error("Urlaubstage an Wochentagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $krank = $krank + 1; } if($sahours > 0){ //Samstage: (später evtl nur 1/2 Urlaubstag) $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) = 7 AND typ = 5 AND user = '".$userid."' AND termtime < ".$enddate." AND termtime > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y')") or $err=error("Urlaubstage an Samstagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $sakrank = $sakrank + 1; } } $caldays = getWorkingDays($logStart, $workdaysend); $caldays[0] = $caldays[0] - $urlaub - $krank; $caldays[1] = $caldays[1] - $saurlaub - $sakrank; $sollstunden = $caldays[0] * ($weekhours/5); //echo $userid.": ".$sollstunden."
"; if($sahours > 0){ $sollstunden = $sollstunden + $caldays[1] * ($sahours); } $qry = mysqli_query($dbconn, "SELECT SUM(floor(TIME_TO_SEC(SUBTIME(TIMEDIFF(gehen,kommen),MAKETIME(FLOOR(pause_mins/60), pause_mins % 60, 0)))/60)) AS iststunden FROM zeiten WHERE ma_id = '".$userid."' AND gehen < ".$enddate." AND gehen > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y') AND TIME(kommen) >= '07:30:00' GROUP BY ma_id ") or $err=error("Zeiten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $iststunden = $res[0]/60; } else $return = 0; $qry = mysqli_query($dbconn, "SELECT SUM(floor(TIME_TO_SEC(ADDTIME(TIMEDIFF(STR_TO_DATE(CONCAT(DATE(kommen), ' ', MAKETIME(7,30,0)), '%Y-%m-%d %H:%i:%s'),gehen),MAKETIME(FLOOR(pause_mins/60), pause_mins % 60, 0)))/60)) AS iststunden FROM zeiten WHERE ma_id = '".$userid."' AND gehen < ".$enddate." AND gehen > STR_TO_DATE('01.01.".$startyear."','%d.%m.%Y') AND TIME(kommen) < '07:30:00' GROUP BY ma_id ") or $err=error("Zeiten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $iststunden -= $res[0]/60; } if($err) { $return = 0; } //include altlasten when calculating current year if($startyear == Date("Y")){ $qry = mysqli_query($dbconn, "SELECT YEAR(last_generated) FROM altlasten WHERE ma_id = '".$userid."'") or $err=error("Altlasten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ if($res[0] < Date("Y")){ generate_altlasten($dbconn,$userid); } } else{ $qry = mysqli_query($dbconn, "INSERT INTO altlasten SET ma_id = '".$userid."'") or $err=error("Altlasten nicht angelegt
".formaterror(mysqli_error($dbconn))); $qry = mysqli_query($dbconn, "SELECT YEAR(last_generated) FROM altlasten WHERE ma_id = '".$userid."'") or $err=error("Altlasten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ if($res[0] < date("Y")){ generate_altlasten($dbconn,$userid); } } } $qry = mysqli_query($dbconn, "SELECT hours FROM altlasten WHERE ma_id = '".$userid."'") or $err=error("Altlasten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $iststunden = $iststunden + $res[0]; } } return $iststunden - $sollstunden; } function ueberstunden_month($dbconn, $userid, $month, $year) { $enddate = "NOW()"; $workdaysend = Date("Y-m-d"); $enddate = "DATE_SUB(NOW(),INTERVAL 1 DAY)"; $date=date_create(); date_sub($date,date_interval_create_from_date_string("1 days")); $workdaysend = date_format($date,"Y-m-d"); $qry = mysqli_query($dbconn, "SELECT weekhours, sahours, vacationdays FROM user WHERE id = '".$userid."'") or $err=error(">Userbedingungen
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $weekhours = $res[0]; $sahours = $res[1]; $vacdays = $res[2]; } $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) > 1 AND DAYOFWEEK(termtime) < 7 AND typ = 0 AND user = '".$userid."' AND MONTH(termtime) = '".$month."' AND YEAR(termtime) = '".$year."' AND DAY(termtime) <= DAY(".$enddate.")") or $err=error("Urlaubstage an Wochentagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $urlaub = $urlaub + 1; } if($sa > 0){ //Samstage: (später evtl nur 1/2 Urlaubstag) $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) = 7 AND typ = 0 AND user = '".$userid."' AND MONTH(termtime) = '".$month."' AND YEAR(termtime) = '".$year."'") or $err=error("Urlaubstage an Samstagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $saurlaub = $saurlaub + 1; } } $krank = 0; $sakrank = 0; $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) > 1 AND DAYOFWEEK(termtime) < 7 AND typ = 5 AND user = '".$userid."' AND MONTH(termtime) = '".$month."' AND YEAR(termtime) = '".$year."' AND DAY(termtime) <= DAY(".$enddate.")") or $err=error("Urlaubstage an Wochentagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $krank = $krank + 1; } if($sa > 0){ //Samstage: (später evtl nur 1/2 Urlaubstag) $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(termtime,'%d.%m.%Y') FROM termin WHERE DAYOFWEEK(termtime) = 7 AND typ = 5 AND user = '".$userid."' AND MONTH(termtime) = '".$month."' AND YEAR(termtime) = '".$year."'") or $err=error("Urlaubstage an Samstagen nicht ermittelbar
".formaterror(mysqli_error($dbconn))); while($res = mysqli_fetch_array($qry)){ if(feiertag_bayern(substr($res[0],0,2), substr($res[0],3,2),substr($res[0],6,4)) == "") $sakrank = $sakrank + 1; } } if($month == date("m") and $year == date("Y")){ $endday = date("d")-1; } else{ $endday = date("t",strtotime($year."-".$month."-".date("t",strtotime($year."-".$month."-01")))); } $caldays = getWorkingDays($year."-".$month."-01", $year."-".$month."-".$endday); $caldays[0] = $caldays[0] - $urlaub - $krank; $caldays[1] = $caldays[1] - $saurlaub - $sakrank; $sollstunden = $caldays[0] * ($weekhours/5); if($sa > 0){ $sollstunden = $sollstunden + $caldays[1] * ($sahours); } $qry = mysqli_query($dbconn, "SELECT SUM(floor(TIME_TO_SEC(SUBTIME(TIMEDIFF(gehen,kommen),MAKETIME(FLOOR(pause_mins/60), pause_mins % 60, 0)))/60)) AS iststunden FROM zeiten WHERE ma_id = '".$userid."' AND MONTH(gehen) = '".$month."' AND YEAR(gehen) = '".$year."' AND TIME(kommen) >= '07:30:00' GROUP BY ma_id ") or $err=error("Zeiten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $iststunden = $res[0]/60; } else $return = 0; $qry = mysqli_query($dbconn, "SELECT SUM(floor(TIME_TO_SEC(SUBTIME(TIMEDIFF(gehen,STR_TO_DATE(CONCAT(DATE(gehen), ' ', MAKETIME(7,30,0)), '%Y-%m-%d %H:%i:%s')),MAKETIME(FLOOR(pause_mins/60), pause_mins % 60, 0)))/60)) AS iststunden FROM zeiten WHERE ma_id = '".$userid."' AND MONTH(gehen) = '".$month."' AND YEAR(gehen) = '".$year."' AND TIME(kommen) < '07:30:00' GROUP BY ma_id ") or $err=error("Zeiten nicht ermittelbar
".formaterror(mysqli_error($dbconn))); if($res = mysqli_fetch_array($qry)){ $iststunden += $res[0]/60; } if($err) { $return = 0; } return $iststunden - $sollstunden; } ?>