* Finish task#8962.

This commit is contained in:
qiyu-xie
2021-01-18 13:03:24 +08:00
parent 999ca1631c
commit c907c0fad5
10 changed files with 50 additions and 28 deletions
+7 -1
View File
@@ -146,6 +146,8 @@ class program extends control
{
$this->lang->navGroup->program = 'program';
$parentProgram = $parentProgramID ? $this->program->getPGMByID($parentProgramID) : '';
if($_POST)
{
$projectID = $this->program->PGMCreate();
@@ -161,10 +163,11 @@ class program extends control
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst');
$this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst');
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
$this->view->parentProgram = $parentProgramID ? $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($parentProgramID)->fetch() : 0;
$this->view->parentProgram = $parentProgram;
$this->view->parents = $this->program->getParentPairs();
$this->view->PGMList = $this->program->getPGMList();
$this->view->budgetUnitList = $this->program->getBudgetUnitList();
$this->view->remainBudget = $this->program->getParentRemainBudget($parentProgram);
$this->display();
}
@@ -181,6 +184,7 @@ class program extends control
$this->lang->navGroup->program = 'program';
$program = $this->program->getPGMByID($programID);
$parentProgram = $program->parent ? $this->program->getPGMByID($program->parent) : '';
if($_POST)
{
@@ -208,6 +212,8 @@ class program extends control
$this->view->parents = $parents;
$this->view->PGMList = $this->program->getPGMList();
$this->view->budgetUnitList = $this->program->getBudgetUnitList();
$this->view->parentProgram = $parentProgram;
$this->view->remainBudget = $this->program->getParentRemainBudget($parentProgram);
$this->display();
}
+1 -1
View File
@@ -215,7 +215,7 @@ $lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = "Parent program budget:";
$lang->program->PGMParentBudget = 'Parent program remain budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
+1 -1
View File
@@ -215,7 +215,7 @@ $lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = "Parent program budget:";
$lang->program->PGMParentBudget = 'Parent program remain budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
+1 -1
View File
@@ -215,7 +215,7 @@ $lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = "Parent program budget:";
$lang->program->PGMParentBudget = 'Parent program remain budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
+1 -1
View File
@@ -215,7 +215,7 @@ $lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = "Parent program budget:";
$lang->program->PGMParentBudget = 'Parent program remain budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
+1 -1
View File
@@ -215,7 +215,7 @@ $lang->program->stakeholderType = '干系人类型';
$lang->program->isStakeholderKey = '关键干系人';
$lang->program->importStakeholder = '从父项目集导入';
$lang->program->PGMManageMembers = '项目集团队';
$lang->program->PGMParentBudget = "父项目集预算:";
$lang->program->PGMParentBudget = '所属项目集剩余预算:';
$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算';
$lang->program->PGMBeginLetterParent = "父项目集的开始日期:%s,开始日期不能小于父项目集的开始日期";
$lang->program->PGMEndGreaterParent = "父项目集的完成日期:%s,完成日期不能大于父项目集的完成日期";
+1 -1
View File
@@ -213,7 +213,7 @@ $lang->program->stakeholderType = '干係人類型';
$lang->program->isStakeholderKey = '關鍵干係人';
$lang->program->importStakeholder = '從父項目集導入';
$lang->program->PGMManageMembers = '項目集團隊';
$lang->program->PGMParentBudget = "父項目集預算:";
$lang->program->PGMParentBudget = '所屬項目集剩餘預算:';
$lang->program->beyondParentBudget = '已超出所屬項目集的剩餘預算';
$lang->program->PGMBeginLetterParent = "父項目集的開始日期:%s,開始日期不能小於父項目集的開始日期";
$lang->program->PGMEndGreaterParent = "父項目集的完成日期:%s,完成日期不能大於父項目集的完成日期";
+24 -15
View File
@@ -178,13 +178,8 @@ class programModel extends model
/* The budget of a child program cannot beyond the remaining budget of the parent program. */
if(isset($program->budget) and $parentProgram->budget != 0)
{
$childGrade = $parentProgram->grade + 1;
$childSumBudget = $this->dao->select("sum(budget) as sumBudget")->from(TABLE_PROJECT)
->where('path')->like("%{$program->parent}%")
->andWhere('grade')->eq($childGrade)
->fetch('sumBudget');
if($program->budget > $parentProgram->budget - $childSumBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
$parentRemainBudget = $this->getParentRemainBudget($parentProgram);
if($program->budget > $parentRemainBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
}
if(dao::isError()) return false;
@@ -297,14 +292,8 @@ class programModel extends model
/* The budget of a child program cannot beyond the remaining budget of the parent program. */
if($program->budget != 0 and $parentProgram->budget != 0)
{
$childGrade = $parentProgram->grade + 1;
$childSumBudget = $this->dao->select("sum(budget) as sumBudget")->from(TABLE_PROJECT)
->where('path')->like("%{$program->parent}%")
->andWhere('grade')->eq($childGrade)
->andWhere('id')->ne($programID)
->fetch('sumBudget');
if($program->budget > $parentProgram->budget - $childSumBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
$parentRemainBudget = $this->getParentRemainBudget($parentProgram);
if($program->budget > $parentRemainBudget + $program->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
}
}
if(dao::isError()) return false;
@@ -677,6 +666,26 @@ class programModel extends model
return $budgetUnitList;
}
/**
* Get parent remain budget.
*
* @param object $parentProgram
* @access public
* @return int
*/
public function getParentRemainBudget($parentProgram)
{
if(empty($parentProgram)) return;
$childGrade = $parentProgram->grade + 1;
$childSumBudget = $this->dao->select("sum(budget) as sumBudget")->from(TABLE_PROJECT)
->where('path')->like("%{$parentProgram->id}%")
->andWhere('grade')->eq($childGrade)
->fetch('sumBudget');
return $parentProgram->budget - $childSumBudget;
}
/**
* Get program parent pairs
*
+7 -3
View File
@@ -66,10 +66,14 @@
<th><?php echo $lang->program->PGMBudget;?></th>
<td>
<div class='input-group'>
<?php if($parentProgram) $parentProgramNote = $lang->program->PGMParentBudget . ($parentProgram->budget != 0 ? $parentProgram->budget . zget($lang->program->unitList, $parentProgram->budgetUnit, '') : $lang->program->future);?>
<?php echo html::input('budget', '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($parentProgram ? "placeholder=$parentProgramNote" : ''));?>
<?php $placeholder = $parentProgram->budget != 0 ? 'placeholder=' . $lang->program->PGMParentBudget . $remainBudget : '';?>
<?php echo html::input('budget', '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon fix-border'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>
<?php else:?>
<span class='input-group-addon fix-border'></span>
<?php echo html::select('budgetUnit', $budgetUnitList, empty($parentProgram->budgetUnit) ? $config->program->mainCurrency : $parentProgram->budgetUnit, "class='form-control'");?>
<?php echo html::select('budgetUnit', $budgetUnitList, $config->program->mainCurrency, "class='form-control'");?>
<?php endif;?>
</div>
</td>
<td>
+6 -3
View File
@@ -44,11 +44,14 @@
<th><?php echo $lang->program->PGMBudget;?></th>
<td>
<div class='input-group'>
<?php $parentProgram = zget($PGMList, $program->parent, '');?>
<?php if($parentProgram) $parentProgramNote = $lang->program->PGMParentBudget . ($parentProgram->budget != 0 ? $parentProgram->budget . zget($lang->program->unitList, $parentProgram->budgetUnit, '') : $lang->program->future);?>
<?php echo html::input('budget', $program->budget != 0 ? $program->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . ($parentProgram ? "placeholder=$parentProgramNote " : ''));?>
<?php $placeholder = $parentProgram->budget != 0 ? 'placeholder=' . $lang->program->PGMParentBudget . $remainBudget : '';?>
<?php echo html::input('budget', $program->budget != 0 ? $program->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon'><?php echo zget($budgetUnitList, $program->budgetUnit);?></span>
<?php else:?>
<span class='input-group-addon'></span>
<?php echo html::select('budgetUnit', $budgetUnitList, $program->budgetUnit, "class='form-control'");?>
<?php endif;?>
</div>
</td>
<td>