From f153d9c9ff60146d434d581bd0db95aa9d16385e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Nov 2017 19:41:31 +0100 Subject: [PATCH] Fix time spent counted twice --- htdocs/core/lib/project.lib.php | 5 +++++ htdocs/projet/class/project.class.php | 22 +++++++++++++++++----- htdocs/projet/tasks/task.php | 10 ++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 2e1c58af27c..68e9ef38653 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -899,11 +899,15 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$ $projectstatic->id = $lines[$i]->fk_project; } + //var_dump('--- '.$level.' '.$firstdaytoshow.' '.$fuser->id.' '.$projectstatic->id.' '.$workloadforid[$projectstatic->id]); + //var_dump($projectstatic->weekWorkLoadPerTask); if (empty($workloadforid[$projectstatic->id])) { $projectstatic->loadTimeSpent($firstdaytoshow, 0, $fuser->id); // Load time spent from table projet_task_time for the project into this->weekWorkLoad and this->weekWorkLoadPerTask for all days of a week $workloadforid[$projectstatic->id]=1; } + //var_dump($projectstatic->weekWorkLoadPerTask); + //var_dump('--- '.$projectstatic->id.' '.$workloadforid[$projectstatic->id]); $projectstatic->id=$lines[$i]->fk_project; $projectstatic->ref=$lines[$i]->projectref; @@ -1033,6 +1037,7 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$ $tmparray=dol_getdate($tmpday); $dayWorkLoad = $projectstatic->weekWorkLoadPerTask[$tmpday][$lines[$i]->id]; + $alreadyspent=''; if ($dayWorkLoad > 0) $alreadyspent=convertSecondToTime($dayWorkLoad,'allhourmin'); $alttitle=$langs->trans("AddHereTimeSpentForDay",$tmparray['day'],$tmparray['mon']); diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 9ef2e8d6536..74b274d5f3a 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1659,7 +1659,7 @@ class Project extends CommonObject * @param int $userid Time spent by a particular user * @return int <0 if OK, >0 if KO */ - public function loadTimeSpent($datestart,$taskid=0,$userid=0) + public function loadTimeSpent($datestart, $taskid=0, $userid=0) { $error=0; @@ -1670,7 +1670,7 @@ class Project extends CommonObject $sql.= " WHERE ptt.fk_task = pt.rowid"; $sql.= " AND pt.fk_projet = ".$this->id; $sql.= " AND (ptt.task_date >= '".$this->db->idate($datestart)."' "; - $sql.= " AND ptt.task_date <= '".$this->db->idate($datestart + (7 * 24 * 3600) - 1)."')"; + $sql.= " AND ptt.task_date <= '".$this->db->idate(dol_time_plus_duree($datestart, 1, 'w') - 1)."')"; if ($task_id) $sql.= " AND ptt.fk_task=".$taskid; if (is_numeric($userid)) $sql.= " AND ptt.fk_user=".$userid; @@ -1678,16 +1678,28 @@ class Project extends CommonObject $resql=$this->db->query($sql); if ($resql) { + //unset($this->weekWorkLoad[$day]); + //unset($this->weekWorkLoadPerTask[$day]); + $daylareadyfound=array(); $num = $this->db->num_rows($resql); $i = 0; // Loop on each record found, so each couple (project id, task id) - while ($i < $num) + while ($i < $num) { $obj=$this->db->fetch_object($resql); $day=$this->db->jdate($obj->task_date); - $this->weekWorkLoad[$day] += $obj->task_duration; - $this->weekWorkLoadPerTask[$day][$obj->fk_task] += $obj->task_duration; + if (empty($daylareadyfound[$day])) + { + $this->weekWorkLoad[$day] = $obj->task_duration; + $this->weekWorkLoadPerTask[$day][$obj->fk_task] = $obj->task_duration; + } + else + { + $this->weekWorkLoad[$day] += $obj->task_duration; + $this->weekWorkLoadPerTask[$day][$obj->fk_task] += $obj->task_duration; + } + $daylareadyfound[$day]=1; $i++; } $this->db->free($resql); diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index db56534f851..e539adf4f41 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -474,6 +474,16 @@ if ($id > 0 || ! empty($ref)) print '
'; print ''; + // Task parent + print ''; + // Date start - Date end print '
'.$langs->trans("ChildOfTask").''; + if ($object->fk_task_parent > 0) + { + $tasktmp=new Task($db); + $tasktmp->fetch($object->fk_task_parent); + print $tasktmp->getNomUrl(1); + } + print '
'.$langs->trans("DateStart").' - '.$langs->trans("DateEnd").''; $start = dol_print_date($object->date_start,'dayhour');