@@ -1529,16 +1529,16 class Issue < ActiveRecord::Base | |||
|
1529 | 1529 | if p.done_ratio_derived? |
|
1530 | 1530 | # done ratio = weighted average ratio of leaves |
|
1531 | 1531 | unless Issue.use_status_for_done_ratio? && p.status && p.status.default_done_ratio |
|
1532 |
|
|
|
1533 |
if |
|
|
1534 |
average = p. |
|
|
1532 | child_count = p.children.count | |
|
1533 | if child_count > 0 | |
|
1534 | average = p.children.where("estimated_hours > 0").average(:estimated_hours).to_f | |
|
1535 | 1535 | if average == 0 |
|
1536 | 1536 | average = 1 |
|
1537 | 1537 | end |
|
1538 |
done = p. |
|
|
1538 | done = p.children.joins(:status). | |
|
1539 | 1539 | sum("COALESCE(CASE WHEN estimated_hours > 0 THEN estimated_hours ELSE NULL END, #{average}) " + |
|
1540 | 1540 | "* (CASE WHEN is_closed = #{self.class.connection.quoted_true} THEN 100 ELSE COALESCE(done_ratio, 0) END)").to_f |
|
1541 |
progress = done / (average * |
|
|
1541 | progress = done / (average * child_count) | |
|
1542 | 1542 | p.done_ratio = progress.round |
|
1543 | 1543 | end |
|
1544 | 1544 | end |
@@ -185,6 +185,26 class IssueSubtaskingTest < ActiveSupport::TestCase | |||
|
185 | 185 | end |
|
186 | 186 | end |
|
187 | 187 | |
|
188 | def test_done_ratio_of_parent_should_reflect_children | |
|
189 | root = Issue.generate! | |
|
190 | child1 = root.generate_child! | |
|
191 | child2 = child1.generate_child! | |
|
192 | ||
|
193 | assert_equal 0, root.done_ratio | |
|
194 | assert_equal 0, child1.done_ratio | |
|
195 | assert_equal 0, child2.done_ratio | |
|
196 | ||
|
197 | with_settings :issue_done_ratio => 'issue_status' do | |
|
198 | status = IssueStatus.find(4) | |
|
199 | status.update_attribute :default_done_ratio, 50 | |
|
200 | child1.update_attribute :status, status | |
|
201 | ||
|
202 | assert_equal 50, child1.done_ratio | |
|
203 | root.reload | |
|
204 | assert_equal 50, root.done_ratio | |
|
205 | end | |
|
206 | end | |
|
207 | ||
|
188 | 208 | def test_parent_dates_should_be_editable_with_parent_issue_dates_set_to_independent |
|
189 | 209 | with_settings :parent_issue_dates => 'independent' do |
|
190 | 210 | issue = Issue.generate_with_child! |
General Comments 0
You need to be logged in to leave comments.
Login now