- Dienstreisen werden bei Erstellung der zeitaufzeichnung Projektliste ignoriert

This commit is contained in:
alex
2018-10-03 10:04:55 +02:00
parent 597ed8a16e
commit fa75380fb4
2 changed files with 17 additions and 9 deletions
@@ -62,13 +62,14 @@ $daysinmonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$date = new datum();
$ztauf = new zeitaufzeichnung();
$ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$daysinmonth);
$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)
$projectlines = [];
$dayStart = $dayEnd = '';
$projectnames = $tosubtract = $allpauseranges = [];
$toignore = ['Pause', 'LehreExtern'];
$activitiesToSubtract = ['Pause', 'LehreExtern'];//aktivitaetstypen which should be subtracted fromworktime
$ztaufdata = $ztauf->result;
$monthsums = [0 => 0.00];
@@ -94,7 +95,7 @@ for ($i = 0; $i < count($ztaufdata); $i++)
//last entry for a day (next entry is different day)
$isLastEntry = !array_key_exists($i + 1, $ztaufdata) || intval($date->formatDatum($ztaufdata[$i + 1]->ende, 'd')) != $day;
if (in_array($ztaufrow->aktivitaet_kurzbz, $toignore))
if (in_array($ztaufrow->aktivitaet_kurzbz, $activitiesToSubtract))
{
$subtraction = new stdClass();
$subtraction->start = $ztaufrow->start;
@@ -104,7 +105,7 @@ for ($i = 0; $i < count($ztaufdata); $i++)
$tosubtract[] = $subtraction;
//save all pause ranges
if ($ztaufrow->aktivitaet_kurzbz == $toignore[0])
if ($ztaufrow->aktivitaet_kurzbz == $activitiesToSubtract[0])
{
$prevpause = null;
if (count($allpauseranges) > 0)
@@ -129,9 +130,9 @@ for ($i = 0; $i < count($ztaufdata); $i++)
}
//save new dayStart (if earlier) or dayEnd (if later)
if (($dayStart == '' || $dayStart > $ztaufrow->start) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
if (($dayStart == '' || $dayStart > $ztaufrow->start) && $ztaufrow->aktivitaet_kurzbz != $activitiesToSubtract[1])
$dayStart = $ztaufrow->start;
if (($dayEnd == '' || $dayEnd < $ztaufrow->ende) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
if (($dayEnd == '' || $dayEnd < $ztaufrow->ende) && $ztaufrow->aktivitaet_kurzbz != $activitiesToSubtract[1])
$dayEnd = $ztaufrow->ende;
if ($isFirstEntry)
@@ -221,12 +222,12 @@ for ($i = 0; $i < count($ztaufdata); $i++)
//subtract pauses and LehreExtern from total worktime
foreach ($tosubtract as $subtraction)
{
if ($subtraction->typ == $toignore[0])
if ($subtraction->typ == $activitiesToSubtract[0])
{
$projectlines[$day]->arbeitszeit -= $subtraction->diff;
$pauseSubtracted += $subtraction->diff;
}
elseif ($subtraction->typ == $toignore[1] && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd)
elseif ($subtraction->typ == $activitiesToSubtract[1] && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd)
{
$projectlines[$day]->arbeitszeit -= $subtraction->diff;
$lehreExternExists = true;
+8 -1
View File
@@ -352,9 +352,10 @@ class zeitaufzeichnung extends basis_db
* @param $user
* @param $from startdatum als String in Form Y-m-d
* @param $to enddatum als String in Form Y-m-d
* @param $excluded_activities zu ignorierende Aktivitätstypen
* @return bool
*/
public function getListeUserFromTo($user, $from = null, $to = null)
public function getListeUserFromTo($user, $from = null, $to = null, $excluded_activities = null)
{
$where = "uid=".$this->db_add_param($user);
@@ -375,6 +376,12 @@ class zeitaufzeichnung extends basis_db
$where.= " AND ((start >= ".$this->db_add_param($from)."::DATE AND start <= ".$this->db_add_param($to)."::DATE)
OR (ende >= ".$this->db_add_param($from)."::DATE AND ende <= ".$this->db_add_param($to)."::DATE))";
if (!empty($excluded_activities))
{
$exactstring = is_array($excluded_activities) ? $this->db_implode4SQL($excluded_activities) : $this->db_add_param($excluded_activities);
$where .= " AND (aktivitaet_kurzbz NOT IN (" . $exactstring . ") OR aktivitaet_kurzbz IS NULL)";
}
$qry = "SELECT
*, to_char ((ende-start),'HH24:MI') as diff,
(SELECT (to_char(sum(ende-start),'DD')::integer)*24+to_char(sum(ende-start),'HH24')::integer || ':' || to_char(sum(ende-start),'MI')