瀏覽代碼

Progress of version should be calculated the same way as parent tasks (#24457, #4682).

git-svn-id: https://svn.redmine.org/redmine/trunk@22803 e93f8b46-1217-0410-a6f0-8f06a7374b81
pull/131/merge
Marius Balteanu 4 週之前
父節點
當前提交
cd8d4fe444
共有 2 個文件被更改,包括 21 次插入6 次删除
  1. 11
    6
      app/models/version.rb
  2. 10
    0
      test/unit/version_test.rb

+ 11
- 6
app/models/version.rb 查看文件

@@ -78,9 +78,11 @@ module FixedIssuesExtension
# Used to weight unestimated issues in progress calculation
def estimated_average
if @estimated_average.nil?
average = average(:estimated_hours).to_f
if average == 0
average = 1
issues_with_total_estimated_hours = select {|c| c.total_estimated_hours.to_f > 0.0}
if issues_with_total_estimated_hours.any?
average = issues_with_total_estimated_hours.map(&:total_estimated_hours).sum.to_f / issues_with_total_estimated_hours.count
else
average = 1.0
end
@estimated_average = average
end
@@ -98,9 +100,12 @@ module FixedIssuesExtension
@issues_progress[open] ||= begin
progress = 0
if count > 0
ratio = open ? 'done_ratio' : 100

done = open(open).sum("COALESCE(estimated_hours, #{estimated_average}) * #{ratio}").to_f
done = open(open).map {|c|
estimated = c.total_estimated_hours.to_f
estimated = estimated_average unless estimated > 0.0
ratio = c.closed? ? 100 : (c.done_ratio || 0)
estimated * ratio
}.sum
progress = done / (estimated_average * count)
end
progress

+ 10
- 0
test/unit/version_test.rb 查看文件

@@ -117,6 +117,16 @@ class VersionTest < ActiveSupport::TestCase
assert_progress_equal (100.0)/3, v.closed_percent
end

def test_progress_should_consider_closed_issues_with_0h_estimated_as_completed
project = Project.find(1)
closed = IssueStatus.where(:is_closed => true).first
v = Version.create!(:project => project, :name => 'Progress')
add_issue(v, :done_ratio => 100, :estimated_hours => 0)
add_issue(v, :done_ratio => 100, :estimated_hours => 0, :status => closed)
assert_progress_equal 100, v.completed_percent
assert_progress_equal 50, v.closed_percent
end

def test_progress_should_consider_estimated_hours_to_weight_issues
project = Project.find(1)
v = Version.create!(:project => project, :name => 'Progress')

Loading…
取消
儲存