Compare commits

...

3 Commits

Author SHA1 Message Date
Andreas Österreicher b1a179b923 Merge branch 'master' into bug-33155/ZeiterfassungErsatzruheInTagessaldo 2024-11-20 10:50:23 +01:00
ma0068 35758e5554 add ER to substraction->typ 2023-09-29 09:13:08 +02:00
ma0068 e5bd96b9d9 Zeiterfassung und Projektexport: Ersatzruhe aus Tagessaldo und Arbeitszeit entfernt 2023-09-22 07:41:29 +02:00
2 changed files with 24 additions and 5 deletions
+19
View File
@@ -1474,6 +1474,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';
@@ -1517,6 +1518,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')
@@ -1599,6 +1610,7 @@ if ($projekt->getProjekteMitarbeiter($user, true))
$elsumme='00:00';
$ersumme = '00:00';
$extlehrearr = array();
$ersatzruhearr = array();
$tagesbeginn = '';
$tagesende = '';
$pflichtpause = false;
@@ -1693,6 +1705,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);
@@ -1753,6 +1771,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);
}
@@ -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)
@@ -316,7 +316,7 @@ for ($i = 0; $i < count($ztaufdata); $i++)
$projektlines[$day]->arbeitszeit -= $subtraction->diff;
$pauseSubtracted += $subtraction->diff;
}
elseif ($subtraction->typ == $activitiesToSubtract[1] && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd)
elseif (($subtraction->typ == $activitiesToSubtract[1] || $subtraction->typ == $activitiesToSubtract[4]) && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd)
{
$projektlines[$day]->arbeitszeit -= $subtraction->diff;
$lehreExternExists = true;