diff --git a/app/models/version.rb b/app/models/version.rb old mode 100644 new mode 100755 index bc71b72..6f019c1 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -89,6 +89,12 @@ class Version < ActiveRecord::Base @estimated_hours ||= fixed_issues.sum(:estimated_hours).to_f end + # Returns the total remaining time for this version + # (sum of leaves remaining_hours) + def remaining_hours + @remaining_hours ||= fixed_issues.sum(:remaining_hours).to_f + end + # Returns the total reported time for this version def spent_hours @spent_hours ||= TimeEntry.joins(:issue).where("#{Issue.table_name}.fixed_version_id = ?", id).sum(:hours).to_f diff --git a/app/views/versions/show.html.erb b/app/views/versions/show.html.erb old mode 100644 new mode 100755 index 27e70aa..e3058f4 --- a/app/views/versions/show.html.erb +++ b/app/views/versions/show.html.erb @@ -19,6 +19,10 @@ <%= l(:field_estimated_hours) %> <%= html_hours(l_hours(@version.estimated_hours)) %> + + <%= l(:field_remaining_hours) %> + <%= html_hours(l_hours(@version.remaining_hours)) %> + <% if User.current.allowed_to_view_all_time_entries?(@project) %> <%= l(:label_spent_time) %> diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb old mode 100644 new mode 100755 index 56adc3c..db26aba --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -177,30 +177,34 @@ class VersionTest < ActiveSupport::TestCase assert_equal false, version.behind_schedule? end - test "#estimated_hours should return 0 with no assigned issues" do + test "#estimated_hours and remaining_hours should return 0 with no assigned issues" do version = Version.generate! assert_equal 0, version.estimated_hours + assert_equal 0, version.remaining_hours end - test "#estimated_hours should return 0 with no estimated hours" do + test "#estimated_hours and remaining_hours should return 0 with no estimated hours" do version = Version.create!(:project_id => 1, :name => 'test') add_issue(version) assert_equal 0, version.estimated_hours + assert_equal 0, version.remaining_hours end - test "#estimated_hours should return return the sum of estimated hours" do + test "#estimated_hours and remaining_hours should return return the sum of estimated hours" do version = Version.create!(:project_id => 1, :name => 'test') - add_issue(version, :estimated_hours => 2.5) - add_issue(version, :estimated_hours => 5) + add_issue(version, :estimated_hours => 2.5, :remaining_hours => 1) + add_issue(version, :estimated_hours => 5, :remaining_hours => 3) assert_equal 7.5, version.estimated_hours + assert_equal 4, version.remaining_hours end - test "#estimated_hours should return the sum of leaves estimated hours" do + test "#estimated_hours and remaining_hours should return the sum of leaves estimated hours and remaining hours" do version = Version.create!(:project_id => 1, :name => 'test') parent = add_issue(version) - add_issue(version, :estimated_hours => 2.5, :parent_issue_id => parent.id) - add_issue(version, :estimated_hours => 5, :parent_issue_id => parent.id) + add_issue(version, :estimated_hours => 2.5, :remaining_hours => 1, :parent_issue_id => parent.id) + add_issue(version, :estimated_hours => 5, :remaining_hours => 3, :parent_issue_id => parent.id) assert_equal 7.5, version.estimated_hours + assert_equal 4, version.remaining_hours end test "should update all issue's fixed_version associations in case the hierarchy changed XXX" do