diff --git a/module/program/view/edit.html.php b/module/program/view/edit.html.php index 670cfa39fc..87b92ff8b7 100644 --- a/module/program/view/edit.html.php +++ b/module/program/view/edit.html.php @@ -12,7 +12,7 @@ ?> -app->getMethodName());?> +app->getMethodName());?> execution->weekend);?> program->longTime);?> project->currencySymbol);?> diff --git a/module/project/control.php b/module/project/control.php index d9d1764d58..26ccf82c01 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -230,12 +230,20 @@ class project extends control */ public function ajaxGetParentInfo($objectType, $objectID, $selectedProgramID) { + $data = array(); + $minChildBegin = ''; + $maxChildEnd = ''; if(!empty($objectID)) { $object = $objectType == 'project' ? $this->project->getByID($objectID) : $this->loadModel('program')->getByID($objectID); $selectedProgram = $this->loadModel('program')->getByID($selectedProgramID); $budgetLeft = $this->program->getBudgetLeft($selectedProgram); $availableBudget = $object->parent == $selectedProgramID ? $budgetLeft + $object->budget : $budgetLeft; + if($objectType == 'program') + { + $minChildBegin = $this->dao->select('begin as minBegin')->from(TABLE_PROGRAM)->where('id')->ne($objectID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$objectID},%")->orderBy('begin_asc')->fetch('minBegin'); + $maxChildEnd = $this->dao->select('end as maxEnd')->from(TABLE_PROGRAM)->where('id')->ne($objectID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$objectID},%")->andWhere('end')->ne('0000-00-00')->orderBy('end_desc')->fetch('maxEnd'); + } } else { @@ -244,6 +252,11 @@ class project extends control } $data = array('selectedProgramBegin' => $selectedProgram->begin, 'selectedProgramEnd' => $selectedProgram->end, 'availableBudget' => $availableBudget, 'budgetUnit' => $selectedProgram->budgetUnit); + if($objectType == 'program') + { + $data['minChildBegin'] = $minChildBegin; + $data['maxChildEnd'] = $maxChildEnd; + } echo json_encode($data); } diff --git a/module/project/js/common.js b/module/project/js/common.js index 541cde6578..607a1840b7 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -360,34 +360,45 @@ function budgetOverrunTips() */ function outOfDateTip() { - var end = $('#end').val(); - var begin = $('#begin').val(); - if(end.length > 0 && begin.length > 0) - { - var selectedProgramID = $('#parent').val(); - var budget = $('#budget').val(); + var end = $('#end').val(); + var begin = $('#begin').val(); + if(end.length > 0 && begin.length > 0) + { + var selectedProgramID = $('#parent').val(); - if(selectedProgramID == 0) + if(selectedProgramID == 0) + { + if($('#dateTip').length > 0) $('#dateTip').remove(); + return; + } + + if(typeof(projectID) == 'undefined') projectID = 0; + $.get(createLink('project', 'ajaxGetParentInfo', 'objectType=project&objectID=' + projectID + '&selectedProgramID=' + selectedProgramID), function(data) + { + var data = JSON.parse(data); + var parentEnd = new Date(data.selectedProgramEnd); + var parentBegin = new Date(data.selectedProgramBegin); + var projectEnd = new Date(end); + var projectBegin = new Date(begin); + + if(projectBegin >= parentBegin && projectEnd <= parentEnd) return; + + var dateTip = ""; + if(projectBegin < parentBegin && projectEnd <= parentEnd) { - if($('#dateTip').length > 0) $('#dateTip').remove(); - return false; + dateTip = "" + beginLetterParent + data.selectedProgramBegin + ""; + } + else if(projectBegin >= parentBegin && projectEnd > parentEnd) + { + dateTip = "" + endGreaterParent + data.selectedProgramEnd + ""; + } + else + { + dateTip = "" + dateExceedParent + data.selectedProgramBegin + "~" + data.selectedProgramEnd + ""; } - if(typeof(projectID) == 'undefined') projectID = 0; - $.get(createLink('project', 'ajaxGetParentInfo', 'objectType=project&objectID=' + projectID + "&selectedProgramID=" + selectedProgramID), function(data) - { - var data = JSON.parse(data); - var parentEnd = new Date(data.selectedProgramEnd); - var parentBegin = new Date(data.selectedProgramBegin); - var projectEnd = new Date(end); - var projectBegin = new Date(begin); - - var dateTip = ""; - if(projectBegin < parentBegin && projectEnd <= parentEnd) dateTip = "" + beginLetterParent + data.selectedProgramBegin + ""; - if(projectBegin >= parentBegin && projectEnd > parentEnd) dateTip = "" + endGreaterParent + data.selectedProgramEnd + ""; - if((projectBegin < parentBegin && projectEnd > parentEnd) || (projectEnd <= parentBegin && projectBegin <= parentBegin) || (projectBegin >= parentEnd && projectEnd >= parentEnd)) dateTip = "" + dateExceedParent + data.selectedProgramBegin + "~" + data.selectedProgramEnd + ""; - if($('#dateTip').length > 0) $('#dateTip').remove(); - $('#dateBox').after(dateTip); - }); - } + if($('#dateTip').length > 0) $('#dateTip').remove(); + $('#dateBox').after(dateTip); + }); + } }