From 584793163ffd3c4cee71886b14d8d86d837390b8 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Wed, 3 Aug 2022 07:31:07 +0000 Subject: [PATCH] * Finish task #62852. --- module/program/control.php | 29 +++++++++++++++++++++++++++++ module/program/js/common.js | 24 +++++++++++++++++++----- module/program/lang/de.php | 2 +- module/program/lang/en.php | 2 +- module/program/lang/fr.php | 2 +- module/program/view/create.html.php | 8 ++++---- module/program/view/edit.html.php | 10 ++++++---- 7 files changed, 61 insertions(+), 16 deletions(-) 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;?>
@@ -70,9 +70,9 @@ program->budget;?> -
+
program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $budgetLeft . '"' : '';?> - + budgetUnit);?> @@ -80,7 +80,6 @@ project->defaultCurrency, "class='form-control'");?>
-
@@ -144,4 +143,5 @@ program->subAclList, 'private', "onclick='setWhite(this.value);'", 'block'));?>
id) ? $parentProgram->id : 0);?> +project->currencySymbol, $parentProgram->budgetUnit) : '');?> diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index 6d63cfcb0d..409d91da35 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -15,6 +15,7 @@ execution->weekend);?> program->longTime);?> project->currencySymbol);?> +program->parentBudget);?> program->parentBudget);?> project->future);?> @@ -23,7 +24,7 @@ error->notempty, $lang->program->exchangeRate));?> error->float, $lang->program->exchangeRate));?> program->exRateNotNegative);?> - +id);?> parent ? $lang->program->subAclList : $lang->program->aclList;?> program->edit->requiredFields;?>
@@ -49,9 +50,9 @@ program->budget;?> -
+
budget != 0) ? 'placeholder="' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?> - budget != 0 ? $program->budget : '', "class='form-control' onchange='budgetOverrunTips($availableBudget)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?> + budget != 0 ? $program->budget : '', "class='form-control' onchange='budgetOverrunTips($program->id)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> @@ -61,7 +62,8 @@
- + +