diff --git a/module/task/model.php b/module/task/model.php index cf1cb6fed9..ac70d7b806 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -728,9 +728,9 @@ class taskModel extends model */ public function update($taskID) { - $oldTask = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq((int)$taskID)->fetch(); + $oldTask = $this->getByID($taskID); if($this->post->estimate < 0 or $this->post->left < 0 or $this->post->consumed < 0) - { + { dao::$errors[] = $this->lang->task->error->recordMinus; return false; } @@ -822,7 +822,7 @@ class taskModel extends model $member->type = 'task'; $member->estimate = $this->post->teamEstimate[$row] ? $this->post->teamEstimate[$row] : 0; $member->consumed = $this->post->teamConsumed[$row] ? $this->post->teamConsumed[$row] : 0; - $member->left = $this->post->teamLeft[$row] ? $this->post->teamLeft[$row] : ($member->estimate - $member->consumed); + $member->left = $this->post->teamLeft[$row]; $member->order = $row; $teams[$account] = $member; if($task->status == 'done') $member->left = 0; @@ -834,6 +834,11 @@ class taskModel extends model if(!empty($teams)) { foreach($teams as $member) $this->dao->insert(TABLE_TEAM)->data($member)->autoCheck()->exec(); + + /* Assign the left hours to zero who will be skipped. */ + $sliceMembers = $this->loadModel('project')->getTeamSlice($oldTask->team, $oldTask->assignedTo, $task->assignedTo); + foreach($sliceMembers as $account => $team) $this->dao->update(TABLE_TEAM)->set('left')->eq(0)->where('root')->eq($taskID)->andWhere('type')->eq('task')->andWhere('account')->eq($account)->exec(); + $task = $this->computeHours4Multiple($oldTask, $task, array(), $autoStatus = false); if($task->status == 'wait') {