From 2358f42e392d97fa531a513eece218071aba7cb7 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Mon, 1 Aug 2022 08:13:05 +0000 Subject: [PATCH 01/26] * Finish task #62836 ~ #62849. --- module/program/model.php | 53 --------------------------------- module/project/model.php | 63 ---------------------------------------- 2 files changed, 116 deletions(-) diff --git a/module/program/model.php b/module/program/model.php index 84eef5815d..aacbebdc4e 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -721,32 +721,6 @@ class programModel extends model ->remove('delta,future,contactListMenu') ->get(); - if($program->parent) - { - $parentProgram = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($program->parent)->fetch(); - if($parentProgram) - { - /* Child program begin cannot less than parent. */ - if(!empty($program->name) and $program->begin < $parentProgram->begin) dao::$errors['begin'] = sprintf($this->lang->program->beginLetterParent, $parentProgram->begin); - - /* When parent set end then child program end cannot greater than parent. */ - if(!empty($program->name) and$parentProgram->end != '0000-00-00' and $program->end > $parentProgram->end) dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end); - - /* When parent set end then child program cannot set longTime. */ - if(!empty($program->name) and empty($program->end) and $this->post->delta == 999 and $parentProgram->end != '0000-00-00') dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end); - - /* The budget of a child program cannot beyond the remaining budget of the parent program. */ - $program->budgetUnit = $parentProgram->budgetUnit; - if(isset($program->budget)) - { - $availableBudget = $this->getBudgetLeft($parentProgram); - if($program->budget > $availableBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; - } - - if(dao::isError()) return false; - } - } - /* Redefines the language entries for the fields in the project table. */ foreach(explode(',', $this->config->program->create->requiredFields) as $field) { @@ -817,17 +791,6 @@ class programModel extends model $program = $this->loadModel('file')->processImgURL($program, $this->config->program->editor->edit['id'], $this->post->uid); $children = $this->getChildren($programID); - if($children > 0) - { - $minChildBegin = $this->dao->select('type, begin as minBegin')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->orderBy('begin_asc')->fetch(); - $maxChildEnd = $this->dao->select('type, end as maxEnd')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->andWhere('end')->ne('0000-00-00')->orderBy('end_desc')->fetch(); - - $minChildType = ($minChildBegin->type == 'project') ? $this->lang->project->common : $this->lang->program->childProgram; - $maxChildType = ($maxChildEnd->type == 'project') ? $this->lang->project->common : $this->lang->program->childProgram; - if($minChildBegin and $program->begin > $minChildBegin->minBegin) dao::$errors['begin'] = sprintf($this->lang->program->beginGreateChild, $minChildType, $minChildBegin->minBegin); - if($maxChildEnd and $program->end < $maxChildEnd->maxEnd and $this->post->delta != 999) dao::$errors['end'] = sprintf($this->lang->program->endLetterChild, $maxChildType, $maxChildEnd->maxEnd); - if(dao::isError()) return false; - } if($program->parent) { @@ -836,22 +799,6 @@ class programModel extends model ->where('root')->eq($programID) ->andwhere('type')->eq('line') ->exec(); - - $parentProgram = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($program->parent)->fetch(); - if($parentProgram) - { - if(!empty($program->name) and $program->begin < $parentProgram->begin) dao::$errors['begin'] = sprintf($this->lang->program->beginLetterParent, $parentProgram->begin); - if(!empty($program->name) and $parentProgram->end != '0000-00-00' and $program->end > $parentProgram->end) dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end); - if(!empty($program->name) and empty($program->end) and $this->post->delta == 999 and $parentProgram->end != '0000-00-00') dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end); - } - - /* The budget of a child program cannot beyond the remaining budget of the parent program. */ - $program->budgetUnit = $parentProgram->budgetUnit; - if($program->budget != 0) - { - $availableBudget = $this->getBudgetLeft($parentProgram); - if($program->budget > $availableBudget + $oldProgram->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; - } } if(dao::isError()) return false; diff --git a/module/project/model.php b/module/project/model.php index fff3a0fe4a..42c99b0993 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1106,26 +1106,6 @@ class projectModel extends model $program = new stdClass(); if($project->parent) { - $program = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($project->parent)->fetch(); - if($program) - { - /* Child project begin cannot less than parent. */ - if(!empty($project->name) and $project->begin < $program->begin) dao::$errors['begin'] = sprintf($this->lang->project->beginGreateChild, $program->begin); - - /* When parent set end then child project end cannot greater than parent. */ - if(!empty($project->name) and $program->end != '0000-00-00' and $project->end > $program->end) dao::$errors['end'] = sprintf($this->lang->project->endLetterChild, $program->end); - - if(dao::isError()) return false; - } - - /* The budget of a child project cannot beyond the remaining budget of the parent program. */ - $project->budgetUnit = $program->budgetUnit; - if(isset($project->budget) and $program->budget != 0) - { - $availableBudget = $this->loadModel('program')->getBudgetLeft($program); - if($availableBudget > 0 and $project->budget > $availableBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; - } - /* Judge products not empty. */ if(empty($linkedProductsCount) and !isset($_POST['newProduct'])) { @@ -1369,30 +1349,6 @@ class projectModel extends model ->remove('products,branch,plans,delta,future,contactListMenu,teamMembers') ->get(); - if($project->parent) - { - $program = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($project->parent)->fetch(); - - if($program) - { - /* Child project begin cannot less than parent. */ - if(!empty($project->name) and $project->begin < $program->begin) dao::$errors['begin'] = sprintf($this->lang->project->beginGreateChild, $program->begin); - - /* When parent set end then child project end cannot greater than parent. */ - if(!empty($project->name) and $program->end != '0000-00-00' and $project->end > $program->end) dao::$errors['end'] = sprintf($this->lang->project->endLetterChild, $program->end); - - if(dao::isError()) return false; - } - - /* The budget of a child project cannot beyond the remaining budget of the parent project. */ - $project->budgetUnit = $program->budgetUnit; - if($project->budget != 0 and $program->budget != 0) - { - $availableBudget = $this->loadModel('program')->getBudgetLeft($program); - if($project->budget > $availableBudget + $oldProject->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; - } - } - $executionsCount = $this->dao->select('COUNT(*) as count')->from(TABLE_PROJECT) ->where('project')->eq($project->id) ->andWhere('deleted')->eq('0') @@ -1553,25 +1509,6 @@ class projectModel extends model $projects[$projectID]->lastEditedDate = helper::now(); if(isset($data->codes)) $projects[$projectID]->code = $projectCode; - if($projects[$projectID]->parent) - { - $parentProject = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($projects[$projectID]->parent)->fetch(); - - if($parentProject) - { - /* Child project begin cannot less than parent. */ - if(!empty($projects[$projectID]->name) and $projects[$projectID]->begin < $parentProject->begin) - { - dao::$errors[] = "ID {$projects[$projectID]->id}" . sprintf($this->lang->project->beginGreateChild, $parentProject->begin) . "\n"; - } - - /* When parent set end then child project end cannot greater than parent. */ - if(!empty($projects[$projectID]->name) and $parentProject->end != '0000-00-00' and $projects[$projectID]->end > $parentProject->end) - { - dao::$errors[] = "ID {$projects[$projectID]->id}" . sprintf($this->lang->project->endLetterChild, $parentProject->end) . "\n"; - } - } - } foreach($extendFields as $extendField) { From 626ab2ccee4216b60c70d0c0ad111f6e37610019 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 02:41:23 +0000 Subject: [PATCH 02/26] * Finish task #62836 ~ #62849. --- module/project/model.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/project/model.php b/module/project/model.php index 42c99b0993..93b1965792 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1106,6 +1106,8 @@ class projectModel extends model $program = new stdClass(); if($project->parent) { + $program = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($project->parent)->fetch(); + /* Judge products not empty. */ if(empty($linkedProductsCount) and !isset($_POST['newProduct'])) { From 8486aba922f2605a3c1593cf868801a8edc01b16 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 05:51:49 +0000 Subject: [PATCH 03/26] * Finish task #62852. --- module/program/css/common.css | 1 + module/program/css/create.css | 4 +++- module/program/js/common.js | 13 +++++++++++++ module/program/lang/de.php | 1 + module/program/lang/en.php | 1 + module/program/lang/fr.php | 1 + module/program/lang/zh-cn.php | 1 + module/program/view/create.html.php | 7 ++++--- module/program/view/edit.html.php | 3 ++- 9 files changed, 27 insertions(+), 5 deletions(-) diff --git a/module/program/css/common.css b/module/program/css/common.css index c026c35fbd..c7dfdc44b7 100644 --- a/module/program/css/common.css +++ b/module/program/css/common.css @@ -1,2 +1,3 @@ .future {display: inline-block;} .c-number {overflow: hidden; text-align: right !important; text-overflow: ellipsis; white-space: nowrap;} +.text-remind {color: #ffa34d;} diff --git a/module/program/css/create.css b/module/program/css/create.css index 12a38dc6f4..6ad3033166 100644 --- a/module/program/css/create.css +++ b/module/program/css/create.css @@ -1,4 +1,6 @@ #budget {border-right: 0px;} #budgetUnit {border-left: 0px;} -#dateRange {vertical-align: top; padding-top: 13px;} +#dateRange, .undetermined {vertical-align: top !important; padding-top: 13px !important;} #endList {vertical-align: top; padding-top: 13px;} +[lang^=en] #endList {vertical-align: top; padding-top: 20px;} +#dataform th {vertical-align: top; padding-top: 13px;} diff --git a/module/program/js/common.js b/module/program/js/common.js index 67a2acfcb0..9130a39824 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -312,3 +312,16 @@ function setBudgetTipsAndAclList(programID) $('.aclBox').html($('#PGMAcl').html()); } } + +/** + * Append prompt when the budget exceeds the parent project set. + * + * @param int $budgetLeft + * @access public + * @return void + */ +function budgetOverrunTips(budgetLeft) +{ + var budget = $('#budget').val(); + budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden'); +} diff --git a/module/program/lang/de.php b/module/program/lang/de.php index 6505b7fb48..9fbf1bf1a4 100644 --- a/module/program/lang/de.php +++ b/module/program/lang/de.php @@ -113,6 +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->endList[31] = 'One month'; $lang->program->endList[93] = 'Trimester'; diff --git a/module/program/lang/en.php b/module/program/lang/en.php index 3e390eff22..4d896f99de 100644 --- a/module/program/lang/en.php +++ b/module/program/lang/en.php @@ -113,6 +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->endList[31] = 'One month'; $lang->program->endList[93] = 'Trimester'; diff --git a/module/program/lang/fr.php b/module/program/lang/fr.php index ed25ecbfb4..7b2e874c71 100644 --- a/module/program/lang/fr.php +++ b/module/program/lang/fr.php @@ -113,6 +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->endList[31] = 'One month'; $lang->program->endList[93] = 'Trimester'; diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index 8189008a46..cb9dc6e7b6 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -113,6 +113,7 @@ $lang->program->readjustTime = '重新调整项目集起止时间'; $lang->program->accessDenied = '你无权访问该项目集'; $lang->program->beyondParentBudget = '已超出所属项目集的剩余预算'; $lang->program->checkedProjects = '已选择%s项'; +$lang->program->budgetOverrun = '项目集的预算已超出父项目集的剩余预算。'; $lang->program->endList[31] = '一个月'; $lang->program->endList[93] = '三个月'; diff --git a/module/program/view/create.html.php b/module/program/view/create.html.php index c26d07fb7d..77a850871b 100644 --- a/module/program/view/create.html.php +++ b/module/program/view/create.html.php @@ -70,8 +70,8 @@ program->budget;?>
- program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $budgetLeft : '';?> - + program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $budgetLeft . '"' : '';?> + budgetUnit);?> @@ -79,8 +79,9 @@ project->defaultCurrency, "class='form-control'");?>
+ - +
diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index 993f2a3ee3..e79c16b487 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -50,7 +50,7 @@
budget != 0) ? 'placeholder=' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> - budget != 0 ? $program->budget : '', "class='form-control' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?> + budget != 0 ? $program->budget : '', "class='form-control' onchange='budgetOverrunTips($availableBudget)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> @@ -60,6 +60,7 @@
+
From 72b6dd9af089eed2bb4ca16f34785b02b08fcd39 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 06:05:20 +0000 Subject: [PATCH 04/26] * Finish task #62852. --- module/program/css/edit.css | 3 ++- module/program/view/edit.html.php | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/module/program/css/edit.css b/module/program/css/edit.css index 12a38dc6f4..7bf6f49d91 100644 --- a/module/program/css/edit.css +++ b/module/program/css/edit.css @@ -1,4 +1,5 @@ #budget {border-right: 0px;} #budgetUnit {border-left: 0px;} -#dateRange {vertical-align: top; padding-top: 13px;} +#dateRange, .undetermined {vertical-align: top !important; padding-top: 13px !important;} #endList {vertical-align: top; padding-top: 13px;} +#dataform th {vertical-align: top; padding-top: 13px;} diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index e79c16b487..21c51d951a 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -49,7 +49,7 @@ program->budget;?>
- budget != 0) ? 'placeholder=' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> + 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);?> budgetUnit);?> @@ -62,7 +62,7 @@
- +
budget == 0) echo 'checked';?> /> From 03d68d05ffe825d55b405fdce826be8f72ba66bf Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 06:10:13 +0000 Subject: [PATCH 05/26] * Finish task #62852. --- module/program/view/edit.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index 21c51d951a..ce6c9635b2 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -49,7 +49,7 @@ program->budget;?>
- budget != 0) ? 'placeholder="' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"': '';?> + 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);?> budgetUnit);?> From 364a5009f4caf216af843da4a7ad0ca79b4e9c6c Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 07:21:03 +0000 Subject: [PATCH 06/26] * Finish task #62850. --- module/project/css/common.css | 1 + module/project/css/create.css | 3 +++ module/project/css/edit.css | 4 +++- module/project/js/common.js | 6 ++++++ module/project/lang/de.php | 1 + module/project/lang/en.php | 1 + module/project/lang/fr.php | 1 + module/project/lang/zh-cn.php | 1 + module/project/model.php | 2 +- module/project/view/create.html.php | 9 +++++---- module/project/view/edit.html.php | 9 +++++---- 11 files changed, 28 insertions(+), 10 deletions(-) diff --git a/module/project/css/common.css b/module/project/css/common.css index c026c35fbd..c7dfdc44b7 100644 --- a/module/project/css/common.css +++ b/module/project/css/common.css @@ -1,2 +1,3 @@ .future {display: inline-block;} .c-number {overflow: hidden; text-align: right !important; text-overflow: ellipsis; white-space: nowrap;} +.text-remind {color: #ffa34d;} diff --git a/module/project/css/create.css b/module/project/css/create.css index 0232e1b8fa..b92dc698b0 100644 --- a/module/project/css/create.css +++ b/module/project/css/create.css @@ -21,3 +21,6 @@ #productsBox .input-group-addon > div {display: inline-block !important;} #plansBox .row {display: inline-table; width: 102%;} #plansBox .col-sm-4 {float: none; display: inline-block; padding-right: 5px;} +#dataform th {vertical-align: top; padding-top: 13px;} +.undetermined {vertical-align: top !important; padding-top: 13px !important;} +#linkPlan {padding-top: 25px !important;} diff --git a/module/project/css/edit.css b/module/project/css/edit.css index 3a6df893c9..aed960e5f9 100644 --- a/module/project/css/edit.css +++ b/module/project/css/edit.css @@ -2,5 +2,7 @@ #budgetUnit {border-left: 0px;} #plansBox .row {display: inline-table; width: 102%;} #plansBox .col-sm-4 {float: none; display: inline-block;} -#dateRange {vertical-align: top; padding-top: 13px;} +#dateRange, .undetermined {vertical-align: top !important; padding-top: 13px !important;} #endList {vertical-align: top; padding-top: 13px;} +#dataform th {vertical-align: top; padding-top: 13px;} +#linkPlan {padding-top: 25px !important;} diff --git a/module/project/js/common.js b/module/project/js/common.js index 2e0c533dc8..cab744e7c9 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -324,6 +324,12 @@ function setBudgetTipsAndAclList(programID) } } +function budgetOverrunTips(budgetLeft) +{ + var budget = $('#budget').val(); + budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden'); +} + $(document).on('change', "#plansBox select[name^='plans']", function() { var $plan = $(this); diff --git a/module/project/lang/de.php b/module/project/lang/de.php index deab788c45..a512e8b387 100644 --- a/module/project/lang/de.php +++ b/module/project/lang/de.php @@ -196,6 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = 'There is no R&D stage under this project, or you do not have access permissions. The creation of builds is not supported at the moment.'; +$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set.'; $lang->project->tenThousand = ''; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 6330f8cc9a..15e35e5f7d 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -196,6 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = 'There is no R&D stage under this project, or you do not have access permissions. The creation of builds is not supported at the moment.'; +$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set.'; $lang->project->tenThousand = 'Ten Thousand'; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/fr.php b/module/project/lang/fr.php index 1be54e768a..56a42d58d2 100644 --- a/module/project/lang/fr.php +++ b/module/project/lang/fr.php @@ -196,6 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = "Il n'y a pas de phase R&D dans ce projet, ou vous n'avez pas la permission d'accès. La version ne peut pas être créée pour le moment."; +$lang->project->budgetOverrun = 'Le budget du projet a dépassé le budget restant de l\'ensemble de projets parent.'; $lang->project->tenThousand = ''; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 2a4bc0aeb5..8bcad8f821 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -196,6 +196,7 @@ $lang->project->unlinkExecutionMember = "该用户参与了%s%s%s个{$lang->exe $lang->project->unlinkExecutionMembers = "移除的团队成员还参与了项目下的执行,是否同步从执行团队中移除?"; $lang->project->productTip = '点击新建产品后,项目将不会关联已选中的产品。'; $lang->project->noDevStage = '该项目下没有研发类型的阶段,或者您没有权限访问,暂时不支持创建版本。'; +$lang->project->budgetOverrun = '项目的预算已超出父项目集的剩余预算。'; $lang->project->tenThousand = '万'; $lang->project->hundredMillion = '亿'; diff --git a/module/project/model.php b/module/project/model.php index 93b1965792..0c727086d1 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1111,7 +1111,7 @@ class projectModel extends model /* Judge products not empty. */ if(empty($linkedProductsCount) and !isset($_POST['newProduct'])) { - dao::$errors[] = $this->lang->project->productNotEmpty; + dao::$errors['products0_chosen'] = $this->lang->project->productNotEmpty; return false; } } diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index 4866641897..bcfef8c556 100755 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -69,8 +69,8 @@ project->budget;?>
- budget != 0) ? 'placeholder=' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> - + budget != 0) ? 'placeholder="' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?> + budgetUnit);?> @@ -78,8 +78,9 @@ project->defaultCurrency, "class='form-control'");?>
+ - +
@@ -145,7 +146,7 @@ - execution->linkPlan;?> + execution->linkPlan;?>
diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index eb68ff2970..fa51624d1a 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -75,8 +75,8 @@ project->budget;?>
- budget != 0) ? 'placeholder=' . $lang->project->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> - budget != 0 ? $project->budget : '', "class='form-control' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?> + budget != 0) ? 'placeholder="' . $lang->project->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?> + budget != 0 ? $project->budget : '', "class='form-control' onchange='budgetOverrunTips($availableBudget)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> @@ -84,8 +84,9 @@ budgetUnit, "class='form-control'");?>
+ - +
budget == 0) echo 'checked';?> /> @@ -153,7 +154,7 @@ - execution->linkPlan;?> + execution->linkPlan;?>
From 2b3121cd214f9cd40a6dd150f799a2c27c8f37e3 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 07:26:14 +0000 Subject: [PATCH 07/26] * Finish task #62850. --- module/project/js/common.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/module/project/js/common.js b/module/project/js/common.js index cab744e7c9..64fa6b9e62 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -324,6 +324,13 @@ function setBudgetTipsAndAclList(programID) } } +/** + * Append tips when the budget exceeds the parent project set. + * + * @param int $budgetLeft + * @access public + * @return void + */ function budgetOverrunTips(budgetLeft) { var budget = $('#budget').val(); From 69dd615244e0d7236e467cd3f4d2f5d91f3182db Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 08:39:29 +0000 Subject: [PATCH 08/26] * Finish task #62852. --- module/program/css/create.css | 2 +- module/program/css/edit.css | 2 +- module/program/js/common.js | 5 +++-- module/program/view/create.html.php | 5 +++-- module/program/view/edit.html.php | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/module/program/css/create.css b/module/program/css/create.css index 6ad3033166..a516ac8d96 100644 --- a/module/program/css/create.css +++ b/module/program/css/create.css @@ -1,6 +1,6 @@ #budget {border-right: 0px;} #budgetUnit {border-left: 0px;} -#dateRange, .undetermined {vertical-align: top !important; padding-top: 13px !important;} +#dateRange, .futureBox {vertical-align: top !important; padding-top: 13px !important;} #endList {vertical-align: top; padding-top: 13px;} [lang^=en] #endList {vertical-align: top; padding-top: 20px;} #dataform th {vertical-align: top; padding-top: 13px;} diff --git a/module/program/css/edit.css b/module/program/css/edit.css index 7bf6f49d91..a2a39bdd0a 100644 --- a/module/program/css/edit.css +++ b/module/program/css/edit.css @@ -1,5 +1,5 @@ #budget {border-right: 0px;} #budgetUnit {border-left: 0px;} -#dateRange, .undetermined {vertical-align: top !important; padding-top: 13px !important;} +#dateRange, .futureBox {vertical-align: top !important; padding-top: 13px !important;} #endList {vertical-align: top; padding-top: 13px;} #dataform th {vertical-align: top; padding-top: 13px;} diff --git a/module/program/js/common.js b/module/program/js/common.js index 9130a39824..de534ca2d3 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -276,6 +276,7 @@ $(function() if($(this).prop('checked')) { $('#budget').val('').attr('disabled', 'disabled'); + budgetOverrunTips(budgetBalance); } else { @@ -322,6 +323,6 @@ function setBudgetTipsAndAclList(programID) */ function budgetOverrunTips(budgetLeft) { - var budget = $('#budget').val(); - budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden'); + var budget = $('#budget').val(); + budget != 0 && budget !== null && budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden'); } diff --git a/module/program/view/create.html.php b/module/program/view/create.html.php index 77a850871b..77eb6fd514 100644 --- a/module/program/view/create.html.php +++ b/module/program/view/create.html.php @@ -39,6 +39,7 @@ program->parentBudget);?> project->future);?> + program->subAclList : $lang->program->aclList;?> program->create->requiredFields;?>
@@ -81,9 +82,9 @@
- +
- +
diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index ce6c9635b2..3c7eda8c83 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -62,7 +62,7 @@
- +
budget == 0) echo 'checked';?> /> From 6a784fdfdafd7b81a36006cbd7a0a8d0da59328a Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 08:50:16 +0000 Subject: [PATCH 09/26] * Finish task #62850. --- module/project/css/create.css | 2 +- module/project/css/edit.css | 2 +- module/project/js/common.js | 3 ++- module/project/view/create.html.php | 3 ++- module/project/view/edit.html.php | 3 ++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/module/project/css/create.css b/module/project/css/create.css index b92dc698b0..8e58ca4a64 100644 --- a/module/project/css/create.css +++ b/module/project/css/create.css @@ -22,5 +22,5 @@ #plansBox .row {display: inline-table; width: 102%;} #plansBox .col-sm-4 {float: none; display: inline-block; padding-right: 5px;} #dataform th {vertical-align: top; padding-top: 13px;} -.undetermined {vertical-align: top !important; padding-top: 13px !important;} +.futureBox {vertical-align: top !important; padding-top: 13px !important;} #linkPlan {padding-top: 25px !important;} diff --git a/module/project/css/edit.css b/module/project/css/edit.css index aed960e5f9..50ad401e0b 100644 --- a/module/project/css/edit.css +++ b/module/project/css/edit.css @@ -2,7 +2,7 @@ #budgetUnit {border-left: 0px;} #plansBox .row {display: inline-table; width: 102%;} #plansBox .col-sm-4 {float: none; display: inline-block;} -#dateRange, .undetermined {vertical-align: top !important; padding-top: 13px !important;} +#dateRange, .futureBox {vertical-align: top !important; padding-top: 13px !important;} #endList {vertical-align: top; padding-top: 13px;} #dataform th {vertical-align: top; padding-top: 13px;} #linkPlan {padding-top: 25px !important;} diff --git a/module/project/js/common.js b/module/project/js/common.js index 64fa6b9e62..383fc38f5f 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -287,6 +287,7 @@ $(function() if($(this).prop('checked')) { $('#budget').val('').attr('disabled', 'disabled'); + budgetOverrunTips(budgetBalance); } else { @@ -334,7 +335,7 @@ function setBudgetTipsAndAclList(programID) function budgetOverrunTips(budgetLeft) { var budget = $('#budget').val(); - budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden'); + budget != 0 && budget !== null && budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden'); } $(document).on('change', "#plansBox select[name^='plans']", function() diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index bcfef8c556..3853aae737 100755 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -26,6 +26,7 @@ product->name);?> project->manageProducts);?> + project->create->requiredFields;?>
@@ -80,7 +81,7 @@
- +
diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index fa51624d1a..d2fef5d07f 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -30,6 +30,7 @@ project->edit->requiredFields;?> budget);?> +
@@ -86,7 +87,7 @@
- +
budget == 0) echo 'checked';?> /> From 73ec96dc8fcf09f9ed8a652f543a384619bb7f50 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 09:32:21 +0000 Subject: [PATCH 10/26] * Finish task #62850. --- module/project/lang/de.php | 2 +- module/project/lang/en.php | 2 +- module/project/lang/fr.php | 2 +- module/project/lang/zh-cn.php | 2 +- module/project/view/create.html.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/module/project/lang/de.php b/module/project/lang/de.php index a512e8b387..6de2be5c66 100644 --- a/module/project/lang/de.php +++ b/module/project/lang/de.php @@ -196,7 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = 'There is no R&D stage under this project, or you do not have access permissions. The creation of builds is not supported at the moment.'; -$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set.'; +$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set:'; $lang->project->tenThousand = ''; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 15e35e5f7d..b047d02a8a 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -196,7 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = 'There is no R&D stage under this project, or you do not have access permissions. The creation of builds is not supported at the moment.'; -$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set.'; +$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set:'; $lang->project->tenThousand = 'Ten Thousand'; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/fr.php b/module/project/lang/fr.php index 56a42d58d2..7198d47db3 100644 --- a/module/project/lang/fr.php +++ b/module/project/lang/fr.php @@ -196,7 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = "Il n'y a pas de phase R&D dans ce projet, ou vous n'avez pas la permission d'accès. La version ne peut pas être créée pour le moment."; -$lang->project->budgetOverrun = 'Le budget du projet a dépassé le budget restant de l\'ensemble de projets parent.'; +$lang->project->budgetOverrun = 'Le budget du projet a dépassé le budget restant de l\'ensemble de projets parent:'; $lang->project->tenThousand = ''; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 8bcad8f821..f151f43e1e 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -196,7 +196,7 @@ $lang->project->unlinkExecutionMember = "该用户参与了%s%s%s个{$lang->exe $lang->project->unlinkExecutionMembers = "移除的团队成员还参与了项目下的执行,是否同步从执行团队中移除?"; $lang->project->productTip = '点击新建产品后,项目将不会关联已选中的产品。'; $lang->project->noDevStage = '该项目下没有研发类型的阶段,或者您没有权限访问,暂时不支持创建版本。'; -$lang->project->budgetOverrun = '项目的预算已超出父项目集的剩余预算。'; +$lang->project->budgetOverrun = '项目的预算已超出父项目集的剩余预算:'; $lang->project->tenThousand = '万'; $lang->project->hundredMillion = '亿'; diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index 3853aae737..718923ce91 100755 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -79,7 +79,7 @@ project->defaultCurrency, "class='form-control'");?>
- +
From 535922b47cc4e4805d7a86173d8692c801740c30 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 09:36:54 +0000 Subject: [PATCH 11/26] * Finish task #62852. --- module/program/lang/de.php | 2 +- module/program/lang/en.php | 2 +- module/program/lang/fr.php | 2 +- module/program/lang/zh-cn.php | 2 +- module/program/view/create.html.php | 2 +- module/program/view/edit.html.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/program/lang/de.php b/module/program/lang/de.php index 9fbf1bf1a4..283436ef71 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 budget of the project set has exceeded the remaining budget of the parent project set:'; $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 4d896f99de..89fd9da676 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 budget of the project set has exceeded the remaining budget of the parent project set:'; $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 7b2e874c71..1e3a1e4140 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 de l\'ensemble de projets a dépassé le budget restant de l\'ensemble de projets parent:'; $lang->program->endList[31] = 'One month'; $lang->program->endList[93] = 'Trimester'; diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index cb9dc6e7b6..844b2c3a48 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -113,7 +113,7 @@ $lang->program->readjustTime = '重新调整项目集起止时间'; $lang->program->accessDenied = '你无权访问该项目集'; $lang->program->beyondParentBudget = '已超出所属项目集的剩余预算'; $lang->program->checkedProjects = '已选择%s项'; -$lang->program->budgetOverrun = '项目集的预算已超出父项目集的剩余预算。'; +$lang->program->budgetOverrun = '项目集的预算已超出父项目集的剩余预算:'; $lang->program->endList[31] = '一个月'; $lang->program->endList[93] = '三个月'; diff --git a/module/program/view/create.html.php b/module/program/view/create.html.php index 77eb6fd514..52333fee4f 100644 --- a/module/program/view/create.html.php +++ b/module/program/view/create.html.php @@ -80,7 +80,7 @@ project->defaultCurrency, "class='form-control'");?>
- +
diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index 3c7eda8c83..c4799f3feb 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -60,7 +60,7 @@
- +
From 18504478db3f64bd2830a8dd042dc17b4d3ba1fc Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Tue, 2 Aug 2022 09:39:55 +0000 Subject: [PATCH 12/26] * Finish task #62850. --- module/project/view/edit.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index d2fef5d07f..60867471ca 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -85,7 +85,7 @@ budgetUnit, "class='form-control'");?>
- +
From b139f8da6809db4cd86093b3da870b623e13b92c Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Wed, 3 Aug 2022 01:34:09 +0000 Subject: [PATCH 13/26] * Finish task #62852. --- module/program/view/create.html.php | 2 +- module/program/view/edit.html.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/module/program/view/create.html.php b/module/program/view/create.html.php index 52333fee4f..d5bbffbca5 100644 --- a/module/program/view/create.html.php +++ b/module/program/view/create.html.php @@ -84,7 +84,7 @@
- +
diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index c4799f3feb..6d63cfcb0d 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -23,6 +23,7 @@ error->notempty, $lang->program->exchangeRate));?> error->float, $lang->program->exchangeRate));?> program->exRateNotNegative);?> + parent ? $lang->program->subAclList : $lang->program->aclList;?> program->edit->requiredFields;?>
From 584793163ffd3c4cee71886b14d8d86d837390b8 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Wed, 3 Aug 2022 07:31:07 +0000 Subject: [PATCH 14/26] * 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 @@
- + +
From 545f58f9441776388d39f350ab03ec84a113ac1c Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Wed, 3 Aug 2022 09:25:08 +0000 Subject: [PATCH 15/26] * Finish task #62850. --- module/project/control.php | 34 ++++++++++++++++++++++ module/project/js/common.js | 45 ++++++++++++++++++++--------- module/project/view/create.html.php | 6 ++-- module/project/view/edit.html.php | 10 ++----- 4 files changed, 70 insertions(+), 25 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index ea1903944f..9bb3e3111f 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -219,6 +219,40 @@ class project extends control echo json_encode($productsWithBranch); } + /** + * Ajax get available budget. + * + * @param int $programID + * @param int $parentProgramID + * @param int $budget + * @access public + * @return void + */ + public function ajaxGetAvailableBudget($projectID, $parentProgramID, $budget) + { + if(!empty($projectID)) + { + $project = $this->project->getByID($projectID); + $parentProgram = $this->loadModel('program')->getByID($parentProgramID); + $budgetLeft = $this->program->getBudgetLeft($parentProgram); + $availableBudget = $project->parent == $parentProgramID ? $budgetLeft + $project->budget : $budgetLeft; + } + else + { + $parentProgram = $this->loadModel('program')->getByID($parentProgramID); + $availableBudget = $this->program->getBudgetLeft($parentProgram); + } + + $tip = ''; + if($budget != 0 && $budget !== null && $budget > $availableBudget) $tip = "" . $this->lang->project->budgetOverrun . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . ""; + + $placeholder = ''; + if($parentProgram and $parentProgram->budget != 0) $placeholder = $this->lang->project->parentBudget . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget; + + $tipList = array('tip' => $tip, 'placeholder' => $placeholder); + echo json_encode($tipList); + } + /** * Project index view. * diff --git a/module/project/js/common.js b/module/project/js/common.js index 383fc38f5f..74048a3dbe 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -287,7 +287,7 @@ $(function() if($(this).prop('checked')) { $('#budget').val('').attr('disabled', 'disabled'); - budgetOverrunTips(budgetBalance); + if($('#projectBudget').length > 0) $('#projectBudget').remove(); } else { @@ -325,19 +325,6 @@ function setBudgetTipsAndAclList(programID) } } -/** - * Append tips when the budget exceeds the parent project set. - * - * @param int $budgetLeft - * @access public - * @return void - */ -function budgetOverrunTips(budgetLeft) -{ - var budget = $('#budget').val(); - budget != 0 && budget !== null && budget > budgetLeft ? $('#programBudget').removeClass('hidden') : $('#programBudget').addClass('hidden'); -} - $(document).on('change', "#plansBox select[name^='plans']", function() { var $plan = $(this); @@ -357,3 +344,33 @@ $(document).on('change', "#plansBox select[name^='plans']", function() } }); }); + +/** + * Append prompt when the budget exceeds the parent project set. + * + * @param int $projectID + * @access public + * @return void + */ +function budgetOverrunTips(projectID = 0) +{ + var parentProgramID = $('#parent').val(); + var budget = $('#budget').val(); + + if(parentProgramID == 0) + { + if($('#projectBudget').length > 0) $('#projectBudget').remove(); + return false; + } + + $.get(createLink('project', 'ajaxGetAvailableBudget', 'projectID=' + projectID + "&parentProgramID=" + parentProgramID + "&budget=" + budget), function(data) + { + var data = JSON.parse(data); + + if($('#projectBudget').length > 0) $('#projectBudget').remove(); + $('#budgetBox').after(data.tip); + + if($('#budget').attr('placeholder')) $('#budget').removeAttr('placeholder') + $('#budget').attr('placeholder', data.placeholder); + }); +} diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index 718923ce91..0308fd62ab 100755 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -26,7 +26,6 @@ product->name);?> project->manageProducts);?> - project->create->requiredFields;?>
@@ -69,9 +68,9 @@ project->budget;?> -
+
budget != 0) ? 'placeholder="' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?> - + budgetUnit);?> @@ -79,7 +78,6 @@ project->defaultCurrency, "class='form-control'");?>
-
diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 60867471ca..1c38e2f570 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -29,8 +29,6 @@ parent ? $lang->project->subAclList : $lang->project->aclList;?> project->edit->requiredFields;?> -budget);?> -
@@ -55,7 +53,7 @@ $programList = array($project->parent => $program->name); } ?> - parent, "class='form-control chosen' $attr");?> + parent, "class='form-control chosen' onchange='budgetOverrunTips($project->id)' $attr");?> @@ -75,9 +73,8 @@ project->budget;?> -
- budget != 0) ? 'placeholder="' . $lang->project->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?> - budget != 0 ? $project->budget : '', "class='form-control' onchange='budgetOverrunTips($availableBudget)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?> +
+ budget != 0 ? $project->budget : '', "class='form-control' onchange='budgetOverrunTips($project->id)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : ''));?> budgetUnit);?> @@ -85,7 +82,6 @@ budgetUnit, "class='form-control'");?>
-
From 339ccb6a2405030f00024e6af2e6a5a264fcaca6 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 00:06:16 +0000 Subject: [PATCH 16/26] * Finish task #62850. --- module/project/lang/de.php | 2 +- module/project/lang/en.php | 2 +- module/project/lang/fr.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/module/project/lang/de.php b/module/project/lang/de.php index 6de2be5c66..216c5c27b4 100644 --- a/module/project/lang/de.php +++ b/module/project/lang/de.php @@ -196,7 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = 'There is no R&D stage under this project, or you do not have access permissions. The creation of builds is not supported at the moment.'; -$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set:'; +$lang->project->budgetOverrun = "The project's budget has exceeded the remaining budget of the parent program:"; $lang->project->tenThousand = ''; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/en.php b/module/project/lang/en.php index b047d02a8a..82863f4eef 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -196,7 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = 'There is no R&D stage under this project, or you do not have access permissions. The creation of builds is not supported at the moment.'; -$lang->project->budgetOverrun = 'The budget of the project has exceeded the remaining budget of the parent project set:'; +$lang->project->budgetOverrun = "The project's budget has exceeded the remaining budget of the parent program:"; $lang->project->tenThousand = 'Ten Thousand'; $lang->project->hundredMillion = 'Hundred Million'; diff --git a/module/project/lang/fr.php b/module/project/lang/fr.php index 7198d47db3..867104938c 100644 --- a/module/project/lang/fr.php +++ b/module/project/lang/fr.php @@ -196,7 +196,7 @@ $lang->project->unlinkExecutionMember = "The user participated in %s executions $lang->project->unlinkExecutionMembers = "The team members you are removing are also in the execution team of this project. Do you want to remove them from the execution team too?"; $lang->project->productTip = 'After clicking New Product, the project will not be linked to the selected product.'; $lang->project->noDevStage = "Il n'y a pas de phase R&D dans ce projet, ou vous n'avez pas la permission d'accès. La version ne peut pas être créée pour le moment."; -$lang->project->budgetOverrun = 'Le budget du projet a dépassé le budget restant de l\'ensemble de projets parent:'; +$lang->project->budgetOverrun = "Le budget du projet a dépassé le budget restant du programme parent:"; $lang->project->tenThousand = ''; $lang->project->hundredMillion = 'Hundred Million'; From 9f26275965b3efc287f6a373b2e7229aeb696bd9 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 01:27:07 +0000 Subject: [PATCH 17/26] * Finish task #62850. --- module/project/control.php | 12 ++++++------ module/project/js/common.js | 12 ++++++------ module/project/js/edit.js | 1 + module/project/model.php | 2 +- module/project/view/edit.html.php | 2 +- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index 9bb3e3111f..c04608cf83 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -223,28 +223,28 @@ class project extends control * Ajax get available budget. * * @param int $programID - * @param int $parentProgramID + * @param int $selectedProgramID * @param int $budget * @access public * @return void */ - public function ajaxGetAvailableBudget($projectID, $parentProgramID, $budget) + public function ajaxGetAvailableBudget($projectID, $selectedProgramID, $budget) { if(!empty($projectID)) { $project = $this->project->getByID($projectID); - $parentProgram = $this->loadModel('program')->getByID($parentProgramID); + $parentProgram = $this->loadModel('program')->getByID($selectedProgramID); $budgetLeft = $this->program->getBudgetLeft($parentProgram); - $availableBudget = $project->parent == $parentProgramID ? $budgetLeft + $project->budget : $budgetLeft; + $availableBudget = $project->parent == $selectedProgramID ? $budgetLeft + $project->budget : $budgetLeft; } else { - $parentProgram = $this->loadModel('program')->getByID($parentProgramID); + $parentProgram = $this->loadModel('program')->getByID($selectedProgramID); $availableBudget = $this->program->getBudgetLeft($parentProgram); } $tip = ''; - if($budget != 0 && $budget !== null && $budget > $availableBudget) $tip = "" . $this->lang->project->budgetOverrun . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . ""; + if($budget != 0 && $budget !== null && $budget > $availableBudget) $tip = "" . $this->lang->project->budgetOverrun . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . ""; $placeholder = ''; if($parentProgram and $parentProgram->budget != 0) $placeholder = $this->lang->project->parentBudget . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget; diff --git a/module/project/js/common.js b/module/project/js/common.js index 74048a3dbe..aaceba2377 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -287,7 +287,7 @@ $(function() if($(this).prop('checked')) { $('#budget').val('').attr('disabled', 'disabled'); - if($('#projectBudget').length > 0) $('#projectBudget').remove(); + if($('#beyondBudgetTip').length > 0) $('#beyondBudgetTip').remove(); } else { @@ -354,20 +354,20 @@ $(document).on('change', "#plansBox select[name^='plans']", function() */ function budgetOverrunTips(projectID = 0) { - var parentProgramID = $('#parent').val(); + var selectedProgramID = $('#parent').val(); var budget = $('#budget').val(); - if(parentProgramID == 0) + if(selectedProgramID == 0) { - if($('#projectBudget').length > 0) $('#projectBudget').remove(); + if($('#beyondBudgetTip').length > 0) $('#beyondBudgetTip').remove(); return false; } - $.get(createLink('project', 'ajaxGetAvailableBudget', 'projectID=' + projectID + "&parentProgramID=" + parentProgramID + "&budget=" + budget), function(data) + $.get(createLink('project', 'ajaxGetAvailableBudget', 'projectID=' + projectID + "&selectedProgramID=" + selectedProgramID + "&budget=" + budget), function(data) { var data = JSON.parse(data); - if($('#projectBudget').length > 0) $('#projectBudget').remove(); + if($('#beyondBudgetTip').length > 0) $('#beyondBudgetTip').remove(); $('#budgetBox').after(data.tip); if($('#budget').attr('placeholder')) $('#budget').removeAttr('placeholder') diff --git a/module/project/js/edit.js b/module/project/js/edit.js index 7e391f405d..b00ab69b66 100644 --- a/module/project/js/edit.js +++ b/module/project/js/edit.js @@ -4,6 +4,7 @@ $(function() { var programID = $(this).val(); setAclList(programID); + budgetOverrunTips(projectID); /* Determine whether the project can change the project set. */ link = createLink('project', 'ajaxCheckProduct', 'programID=' + programID + '&projectID=' + projectID); diff --git a/module/project/model.php b/module/project/model.php index 0c727086d1..d37d371b7f 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1111,7 +1111,7 @@ class projectModel extends model /* Judge products not empty. */ if(empty($linkedProductsCount) and !isset($_POST['newProduct'])) { - dao::$errors['products0_chosen'] = $this->lang->project->productNotEmpty; + dao::$errors['products0'] = $this->lang->project->productNotEmpty; return false; } } diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 1c38e2f570..e181130a96 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -53,7 +53,7 @@ $programList = array($project->parent => $program->name); } ?> - parent, "class='form-control chosen' onchange='budgetOverrunTips($project->id)' $attr");?> + parent, "class='form-control chosen' $attr");?> From 461e3275db8a2c577214ead8a95b692b51c8846b Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 01:32:48 +0000 Subject: [PATCH 18/26] * Finish task #62850. --- module/project/control.php | 12 ++++++------ module/project/view/edit.html.php | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index c04608cf83..402ef3a3df 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -233,21 +233,21 @@ class project extends control if(!empty($projectID)) { $project = $this->project->getByID($projectID); - $parentProgram = $this->loadModel('program')->getByID($selectedProgramID); - $budgetLeft = $this->program->getBudgetLeft($parentProgram); + $selectedProgram = $this->loadModel('program')->getByID($selectedProgramID); + $budgetLeft = $this->program->getBudgetLeft($selectedProgram); $availableBudget = $project->parent == $selectedProgramID ? $budgetLeft + $project->budget : $budgetLeft; } else { - $parentProgram = $this->loadModel('program')->getByID($selectedProgramID); - $availableBudget = $this->program->getBudgetLeft($parentProgram); + $selectedProgram = $this->loadModel('program')->getByID($selectedProgramID); + $availableBudget = $this->program->getBudgetLeft($selectedProgram); } $tip = ''; - if($budget != 0 && $budget !== null && $budget > $availableBudget) $tip = "" . $this->lang->project->budgetOverrun . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . ""; + if($budget != 0 && $budget !== null && $budget > $availableBudget) $tip = "" . $this->lang->project->budgetOverrun . zget($this->lang->project->currencySymbol, $selectedProgram->budgetUnit) . $availableBudget . ""; $placeholder = ''; - if($parentProgram and $parentProgram->budget != 0) $placeholder = $this->lang->project->parentBudget . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget; + if($selectedProgram and $selectedProgram->budget != 0) $placeholder = $this->lang->project->parentBudget . zget($this->lang->project->currencySymbol, $selectedProgram->budgetUnit) . $availableBudget; $tipList = array('tip' => $tip, 'placeholder' => $placeholder); echo json_encode($tipList); diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index e181130a96..343dca65c6 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -29,6 +29,7 @@ parent ? $lang->project->subAclList : $lang->project->aclList;?> project->edit->requiredFields;?> +budget);?>
From 8bbac3b2fee2e5418946891d17b8e37a25668a13 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 01:45:10 +0000 Subject: [PATCH 19/26] * Finish task #62852. --- module/program/control.php | 16 ++++++++-------- module/program/js/common.js | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/module/program/control.php b/module/program/control.php index bec85c65c1..cadf110f5c 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -722,28 +722,28 @@ class program extends control * Ajax get available budget. * * @param int $programID - * @param int $parentProgramID + * @param int $selectedProgramID * @param int $budget * @access public * @return void */ - public function ajaxGetAvailableBudget($programID, $parentProgramID, $budget) + public function ajaxGetAvailableBudget($programID, $selectedProgramID, $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; + $selectedProgram = $this->program->getByID($selectedProgramID); + $budgetLeft = $this->program->getBudgetLeft($selectedProgram); + $availableBudget = $program->parent == $selectedProgramID ? $budgetLeft + $program->budget : $budgetLeft; } else { - $parentProgram = $this->program->getByID($parentProgramID); - $availableBudget = $this->program->getBudgetLeft($parentProgram); + $selectedProgram = $this->program->getByID($selectedProgramID); + $availableBudget = $this->program->getBudgetLeft($selectedProgram); } $tips = ''; - if($budget != 0 && $budget !== null && $budget > $availableBudget) $tips = "" . $this->lang->program->budgetOverrun . zget($this->lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . ""; + if($budget != 0 && $budget !== null && $budget > $availableBudget) $tips = "" . $this->lang->program->budgetOverrun . zget($this->lang->project->currencySymbol, $selectedProgram->budgetUnit) . $availableBudget . ""; echo json_encode($tips); } diff --git a/module/program/js/common.js b/module/program/js/common.js index 1711930d96..f921954967 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -324,19 +324,19 @@ function setBudgetTipsAndAclList(programID) */ function budgetOverrunTips(programID = 0) { - var parentProgramID = $('#parent').val(); - var budget = $('#budget').val(); - if(parentProgramID == 0) + var selectedProgramID = $('#parent').val(); + var budget = $('#budget').val(); + if(selectedProgramID == 0) { - if($('#programBudget').length > 0) $('#programBudget').remove(); + if($('#beyondBudgetTip').length > 0) $('#beyondBudgetTip').remove(); return false; } - $.get(createLink('program', 'ajaxGetAvailableBudget', 'programID=' + programID + "&parentProgramID=" + parentProgramID + "&budget=" + budget), function(data) + $.get(createLink('program', 'ajaxGetAvailableBudget', 'programID=' + programID + "&selectedProgramID=" + selectedProgramID + "&budget=" + budget), function(data) { var data = JSON.parse(data); - if($('#programBudget').length > 0) $('#programBudget').remove(); + if($('#beyondBudgetTip').length > 0) $('#beyondBudgetTip').remove(); $('#budgetBox').after(data); }); } From ace4fde7a8da043db009ab85a0466373d6b8e8e7 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 01:48:56 +0000 Subject: [PATCH 20/26] * Finish task #62850. --- module/project/js/common.js | 2 +- module/project/view/edit.html.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/module/project/js/common.js b/module/project/js/common.js index aaceba2377..a4d0bd995b 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -355,7 +355,7 @@ $(document).on('change', "#plansBox select[name^='plans']", function() function budgetOverrunTips(projectID = 0) { var selectedProgramID = $('#parent').val(); - var budget = $('#budget').val(); + var budget = $('#budget').val(); if(selectedProgramID == 0) { diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 343dca65c6..7ea8326e86 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -75,7 +75,8 @@ project->budget;?>
- budget != 0 ? $project->budget : '', "class='form-control' onchange='budgetOverrunTips($project->id)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : ''));?> + budget != 0) ? 'placeholder=' . $lang->project->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> + budget != 0 ? $project->budget : '', "class='form-control' onchange='budgetOverrunTips($project->id)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> From 84f3796c887e7ba0fe24e0004a26701eebc64108 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 01:53:21 +0000 Subject: [PATCH 21/26] * Finish task #62850. --- module/project/view/edit.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 7ea8326e86..a1f235ee35 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -75,7 +75,7 @@ project->budget;?>
- budget != 0) ? 'placeholder=' . $lang->project->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> + budget != 0) ? 'placeholder="' . $lang->project->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?> budget != 0 ? $project->budget : '', "class='form-control' onchange='budgetOverrunTips($project->id)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> From 0c29e898338f4034d2a74a0e013abb895c5a72a5 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 02:16:56 +0000 Subject: [PATCH 22/26] * Finish task #62852. --- module/program/js/common.js | 12 ++++++------ module/program/view/create.html.php | 1 - module/program/view/edit.html.php | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/module/program/js/common.js b/module/program/js/common.js index f921954967..aadb016264 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(); + if($('#beyondBudgetTip').length > 0) $('#beyondBudgetTip').remove(); } else { @@ -292,13 +292,13 @@ $(function() * @access public * @return void */ -function setBudgetTipsAndAclList(programID) +function setBudgetTipsAndAclList(parentProgramID) { - if(programID != 0) + if(parentProgramID != 0) { - $.get(createLink('program', 'ajaxGetBudgetLeft', "ProgramID=" + programID), function(budgetLeft) + $.get(createLink('program', 'ajaxGetBudgetLeft', "ProgramID=" + parentProgramID), function(budgetLeft) { - parentProgram = programList[programID]; + parentProgram = programList[parentProgramID]; programBudget = parentProgram.budget; PGMBudgetUnit = currencySymbol[parentProgram.budgetUnit]; @@ -312,7 +312,7 @@ function setBudgetTipsAndAclList(programID) $('#budget').removeAttr('placeholder'); $('.aclBox').html($('#PGMAcl').html()); } - budgetOverrunTips(editedProgramID); + budgetOverrunTips(typeof(programID) == 'undefind' ? 0 : programID); } /** diff --git a/module/program/view/create.html.php b/module/program/view/create.html.php index 34723e2e92..8ce706d1a5 100644 --- a/module/program/view/create.html.php +++ b/module/program/view/create.html.php @@ -39,7 +39,6 @@ program->parentBudget);?> project->future);?> - program->subAclList : $lang->program->aclList;?> program->create->requiredFields;?>
diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index 409d91da35..9ea2bb98b5 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -24,7 +24,7 @@ error->notempty, $lang->program->exchangeRate));?> error->float, $lang->program->exchangeRate));?> program->exRateNotNegative);?> -id);?> +id);?> parent ? $lang->program->subAclList : $lang->program->aclList;?> program->edit->requiredFields;?>
From f3c4e8b26bc570083b45c33f25e6b7b028937806 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 02:24:51 +0000 Subject: [PATCH 23/26] * Finish task #62852. --- module/program/js/common.js | 4 ++-- module/program/view/create.html.php | 1 - module/program/view/edit.html.php | 4 +--- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/module/program/js/common.js b/module/program/js/common.js index aadb016264..1222a520d3 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -318,11 +318,10 @@ function setBudgetTipsAndAclList(parentProgramID) /** * Append prompt when the budget exceeds the parent project set. * - * @param int $programID * @access public * @return void */ -function budgetOverrunTips(programID = 0) +function budgetOverrunTips() { var selectedProgramID = $('#parent').val(); var budget = $('#budget').val(); @@ -332,6 +331,7 @@ function budgetOverrunTips(programID = 0) return false; } + typeof(programID) == 'undefind' ? 0 : programID; $.get(createLink('program', 'ajaxGetAvailableBudget', 'programID=' + programID + "&selectedProgramID=" + selectedProgramID + "&budget=" + budget), function(data) { var data = JSON.parse(data); diff --git a/module/program/view/create.html.php b/module/program/view/create.html.php index 8ce706d1a5..4786eb3a1a 100644 --- a/module/program/view/create.html.php +++ b/module/program/view/create.html.php @@ -142,5 +142,4 @@ 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 9ea2bb98b5..292721baa9 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -52,7 +52,7 @@
budget != 0) ? 'placeholder="' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget . '"' : '';?> - budget != 0 ? $program->budget : '', "class='form-control' onchange='budgetOverrunTips($program->id)' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?> + budget != 0 ? $program->budget : '', "class='form-control' onchange='budgetOverrunTips()' maxlength='10' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> @@ -62,8 +62,6 @@
- -
From 7054e33346f54efa94822233746e026ecaf34575 Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 02:30:31 +0000 Subject: [PATCH 24/26] * Finish task #62852. --- module/program/js/common.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/module/program/js/common.js b/module/program/js/common.js index 1222a520d3..85506ba9aa 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -292,13 +292,13 @@ $(function() * @access public * @return void */ -function setBudgetTipsAndAclList(parentProgramID) +function setBudgetTipsAndAclList(parentID) { - if(parentProgramID != 0) + if(parentID != 0) { - $.get(createLink('program', 'ajaxGetBudgetLeft', "ProgramID=" + parentProgramID), function(budgetLeft) + $.get(createLink('program', 'ajaxGetBudgetLeft', "ProgramID=" + parentID), function(budgetLeft) { - parentProgram = programList[parentProgramID]; + parentProgram = programList[parentID]; programBudget = parentProgram.budget; PGMBudgetUnit = currencySymbol[parentProgram.budgetUnit]; @@ -331,7 +331,7 @@ function budgetOverrunTips() return false; } - typeof(programID) == 'undefind' ? 0 : programID; + var programID = typeof(programID) == 'undefind' ? 0 : programID; $.get(createLink('program', 'ajaxGetAvailableBudget', 'programID=' + programID + "&selectedProgramID=" + selectedProgramID + "&budget=" + budget), function(data) { var data = JSON.parse(data); From e95b8f75a311975162d60e0f14bc34e7ba59a82e Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 02:36:12 +0000 Subject: [PATCH 25/26] * Finish task #62852. --- module/program/js/common.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/module/program/js/common.js b/module/program/js/common.js index 85506ba9aa..c248113b2d 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -312,7 +312,9 @@ function setBudgetTipsAndAclList(parentID) $('#budget').removeAttr('placeholder'); $('.aclBox').html($('#PGMAcl').html()); } - budgetOverrunTips(typeof(programID) == 'undefind' ? 0 : programID); + + if(typeof(programID) == 'undefined') programID = 0; + budgetOverrunTips(programID); } /** @@ -331,7 +333,7 @@ function budgetOverrunTips() return false; } - var programID = typeof(programID) == 'undefind' ? 0 : programID; + if(typeof(programID) == 'undefined') programID = 0; $.get(createLink('program', 'ajaxGetAvailableBudget', 'programID=' + programID + "&selectedProgramID=" + selectedProgramID + "&budget=" + budget), function(data) { var data = JSON.parse(data); From 4ac799f1d5c75845678dfe42b44270700d83598b Mon Sep 17 00:00:00 2001 From: zhouxudong Date: Thu, 4 Aug 2022 02:59:02 +0000 Subject: [PATCH 26/26] * Update Code. --- module/project/js/common.js | 3 ++- module/project/js/edit.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/module/project/js/common.js b/module/project/js/common.js index a4d0bd995b..56554f9541 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -352,7 +352,7 @@ $(document).on('change', "#plansBox select[name^='plans']", function() * @access public * @return void */ -function budgetOverrunTips(projectID = 0) +function budgetOverrunTips() { var selectedProgramID = $('#parent').val(); var budget = $('#budget').val(); @@ -363,6 +363,7 @@ function budgetOverrunTips(projectID = 0) return false; } + if(typeof(projectIDi) == 'undefined') projectID = 0; $.get(createLink('project', 'ajaxGetAvailableBudget', 'projectID=' + projectID + "&selectedProgramID=" + selectedProgramID + "&budget=" + budget), function(data) { var data = JSON.parse(data); diff --git a/module/project/js/edit.js b/module/project/js/edit.js index b00ab69b66..c085ddfa69 100644 --- a/module/project/js/edit.js +++ b/module/project/js/edit.js @@ -4,7 +4,7 @@ $(function() { var programID = $(this).val(); setAclList(programID); - budgetOverrunTips(projectID); + budgetOverrunTips(); /* Determine whether the project can change the project set. */ link = createLink('project', 'ajaxCheckProduct', 'programID=' + programID + '&projectID=' + projectID);