From 064f38b89e65048de2ef94427c7d9b4273f465c1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 2 Jan 2017 12:17:27 +0100 Subject: [PATCH] Fix condition to show time spent on project overview --- htdocs/langs/en_US/projects.lang | 1 + htdocs/projet/class/task.class.php | 6 +++-- htdocs/projet/element.php | 43 +++++++++++++++++------------- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index ecf61d17d36..392e20697aa 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -58,6 +58,7 @@ TaskDateEnd=Task end date TaskDescription=Task description NewTask=New task AddTask=Create task +AddTimeSpent=Create time spent Activity=Activity Activities=Tasks/activities MyActivities=My tasks/activities diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 15e3b154b20..ec180704563 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -1039,12 +1039,12 @@ class Task extends CommonObject } /** - * Calculate value of time consumed using the thm (hourly amount value of work for user entering time) + * Calculate quantity and value of time consumed using the thm (hourly amount value of work for user entering time) * * @param User $fuser Filter on a dedicated user * @param string $dates Start date (ex 00:00:00) * @param string $datee End date (ex 23:59:59) - * @return array Array of info for task array('amount') + * @return array Array of info for task array('amount','nbseconds','nblinesnull') */ function getSumOfAmount($fuser='', $dates='', $datee='') { @@ -1055,6 +1055,7 @@ class Task extends CommonObject $result=array(); $sql = "SELECT"; + $sql.= " SUM(t.task_duration) as nbseconds,"; $sql.= " SUM(t.task_duration / 3600 * ".$this->db->ifsql("t.thm IS NULL", 0, "t.thm").") as amount, SUM(".$this->db->ifsql("t.thm IS NULL", 1, 0).") as nblinesnull"; $sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time as t"; $sql.= " WHERE t.fk_task = ".$id; @@ -1081,6 +1082,7 @@ class Task extends CommonObject $obj = $this->db->fetch_object($resql); $result['amount'] = $obj->amount; + $result['nbseconds'] = $obj->nbseconds; $result['nblinesnull'] = $obj->nblinesnull; $this->db->free($resql); diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 710807dcdec..1916405fde4 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -370,6 +370,18 @@ $listofreferent=array( 'buttonnew'=>'AddDonation', 'testnew'=>$user->rights->don->creer, 'test'=>$conf->don->enabled && $user->rights->don->lire), +'project_task'=>array( + 'name'=>"TaskTimeValorised", + 'title'=>"ListTaskTimeUserProject", + 'class'=>'Task', + 'margin'=>'minus', + 'table'=>'projet_task', + 'datefieldname'=>'task_date', + 'disableamount'=>0, + 'urlnew'=>DOL_URL_ROOT.'/projet/tasks.php?id='.$id, + 'buttonnew'=>'AddTimeSpent', + 'testnew'=>$user->rights->projet->creer, + 'test'=>($conf->projet->enabled && $user->rights->projet->lire && empty($conf->global->PROJECT_HIDE_TASKS))), 'agenda'=>array( 'name'=>"Agenda", 'title'=>"ListActionsAssociatedProject", @@ -382,15 +394,6 @@ $listofreferent=array( 'buttonnew'=>'AddEvent', 'testnew'=>$user->rights->agenda->myactions->create, 'test'=>$conf->agenda->enabled && $user->rights->agenda->myactions->read), -'project_task'=>array( - 'name'=>"TaskTimeValorised", - 'title'=>"ListTaskTimeUserProject", - 'class'=>'Task', - 'margin'=>'minus', - 'table'=>'projet_task', - 'datefieldname'=>'task_date', - 'disableamount'=>0, - 'test'=>$conf->projet->enabled && $user->rights->projet->lire && empty($conf->global->PROJECT_HIDE_TASKS)), ); $parameters=array('listofreferent'=>$listofreferent); @@ -691,6 +694,7 @@ foreach ($listofreferent as $key => $value) print '<td'.(($tablename != 'actioncomm' && $tablename != 'projet_task') ? ' style="width: 200px"':'').'>'.$langs->trans("Ref").'</td>'; // Date print '<td'.(($tablename != 'actioncomm' && $tablename != 'projet_task') ? ' style="width: 200px"':'').' align="center">'; + if (in_array($tablename, array('projet_task'))) print $langs->trans("TimeSpent"); if (! in_array($tablename, array('projet_task'))) print $langs->trans("Date"); print '</td>'; // Thirdparty or user @@ -784,9 +788,9 @@ foreach ($listofreferent as $key => $value) print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $projectid . '&action=unlink&tablename=' . $tablename . '&elementselect=' . $element->id . '">' . img_picto($langs->trans('Unlink'), 'editdelete') . '</a>'; } print "</td>\n"; + // Ref print '<td align="left">'; - if ($tablename == 'expensereport_det') { print $expensereport->getNomUrl(1); @@ -822,10 +826,9 @@ foreach ($listofreferent as $key => $value) // Show customer ref if (! empty($element->ref_customer)) print ' - '.$element->ref_customer; } - print "</td>\n"; - // Date + // Date or TimeSpent $date=''; if ($tablename == 'expensereport_det') $date = $element->date; // No draft status on lines elseif (! empty($element->status) || ! empty($element->statut) || ! empty($element->fk_status)) @@ -851,7 +854,12 @@ foreach ($listofreferent as $key => $value) print dol_print_date($element->datep,'dayhour'); if ($element->datef && $element->datef > $element->datep) print " - ".dol_print_date($element->datef,'dayhour'); } - else print dol_print_date($date,'day'); + else if (in_array($tablename, array('projet_task'))) + { + $tmpprojtime = $element->getSumOfAmount($elementuser, $dates, $datee); // $element is a task. $elementuser may be empty + print convertSecondToTime($tmpprojtime['nbseconds'], 'allhourmin'); + } + else print 'e'.dol_print_date($date,'day'); print '</td>'; // Third party or user @@ -885,14 +893,13 @@ foreach ($listofreferent as $key => $value) $total_ht_by_line=null; $othermessage=''; if ($tablename == 'don') $total_ht_by_line=$element->amount; - elseif ($tablename == 'projet_task') + elseif (in_array($tablename, array('projet_task'))) { if (! empty($conf->salaries->enabled)) { - // TODO Permission to read daily rate - $tmp = $element->getSumOfAmount($elementuser, $dates, $datee); // $element is a task. $elementuser may be empty - $total_ht_by_line = price2num($tmp['amount'],'MT'); - if ($tmp['nblinesnull'] > 0) + // TODO Permission to read daily rate to show value + $total_ht_by_line = price2num($tmpprojtime['amount'],'MT'); + if ($tmpprojtime['nblinesnull'] > 0) { $langs->load("errors"); $warning=$langs->trans("WarningSomeLinesWithNullHourlyRate", $conf->currency); -- GitLab