* code for task#1030.
This commit is contained in:
@@ -423,6 +423,32 @@ class task extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Record consumed and estimate.
|
||||
*
|
||||
* @param int $taskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function record($taskID, $confirm = 'no')
|
||||
{
|
||||
$this->commonAction($taskID);
|
||||
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->task->record($taskID);
|
||||
$actionID = $this->action->create('task', $taskID, 'Record', '');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
die(js::locate($this->createLink('task', 'view', "taskID=$taskID"), 'parent'));
|
||||
}
|
||||
|
||||
$header['title'] = $this->lang->task->record;
|
||||
|
||||
$this->view->header = $header;
|
||||
$this->view->beforeConsumed = $this->task->getBeforeConsumed($taskID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish a task.
|
||||
*
|
||||
|
||||
@@ -18,6 +18,7 @@ $lang->task->edit = "Update";
|
||||
$lang->task->delete = "Delete";
|
||||
$lang->task->view = "Info";
|
||||
$lang->task->logEfforts = "Efforts";
|
||||
$lang->task->record = "Estimate";
|
||||
$lang->task->start = "Start";
|
||||
$lang->task->finish = "Finish";
|
||||
$lang->task->close = "Close";
|
||||
@@ -46,6 +47,8 @@ $lang->task->leftAB = 'Left';
|
||||
$lang->task->consumed = 'Consumed';
|
||||
$lang->task->consumedAB = 'Use';
|
||||
$lang->task->hour = 'Hour';
|
||||
$lang->task->beforeConsumed = 'Before consumed';
|
||||
$lang->task->consumedThisTime = 'This time consumed';
|
||||
$lang->task->estStarted = 'Estimate start';
|
||||
$lang->task->realStarted = 'Real start';
|
||||
$lang->task->deadline = 'Deadline';
|
||||
@@ -135,7 +138,8 @@ $lang->task->remindBug = "This task from Bug, update the Bug:%s or no
|
||||
$lang->task->confirmChangeProject = 'Change project will change module, story and assignedTo also, are you sure?';
|
||||
|
||||
$lang->task->error = new stdclass();
|
||||
$lang->task->error->consumed = '"Consumed" must be number';
|
||||
$lang->task->error->consumed = '"Consumed" must be number';
|
||||
$lang->task->error->newConsumed = '"Consumed" must be more than consumed before';
|
||||
|
||||
/* Report. */
|
||||
$lang->task->report = new stdclass();
|
||||
|
||||
@@ -18,6 +18,7 @@ $lang->task->edit = "编辑";
|
||||
$lang->task->delete = "删除";
|
||||
$lang->task->view = "查看任务";
|
||||
$lang->task->logEfforts = "记录工时";
|
||||
$lang->task->record = "工时";
|
||||
$lang->task->start = "开始";
|
||||
$lang->task->finish = "完成";
|
||||
$lang->task->close = "关闭";
|
||||
@@ -46,6 +47,8 @@ $lang->task->leftAB = '剩';
|
||||
$lang->task->consumed = '已经消耗';
|
||||
$lang->task->consumedAB = '耗';
|
||||
$lang->task->hour = '小时';
|
||||
$lang->task->beforeConsumed = '之前消耗';
|
||||
$lang->task->consumedThisTime = '本次消耗';
|
||||
$lang->task->estStarted = '预计开始';
|
||||
$lang->task->realStarted = '实际开始';
|
||||
$lang->task->deadline = '截止日期';
|
||||
@@ -135,7 +138,8 @@ $lang->task->remindBug = "该任务为Bug转化得到,是否更新B
|
||||
$lang->task->confirmChangeProject = '修改项目会导致相应的所属模块、相关需求和指派人发生变化,确定吗?';
|
||||
|
||||
$lang->task->error = new stdclass();
|
||||
$lang->task->error->consumed = '"已经消耗"必须为数字';
|
||||
$lang->task->error->consumed = '"已经消耗"必须为数字';
|
||||
$lang->task->error->newConsumed = '"已经消耗"必须大于之前消耗';
|
||||
|
||||
/* 统计报表。*/
|
||||
$lang->task->report = new stdclass();
|
||||
|
||||
@@ -184,6 +184,23 @@ class taskModel extends model
|
||||
->get();
|
||||
$task->statusCustom = strpos(self::CUSTOM_STATUS_ORDER, $task->status) + 1;
|
||||
|
||||
if($task->consumed < $oldTask->consumed)
|
||||
{
|
||||
die(js::error($this->lang->task->error->newConsumed));
|
||||
}
|
||||
else if($task->consumed != $oldTask->consumed or $task->left != $oldTask->left)
|
||||
{
|
||||
$estimate = new stdClass();
|
||||
$estimate->consumed = $task->consumed - $oldTask->consumed;
|
||||
$estimate->left = $task->left;
|
||||
$estimate->task = $taskID;
|
||||
$estimate->account = $this->app->user->account;
|
||||
$estimate->date = helper::now();
|
||||
|
||||
$this->dao->insert(TABLE_TASKESTIMATE)->data($estimate)
|
||||
->autoCheck()
|
||||
->exec();
|
||||
}
|
||||
$this->dao->update(TABLE_TASK)->data($task)
|
||||
->autoCheck()
|
||||
->batchCheckIF($task->status != 'cancel', $this->config->task->edit->requiredFields, 'notempty')
|
||||
@@ -386,6 +403,35 @@ class taskModel extends model
|
||||
if(!dao::isError()) return common::createChanges($oldTask, $task);
|
||||
}
|
||||
|
||||
/**
|
||||
* Record estimate and left of task.
|
||||
*
|
||||
* @param int $taskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function record($taskID)
|
||||
{
|
||||
$oldTask = $this->getById($taskID);
|
||||
$estimate = fixer::input('post')
|
||||
->setDefault('account', $this->app->user->account)
|
||||
->setDefault('task', $taskID)
|
||||
->setDefault('date', helper::now())
|
||||
->get();
|
||||
$this->dao->insert(TABLE_TASKESTIMATE)->data($estimate)
|
||||
->autoCheck()
|
||||
->exec();
|
||||
|
||||
$consumed = $this->getBeforeConsumed($taskID);
|
||||
$this->dao->update(TABLE_TASK)
|
||||
->set('consumed')->eq($consumed)
|
||||
->set('`left`')->eq($estimate->left)
|
||||
->where('id')->eq($taskID)
|
||||
->exec();
|
||||
$task = $this->getById($taskID);
|
||||
if(!dao::isError()) return common::createChanges($oldTask, $task);
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish a task.
|
||||
*
|
||||
@@ -729,6 +775,24 @@ class taskModel extends model
|
||||
return $taskCounts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get before consumed.
|
||||
*
|
||||
* @param int $taskID
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function getBeforeConsumed($taskID)
|
||||
{
|
||||
$tasks = $this->dao->select('consumed')->from(TABLE_TASKESTIMATE)->where('task')->eq($taskID)->fetchAll();
|
||||
$beforeConsumed = 0;
|
||||
foreach($tasks as $task)
|
||||
{
|
||||
$beforeConsumed += $task->consumed;
|
||||
}
|
||||
return $beforeConsumed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch process tasks.
|
||||
*
|
||||
@@ -1072,6 +1136,7 @@ class taskModel extends model
|
||||
|
||||
if($action == 'assignto') return $task->status != 'closed' and $task->status != 'cancel';
|
||||
if($action == 'start') return $task->status != 'doing' and $task->status != 'closed' and $task->status != 'cancel';
|
||||
if($action == 'record') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel';
|
||||
if($action == 'finish') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel';
|
||||
if($action == 'close') return $task->status == 'done' or $task->status == 'cancel';
|
||||
if($action == 'activate') return $task->status == 'done' or $task->status == 'closed' or $task->status == 'cancel' ;
|
||||
|
||||
35
module/task/view/record.html.php
Normal file
35
module/task/view/record.html.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/**
|
||||
* The record file of task module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
|
||||
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
|
||||
* @author Chunsheng Wang<wwccss@gmail.com>
|
||||
* @package task
|
||||
* @version $Id: record.html.php 935 2013-01-08 07:49:24Z wwccss@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table-1'>
|
||||
<caption><?php echo $task->name;?></caption>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->task->beforeConsumed;?></th>
|
||||
<td><?php echo $beforeConsumed . ' ' . $lang->task->hour;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->task->consumedThisTime;?></th>
|
||||
<td><?php echo html::input('consumed', '', "class='text-2'") . $lang->task->hour;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->task->left;?></th>
|
||||
<td><?php echo html::input('left', '', "class='text-2'") . $lang->task->hour;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='a-center'><?php echo html::submitButton() . html::linkButton($lang->goback, $this->session->taskList); ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</form>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -27,6 +27,7 @@
|
||||
//if(!($task->status != 'closed' and $task->status != 'cancel' and common::printLink('task', 'logEfforts', "taskID=$task->id", $lang->task->buttonLogEfforts))) echo $lang->task->buttonLogEfforts . ' ';
|
||||
common::printIcon('task', 'assignTo', "projectID=$task->project&taskID=$task->id");
|
||||
if($this->task->isClickable($task, 'start')) common::printIcon('task', 'start', "taskID=$task->id");
|
||||
if($this->task->isClickable($task, 'record')) common::printIcon('task', 'record', "taskID=$task->id");
|
||||
if($this->task->isClickable($task, 'finish')) common::printIcon('task', 'finish', "taskID=$task->id");
|
||||
if($this->task->isClickable($task, 'close')) common::printIcon('task', 'close', "taskID=$task->id");
|
||||
if($this->task->isClickable($task, 'activate')) common::printIcon('task', 'activate', "taskID=$task->id");
|
||||
|
||||
Reference in New Issue
Block a user