mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-22 01:12:17 +00:00
- Dienstreisen werden bei Erstellung der zeitaufzeichnung Projektliste ignoriert
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user