Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/tianshujie_fixbug

This commit is contained in:
tianshujie
2022-03-29 08:35:17 +08:00
2 changed files with 19 additions and 7 deletions
+18 -6
View File
@@ -621,7 +621,7 @@ class programModel extends model
/* The budget of a child program cannot beyond the remaining budget of the parent program. */
$program->budgetUnit = $parentProgram->budgetUnit;
if(isset($program->budget) and $parentProgram->budget != 0)
if(isset($program->budget))
{
$availableBudget = $this->getBudgetLeft($parentProgram);
if($program->budget > $availableBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
@@ -722,7 +722,7 @@ class programModel extends model
/* The budget of a child program cannot beyond the remaining budget of the parent program. */
$program->budgetUnit = $parentProgram->budgetUnit;
if($program->budget != 0 and $parentProgram->budget != 0)
if($program->budget != 0)
{
$availableBudget = $this->getBudgetLeft($parentProgram);
if($program->budget > $availableBudget + $oldProgram->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
@@ -1090,21 +1090,33 @@ class programModel extends model
/**
* Get budget left.
*
* @param object $parentProgram
* @param int $parentProgram
* @param int $leftBudget
* @access public
* @return int
*/
public function getBudgetLeft($parentProgram)
public function getBudgetLeft($parentProgram, $leftBudget = 0)
{
if(empty($parentProgram)) return;
if(empty($parentProgram->id)) return;
$childGrade = $parentProgram->grade + 1;
$childSumBudget = $this->dao->select("sum(budget) as sumBudget")->from(TABLE_PROGRAM)
->where('path')->like("%{$parentProgram->id}%")
->andWhere('grade')->eq($childGrade)
->andWhere('deleted')->eq('0')
->fetch('sumBudget');
return (float)$parentProgram->budget - (float)$childSumBudget;
$leftBudget += (float)$parentProgram->budget - (float)$childSumBudget;
if($parentProgram->budget == 0 and $parentProgram->parent)
{
$parentParent = $this->getById($parentProgram->parent);
return $this->getBudgetLeft($parentParent, $leftBudget);
}
else
{
return $leftBudget;
}
}
/**
+1 -1
View File
@@ -66,7 +66,7 @@
<th><?php echo $lang->program->budget;?></th>
<td>
<div class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $budgetLeft : '';?>
<?php $placeholder = $parentProgram ? 'placeholder=' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $budgetLeft : '';?>
<?php echo html::input('budget', '', "class='form-control' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon fix-border'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>