* [bug#66973] Fix the bug of edit programplan.

This commit is contained in:
xieqiyu
2025-11-14 03:07:14 +00:00
parent 7786644de5
commit d5df4b3da8
6 changed files with 12 additions and 8 deletions
+2 -2
View File
@@ -11,7 +11,7 @@ $config->programplan->form->create['order'] = array('label' => '',
$config->programplan->form->create['name'] = array('label' => $lang->nameAB, 'type' => 'string', 'control' => 'text', 'required' => true, 'default' => '', 'base' => true, 'filter' => 'trim');
$config->programplan->form->create['code'] = array('label' => $lang->code, 'type' => 'string', 'control' => 'text', 'required' => false, 'default' => '', 'filter' => 'trim');
$config->programplan->form->create['PM'] = array('label' => $lang->programplan->PMAB, 'type' => 'string', 'control' => 'picker', 'required' => false, 'default' => '', 'options' => '');
if(!empty($config->setPercent)) $config->programplan->form->create['percent'] = array('label' => $lang->programplan->percent, 'type' => 'float', 'control' => 'text', 'required' => false, 'default' => 0);
if(!empty($config->setPercent)) $config->programplan->form->create['percent'] = array('label' => $lang->programplan->percent, 'type' => 'string', 'control' => 'text', 'required' => false, 'default' => '');
$config->programplan->form->create['attribute'] = array('label' => $lang->programplan->attribute, 'type' => 'string', 'control' => 'picker', 'required' => false, 'default' => 0, 'options' => $lang->stage->typeList);
$config->programplan->form->create['type'] = array('label' => $lang->execution->method, 'type' => 'string', 'control' => 'picker', 'required' => true, 'default' => 'stage', 'options' => $lang->execution->typeList);
$config->programplan->form->create['point'] = array('label' => $lang->programplan->point, 'type' => 'array', 'control' => 'picker', 'required' => false, 'default' => '', 'options' => array(''), 'multiple' => true);
@@ -33,7 +33,7 @@ $config->programplan->form->edit['parent'] = array('required' => false, 'type
$config->programplan->form->edit['name'] = array('required' => true, 'type' => 'string', 'default' => '');
$config->programplan->form->edit['code'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->edit['PM'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->edit['percent'] = array('required' => false, 'type' => 'float', 'default' => 0);
$config->programplan->form->edit['percent'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->edit['attribute'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->edit['acl'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->form->edit['begin'] = array('required' => true, 'type' => 'string', 'default' => null);
+1 -1
View File
@@ -135,7 +135,7 @@ $lang->programplan->ganttCustom['delay'] = 'Delay';
$lang->programplan->ganttCustom['delayDays'] = 'Delay days';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"Workload %" must be digits.';
$lang->programplan->error->percentNumber = '"Workload %" must be non-negative';
$lang->programplan->error->planFinishSmall = 'The "End" date must be > the "Begin" date.';
$lang->programplan->error->percentOver = 'The sum of "Workload %" cannot exceed 100% of one stage.';
$lang->programplan->error->createdTask = 'The task has been decomposed. Sub phases cannot be added.';
+1 -1
View File
@@ -135,7 +135,7 @@ $lang->programplan->ganttCustom['delay'] = 'Delay';
$lang->programplan->ganttCustom['delayDays'] = 'Delay days';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"Workload %" must be digits.';
$lang->programplan->error->percentNumber = '"Workload %" must be non-negative';
$lang->programplan->error->planFinishSmall = 'The "End" date must be > the "Begin" date.';
$lang->programplan->error->percentOver = 'The sum of "Workload %" cannot exceed 100% of one stage.';
$lang->programplan->error->createdTask = 'The task is decomposed. Sub stages cannot be added.';
+1 -1
View File
@@ -135,7 +135,7 @@ $lang->programplan->ganttCustom['delay'] = 'Delay';
$lang->programplan->ganttCustom['delayDays'] = 'Delay days';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"Workload %" must be digits.';
$lang->programplan->error->percentNumber = '"Workload %" must be non-negative';
$lang->programplan->error->planFinishSmall = 'The "End" date must be > the "Begin" date.';
$lang->programplan->error->percentOver = 'The sum of "Workload %" cannot exceed 100% of one stage.';
$lang->programplan->error->createdTask = 'The task has been decomposed. Sub phases cannot be added.';
+1 -1
View File
@@ -135,7 +135,7 @@ $lang->programplan->ganttCustom['delay'] = '是否延期';
$lang->programplan->ganttCustom['delayDays'] = '延期天数';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"工作量占比"必须为数字';
$lang->programplan->error->percentNumber = '"工作量占比"必须为非负数';
$lang->programplan->error->planFinishSmall = '"计划完成时间"必须大于"计划开始时间"';
$lang->programplan->error->percentOver = '相同父阶段的子阶段工作量占比之和不超过100%';
$lang->programplan->error->createdTask = '已分解任务,不可添加子阶段';
+6 -2
View File
@@ -81,6 +81,7 @@ class programplanZen extends programplan
$prevLevel = 0;
foreach($plans as $rowID => $plan)
{
if(empty($parentID) and empty($oldPlans)) $plan->id = '';
$plan->days = isset($plan->enabled) && $plan->enabled == 'on' ? $this->programplan->calcDaysForStage($plan->begin, $plan->end) : 0;
$plan->project = $projectID;
@@ -112,8 +113,10 @@ class programplanZen extends programplan
if(!empty($this->config->setCode) && empty($plan->code) && strpos(",{$this->config->execution->create->requiredFields},", ',code,') !== false) dao::$errors["code[{$rowID}]"] = sprintf($this->lang->error->notempty, $plan->type == 'stage' ? $this->lang->execution->code : $this->lang->code);
}
if(!is_numeric($plan->percent) || $plan->percent < 0) dao::$errors["percent[$rowID]"] = $this->lang->programplan->error->percentNumber;
$customKey = 'create' . ucfirst($project->model) . 'Fields';
if(strpos(",{$this->config->programplan->custom->$customKey},", ',percent,') !== false && isset($plan->percent))
if(strpos(",{$this->config->programplan->custom->$customKey},", ',percent,') !== false && isset($plan->percent) && !dao::isError())
{
if($plan->level == 0)
{
@@ -145,7 +148,6 @@ class programplanZen extends programplan
$lastLevels[$plan->level] = $plan;
if($plan->level > 0) $this->checkLegallyDate($plan, $project, zget($lastLevels, $plan->level - 1, null), $rowID);
if($plan->percent < 0) dao::$errors["percent[$rowID]"] = sprintf($this->lang->error->float, $this->lang->programplan->percent);
}
foreach($totalPercent as $group => $percent)
@@ -220,6 +222,8 @@ class programplanZen extends programplan
if(dao::isError()) return false;
}
if(!is_numeric($plan->percent) || $plan->percent < 0) dao::$errors['percent'] = $this->lang->programplan->error->percentNumber;
if($projectID) $this->loadModel('execution')->checkBeginAndEndDate($projectID, $plan->begin, $plan->end, $plan->parent);
if(dao::isError()) return false;