From 6972110d5479cd9d7fe03207e126d3f4a441ae90 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 5 Sep 2022 20:21:18 +0800 Subject: [PATCH] * adjust for delete estimate. --- module/report/model.php | 33 ++++++++++++++++++++++++--------- module/task/control.php | 7 ++++--- module/task/model.php | 8 ++++---- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/module/report/model.php b/module/report/model.php index a68c4b6504..8dea2924e6 100644 --- a/module/report/model.php +++ b/module/report/model.php @@ -358,18 +358,33 @@ class reportModel extends model $taskGroups[$task->assignedTo][$task->id] = $task; } - $multiTaskTeams = $this->dao->select('*')->from(TABLE_TASKTEAM)->where('task')->in(array_keys($allTasks)) + $stmt = $this->dao->select('*')->from(TABLE_TASKTEAM)->where('task')->in(array_keys($allTasks)) ->beginIF($dept)->andWhere('account')->in(array_keys($deptUsers))->fi() - ->fetchGroup('account', 'task'); - foreach($multiTaskTeams as $assignedTo => $multiTasks) + ->query(); + $multiTaskTeams = array(); + while($taskTeam = $stmt->fetch()) { - foreach($multiTasks as $task) + $account = $taskTeam->account; + if(!isset($multiTaskTeams[$account][$taskTeam->task])) { - $userTask = clone $allTasks[$task->root]; - $userTask->estimate = $task->estimate; - $userTask->consumed = $task->consumed; - $userTask->left = $task->left; - $taskGroups[$assignedTo][$task->root] = $userTask; + $multiTaskTeams[$account][$taskTeam->task] = $taskTeam; + } + else + { + $multiTaskTeams[$account][$taskTeam->task]->estimate += $taskTeam->estimate; + $multiTaskTeams[$account][$taskTeam->task]->consumed += $taskTeam->consumed; + $multiTaskTeams[$account][$taskTeam->task]->left = $taskTeam->left; + } + } + foreach($multiTaskTeams as $assignedTo => $taskTeams) + { + foreach($taskTeams as $taskTeam) + { + $userTask = clone $allTasks[$taskTeam->task]; + $userTask->estimate = $taskTeam->estimate; + $userTask->consumed = $taskTeam->consumed; + $userTask->left = $taskTeam->left; + $taskGroups[$assignedTo][$taskTeam->task] = $userTask; } } diff --git a/module/task/control.php b/module/task/control.php index cbeb2b7120..6349caefa5 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -1228,7 +1228,8 @@ class task extends control public function deleteEstimate($estimateID, $confirm = 'no') { $estimate = $this->task->getEstimateById($estimateID); - $task = $this->task->getById($estimate->task); + $taskID = $estimate->objectID; + $task = $this->task->getById($taskID); if($confirm == 'no' and $task->consumed - $estimate->consumed != 0) { return print(js::confirm($this->lang->task->confirmDeleteEstimate, $this->createLink('task', 'deleteEstimate', "estimateID=$estimateID&confirm=yes"))); @@ -1242,12 +1243,12 @@ class task extends control $changes = $this->task->deleteEstimate($estimateID); if(dao::isError()) return print(js::error(dao::getError())); - $actionID = $this->loadModel('action')->create('task', $estimate->task, 'DeleteEstimate'); + $actionID = $this->loadModel('action')->create('task', $taskID, 'DeleteEstimate'); $this->action->logHistory($actionID, $changes); if($task->consumed - $estimate->consumed == 0) { - $this->loadModel('action')->create('task', $estimate->task, 'Adjusttasktowait'); + $this->action->create('task', $taskID, 'Adjusttasktowait'); return print(js::reload('parent.parent')); } diff --git a/module/task/model.php b/module/task/model.php index d51add30fc..d6350a6a43 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -2873,7 +2873,7 @@ class taskModel extends model if($estimate->consumed < 0) return dao::$errors[] = sprintf($this->lang->error->ge, $this->lang->task->record, '0'); if($estimate->left < 0) return dao::$errors[] = sprintf($this->lang->error->ge, $this->lang->task->left, '0'); - $task = $this->getById($oldEstimate->task); + $task = $this->getById($oldEstimate->objectID); $this->dao->update(TABLE_EFFORT)->data($estimate) ->autoCheck() ->where('id')->eq((int)$estimateID) @@ -2946,7 +2946,7 @@ class taskModel extends model public function deleteEstimate($estimateID) { $estimate = $this->getEstimateById($estimateID); - $task = $this->getById($estimate->task); + $task = $this->getById($estimate->objectID); $now = helper::now(); $consumed = $task->consumed - $estimate->consumed; @@ -2954,7 +2954,7 @@ class taskModel extends model if($estimate->isLast) { $lastTwoEstimates = $this->dao->select('*')->from(TABLE_EFFORT) - ->where('objectID')->eq($estimate->task) + ->where('objectID')->eq($estimate->objectID) ->andWhere('objectType')->eq('task') ->orderBy('date desc,id desc')->limit(2)->fetchAll(); $lastTwoEstimate = isset($lastTwoEstimates[1]) ? $lastTwoEstimates[1] : ''; @@ -3031,7 +3031,7 @@ class taskModel extends model $this->dao->update(TABLE_EFFORT)->set('deleted')->eq('1')->where('id')->eq($estimateID)->exec(); if(!empty($task->team)) $data = $this->computeHours4Multiple($task, $data); - $this->dao->update(TABLE_TASK)->data($data) ->where('id')->eq($estimate->task)->exec(); + $this->dao->update(TABLE_TASK)->data($data) ->where('id')->eq($estimate->objectID)->exec(); if($task->parent > 0) $this->updateParentStatus($task->id); if($task->story) $this->loadModel('story')->setStage($task->story);