* Finish task #62852.

This commit is contained in:
zhouxudong
2022-08-03 07:31:07 +00:00
parent b139f8da68
commit 584793163f
7 changed files with 61 additions and 16 deletions
+29
View File
@@ -718,6 +718,35 @@ class program extends control
echo number_format($budgetLeft, 2);
}
/**
* Ajax get available budget.
*
* @param int $programID
* @param int $parentProgramID
* @param int $budget
* @access public
* @return void
*/
public function ajaxGetAvailableBudget($programID, $parentProgramID, $budget)
{
if(!empty($programID))
{
$program = $this->program->getByID($programID);
$parentProgram = $this->program->getByID($parentProgramID);
$budgetLeft = $this->program->getBudgetLeft($parentProgram);
$availableBudget = $program->parent == $parentProgramID ? $budgetLeft + $program->budget : $budgetLeft;
}
else
{
$parentProgram = $this->program->getByID($parentProgramID);
$availableBudget = $this->program->getBudgetLeft($parentProgram);
}
$tips = '';
if($budget != 0 && $budget !== null && $budget > $availableBudget) $tips = "<span id='programBudget' class='text-remind'>" . $this->lang->program->budgetOverrun . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . "</span>";
echo json_encode($tips);
}
/**
* Update program order.
*
+19 -5
View File
@@ -276,7 +276,7 @@ $(function()
if($(this).prop('checked'))
{
$('#budget').val('').attr('disabled', 'disabled');
budgetOverrunTips(budgetBalance);
budgetOverrunTips();
}
else
{
@@ -312,17 +312,31 @@ function setBudgetTipsAndAclList(programID)
$('#budget').removeAttr('placeholder');
$('.aclBox').html($('#PGMAcl').html());
}
budgetOverrunTips(editedProgramID);
}
/**
* Append prompt when the budget exceeds the parent project set.
*
* @param int $budgetLeft
* @param int $programID
* @access public
* @return void
*/
function budgetOverrunTips(budgetLeft)
function budgetOverrunTips(programID = 0)
{
var budget = $('#budget').val();
budget != 0 && budget !== null && budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden');
var parentProgramID = $('#parent').val();
var budget = $('#budget').val();
if(parentProgramID == 0)
{
if($('#programBudget').length > 0) $('#programBudget').remove();
return false;
}
$.get(createLink('program', 'ajaxGetAvailableBudget', 'programID=' + programID + "&parentProgramID=" + parentProgramID + "&budget=" + budget), function(data)
{
var data = JSON.parse(data);
if($('#programBudget').length > 0) $('#programBudget').remove();
$('#budgetBox').after(data);
});
}
+1 -1
View File
@@ -113,7 +113,7 @@ $lang->program->readjustTime = 'Change the program begin&end date.';
$lang->program->accessDenied = 'You have no access to the program.';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->checkedProjects = 'Seleted %s items';
$lang->program->budgetOverrun = 'The budget of the project set has exceeded the remaining budget of the parent project set:';
$lang->program->budgetOverrun = "The program's budget has exceeded the remaining budget of the parent program:";
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
+1 -1
View File
@@ -113,7 +113,7 @@ $lang->program->readjustTime = 'Change the program begin&end date.';
$lang->program->accessDenied = 'You have no access to the program.';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->checkedProjects = 'Seleted %s items';
$lang->program->budgetOverrun = 'The budget of the project set has exceeded the remaining budget of the parent project set:';
$lang->program->budgetOverrun = "The program's budget has exceeded the remaining budget of the parent program:";
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
+1 -1
View File
@@ -113,7 +113,7 @@ $lang->program->readjustTime = 'Change the program begin&end date.';
$lang->program->accessDenied = 'You have no access to the program.';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->checkedProjects = "Pour s électionner l'élément% s";
$lang->program->budgetOverrun = 'Le budget de l\'ensemble de projets a dépassé le budget restant de l\'ensemble de projets parent:';
$lang->program->budgetOverrun = "Le budget du programme a dépassé le budget restant du programme parent:";
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
+4 -4
View File
@@ -39,7 +39,7 @@
<?php js::set('PGMParentBudget', $lang->program->parentBudget);?>
<?php js::set('future', $lang->project->future);?>
<?php js::set('programList', $programList);?>
<?php js::set('budgetBalance', $budgetLeft);?>
<?php js::set('editedProgramID', '');?>
<?php $aclList = $parentProgram ? $lang->program->subAclList : $lang->program->aclList;?>
<?php $requiredFields = $config->program->create->requiredFields;?>
<div id='mainContent' class='main-content'>
@@ -70,9 +70,9 @@
<tr>
<th><?php echo $lang->program->budget;?></th>
<td>
<div class='input-group'>
<div id='budgetBox' class='input-group'>
<?php $placeholder = $parentProgram ? 'placeholder="' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $budgetLeft . '"' : '';?>
<?php echo html::input('budget', '', "class='form-control' onchange='budgetOverrunTips($budgetLeft)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . $placeholder);?>
<?php echo html::input('budget', '', "class='form-control' onchange='budgetOverrunTips()' 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>
<?php else:?>
@@ -80,7 +80,6 @@
<?php echo html::select('budgetUnit', $budgetUnitList, $config->project->defaultCurrency, "class='form-control'");?>
<?php endif;?>
</div>
<span id='programBudget' class='text-remind hidden'><?php echo $lang->program->budgetOverrun . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $budgetLeft;?></span>
</td>
<td class='futureBox'>
<div class='checkbox-primary future w-70px'>
@@ -144,4 +143,5 @@
<?php echo nl2br(html::radio('acl', $lang->program->subAclList, 'private', "onclick='setWhite(this.value);'", 'block'));?>
</div>
<?php js::set('parentProgramID', isset($parentProgram->id) ? $parentProgram->id : 0);?>
<?php js::set('budgetUnit', $parentProgram ? zget($lang->project->currencySymbol, $parentProgram->budgetUnit) : '');?>
<?php include '../../common/view/footer.html.php';?>
+6 -4
View File
@@ -15,6 +15,7 @@
<?php js::set('weekend', $config->execution->weekend);?>
<?php js::set('longTime', $lang->program->longTime);?>
<?php js::set('currencySymbol', $lang->project->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->program->parentBudget);?>
<?php js::set('parentBudget', $lang->program->parentBudget);?>
<?php js::set('future', $lang->project->future);?>
<?php js::set('programList', $programList);?>
@@ -23,7 +24,7 @@
<?php js::set('exRateNotEmpty', sprintf($lang->error->notempty, $lang->program->exchangeRate));?>
<?php js::set('exRateNum', sprintf($lang->error->float, $lang->program->exchangeRate));?>
<?php js::set('exRateNotNegative', $lang->program->exRateNotNegative);?>
<?php js::set('budgetBalance', $availableBudget);?>
<?php js::set('editedProgramID', $program->id);?>
<?php $aclList = $program->parent ? $lang->program->subAclList : $lang->program->aclList;?>
<?php $requiredFields = $config->program->edit->requiredFields;?>
<div id='mainContent' class='main-content'>
@@ -49,9 +50,9 @@
<tr>
<th><?php echo $lang->program->budget;?></th>
<td>
<div class='input-group'>
<div id='budgetBox' class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder="' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?>
<?php echo html::input('budget', $program->budget != 0 ? $program->budget : '', "class='form-control' onchange='budgetOverrunTips($availableBudget)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?>
<?php echo html::input('budget', $program->budget != 0 ? $program->budget : '', "class='form-control' onchange='budgetOverrunTips($program->id)' maxlength='10' " . (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:?>
@@ -61,7 +62,8 @@
<?php echo html::hidden('exchangeRate', '');?>
<?php endif;?>
</div>
<span id='programBudget' class='text-remind hidden'><?php echo $lang->program->budgetOverrun . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget;?></span>
<?php if($parentProgram):?>
<?php endif;?>
</td>
<td class='futureBox'>
<div class='checkbox-primary future w-70px'>