diff --git a/docs/upgrades/upgrade_7.0.9-7.0.10.pl b/docs/upgrades/upgrade_7.0.9-7.0.10.pl index fc921f638..00a6d19e8 100644 --- a/docs/upgrades/upgrade_7.0.9-7.0.10.pl +++ b/docs/upgrades/upgrade_7.0.9-7.0.10.pl @@ -17,22 +17,26 @@ use WebGUI::Session; my $toVersion = "7.0.10"; # make this match what version you're going to my $quiet; # this line required - my $session = start(); # this line required -# upgrade functions go here +recalculateProjectCompletion($session); finish($session); # this line required ##------------------------------------------------- -#sub exampleFunction { -# my $session = shift; -# print "\tWe're doing some stuff here that you should know about.\n" unless ($quiet); -# # and here's our code -#} - - +sub recalculateProjectCompletion { + my $session = shift; + print "\tForcing project completion recalculation.\n" unless $quiet; + my @assetIds = $session->db->buildArray("SELECT DISTINCT assetId FROM PM_wobject", []); + foreach my $assetId (@assetIds) { + my $pm = WebGUI::Asset->newByDynamicClass($session, $assetId); + my @projectIds = $session->db->buildArray("SELECT projectId FROM PM_project WHERE assetId = ?", [$assetId]); + foreach my $project (@projectIds) { + $pm->updateProject($project); + } + } +} # ---- DO NOT EDIT BELOW THIS LINE ---- diff --git a/lib/WebGUI/Asset/Wobject/ProjectManager.pm b/lib/WebGUI/Asset/Wobject/ProjectManager.pm index 90725c8be..365ab67aa 100644 --- a/lib/WebGUI/Asset/Wobject/ProjectManager.pm +++ b/lib/WebGUI/Asset/Wobject/ProjectManager.pm @@ -243,7 +243,7 @@ sub updateProjectTask { } $self->setCollateral("PM_task","taskId", { taskId=>$taskId, duration=>$task->{duration}, percentComplete=>$task->{percentComplete} }); - $self->_updateProject($projectId); + $self->updateProject($projectId); return 1; } @@ -271,7 +271,7 @@ sub _userCanManageProjectList { } #------------------------------------------------------------------- -sub _updateProject { +sub updateProject { my $self = shift; my ($session,$privilege,$form,$db,$dt,$i18n,$user) = $self->setSessionVars; my $projectId= $_[0]; @@ -1071,7 +1071,7 @@ sub www_editTaskSave { $self->reorderCollateral("PM_task","taskId","projectId",$projectId); } - $self->_updateProject($projectId); + $self->updateProject($projectId); $self->_clobberImproperDependants($projectId); $self->_updateDependantDates($projectId); @@ -1179,7 +1179,7 @@ sub www_saveExistingTasks { $self->setCollateral("PM_task","taskId",$props,1,0,"projectId",$projectId); } - $self->_updateProject($projectId); + $self->updateProject($projectId); $self->_updateDependantDates($projectId); return $self->www_drawGanttChart(); }