diff --git a/module/program/control.php b/module/program/control.php index ee59031da9..bec85c65c1 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -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 = "" . $this->lang->program->budgetOverrun . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . ""; + echo json_encode($tips); + } + /** * Update program order. * diff --git a/module/program/js/common.js b/module/program/js/common.js index de534ca2d3..1711930d96 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -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); + }); } diff --git a/module/program/lang/de.php b/module/program/lang/de.php index 283436ef71..281d3d37f0 100644 --- a/module/program/lang/de.php +++ b/module/program/lang/de.php @@ -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'; diff --git a/module/program/lang/en.php b/module/program/lang/en.php index 89fd9da676..6ea9f9b902 100644 --- a/module/program/lang/en.php +++ b/module/program/lang/en.php @@ -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'; diff --git a/module/program/lang/fr.php b/module/program/lang/fr.php index 1e3a1e4140..0d34c935c2 100644 --- a/module/program/lang/fr.php +++ b/module/program/lang/fr.php @@ -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'; diff --git a/module/program/view/create.html.php b/module/program/view/create.html.php index d5bbffbca5..34723e2e92 100644 --- a/module/program/view/create.html.php +++ b/module/program/view/create.html.php @@ -39,7 +39,7 @@ program->parentBudget);?> project->future);?> - + program->subAclList : $lang->program->aclList;?> program->create->requiredFields;?>