diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 0eb86bdb1..46834190b 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1506,6 +1506,7 @@ if ($projekt->getProjekteMitarbeiter($user, true)) $pausesumme='00:00'; $wochensumme='00:00'; $extlehrearr=array(); + $ersatzruhearr = array(); $elsumme = '00:00'; $ersumme = '00:00'; $ersumme_woche = '00:00'; @@ -1549,6 +1550,16 @@ if ($projekt->getProjekteMitarbeiter($user, true)) if ($el["start"] > $tagesbeginn && $el["ende"] < $tagesende) $elsumme = $datum_obj->sumZeit($elsumme, $el["diff"]); } + //Korrektur um Ersatzruhezeiten innerhalb der Arbeitszeit + foreach($ersatzruhearr as $er) + { + if ($er["start"] > $tagesbeginn && $er["ende"] < $tagesende) + { + list($hour, $min) = explode(':', $er["diff"]); + $tagessaldo = $tagessaldo - ($hour * 3600 + $min * 60); + } + } + list($h2, $m2) = explode(':', $elsumme); $elsumme = $h2*3600+$m2*60; if ($datum->formatDatum($tag, 'Y-m-d') >= '2019-11-06') @@ -1631,6 +1642,7 @@ if ($projekt->getProjekteMitarbeiter($user, true)) $elsumme='00:00'; $ersumme = '00:00'; $extlehrearr = array(); + $ersatzruhearr = array(); $tagesbeginn = ''; $tagesende = ''; $pflichtpause = false; @@ -1725,6 +1737,12 @@ if ($projekt->getProjekteMitarbeiter($user, true)) { $ersumme = $datum_obj->sumZeit($ersumme, $row->diff); $ersumme_woche = $datum_obj->sumZeit($ersumme_woche, $row->diff); + + $ersatzruhearr[] = array( + 'start' => $row->start, + 'ende' => $row->ende, + 'diff' => $row->diff + ); } else $tagessumme = $datum_obj->sumZeit($tagessumme, $row->diff); @@ -1785,6 +1803,7 @@ if ($projekt->getProjekteMitarbeiter($user, true)) if (($tagesende=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s')) < $datum->mktime_fromtimestamp($datum->formatDatum($row->ende, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern' && $row->aktivitaet_kurzbz != 'Ersatzruhe') $tagesende = $row->ende; + if ($row->aktivitaet_kurzbz == 'LehreExtern') $extlehrearr[] = array("start"=>$row->start, "ende"=>$row->ende, "diff"=>$row->diff); } diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index c96e816df..ce0decac5 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -88,7 +88,7 @@ $date = new datum(); $ztauf = new zeitaufzeichnung(); $projektphaseclass = new projektphase(); -$activitiesToIgnore = array('DienstreiseMT', 'Ersatzruhe');//aktivitaetstypen which shouldn't be added to worktime +$activitiesToIgnore = array('DienstreiseMT');//aktivitaetstypen which shouldn't be added to worktime $ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$daysinmonth, $activitiesToIgnore); //objects for one projectline of list (corresponds to one day) @@ -96,7 +96,7 @@ $projektlines = array(); $dayStart = $dayEnd = ''; $projektnames = $projektphasenames = $tosubtract = $allpauseranges = array(); $projektTiteles = array(); -$activitiesToSubtract = ['Pause', 'LehreExtern', 'Arztbesuch', 'Behoerde'];//aktivitaetstypen which should be subtracted fromworktime +$activitiesToSubtract = ['Pause', 'LehreExtern', 'Arztbesuch', 'Behoerde', 'Ersatzruhe'];//aktivitaetstypen which should be subtracted fromworktime $ztaufdata = $ztauf->result; $totalmonthsum = 0.00; $projektmonthsums = array(); @@ -133,8 +133,8 @@ for ($i = 0; $i < count($ztaufdata); $i++) $subtraction->typ = $ztaufrow->aktivitaet_kurzbz; $tosubtract[] = $subtraction; - //save all pause ranges - if ($ztaufrow->aktivitaet_kurzbz == $activitiesToSubtract[0]) + //save all pause ranges and treat ersatzruhe as pause + if ($ztaufrow->aktivitaet_kurzbz == $activitiesToSubtract[0] || $ztaufrow->aktivitaet_kurzbz == $activitiesToSubtract[4]) { $prevpause = null; if (count($allpauseranges) > 0)