]> source.dussan.org Git - redmine.git/commitdiff
Adds estimated remaining time to version page (#37862, #1671).
authorMarius Balteanu <marius.balteanu@zitec.com>
Tue, 4 Jun 2024 20:17:01 +0000 (20:17 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Tue, 4 Jun 2024 20:17:01 +0000 (20:17 +0000)
git-svn-id: https://svn.redmine.org/redmine/trunk@22858 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/version.rb
app/views/versions/show.html.erb
test/unit/version_test.rb

index 937ec9221c75e70243a73b04104eff64f4150377..c0d4d0deee345ec4732c8caddb42c92535872fcb 100644 (file)
@@ -24,6 +24,12 @@ module FixedIssuesExtension
     @estimated_hours ||= sum(:estimated_hours).to_f
   end
 
+  # Returns the total estimated remaining time for this version
+  # (sum of leaves remaining_estimated_hours)
+  def estimated_remaining_hours
+    @estimated_remaining_hours ||= sum(IssueQuery::ESTIMATED_REMAINING_HOURS_SQL).to_f
+  end
+
   # Returns the total amount of open issues for this version.
   def open_count
     load_counts
@@ -241,6 +247,12 @@ class Version < ApplicationRecord
     fixed_issues.estimated_hours
   end
 
+  # Returns the total estimated remaining time for this version
+  # (sum of leaves estimated_remaining_hours)
+  def estimated_remaining_hours
+    @remaining_hours ||= fixed_issues.estimated_remaining_hours
+  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
index e1757107586a4cfd4381efa59a6849854efe0eec..88eb4b841265c49e9a53ba4cca4ce4ce1829614f 100644 (file)
     <td class="total-hours"><%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_hours)),
                                         project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_hours], :t => [:estimated_hours]) %></td>
 </tr>
+<tr>
+  <th><%= l(:field_estimated_remaining_hours) %></th>
+  <td class="total-hours">
+    <%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_remaining_hours)),
+          project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_remaining_hours], :t => [:estimated_remaining_hours]) %>
+  </td>
+</tr>
 <% if User.current.allowed_to_view_all_time_entries?(@project) %>
 <tr>
     <th><%= l(:label_spent_time) %></th>
index d7274ca9a1a56d2faaf7501a9844313929719983..409f1494cae51bbf42dc757a17deb1944433db44 100644 (file)
@@ -225,30 +225,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 estimated_remaining_hours should return 0 with no assigned issues" do
     version = Version.generate!
     assert_equal 0, version.estimated_hours
+    assert_equal 0, version.estimated_remaining_hours
   end
 
-  test "#estimated_hours should return 0 with no estimated hours" do
+  test "#estimated_hours and estimated_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.estimated_remaining_hours
   end
 
-  test "#estimated_hours should return return the sum of estimated hours" do
+  test "#estimated_hours and estimated_remaining_hours should return the sum of estimated hours and estimated remaining 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, :done_ratio => 90)
+    add_issue(version, :estimated_hours => 5, :done_ratio => 50)
     assert_equal 7.5, version.estimated_hours
+    assert_equal 2.75, version.estimated_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 estimated 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, :done_ratio => 90, :parent_issue_id => parent.id)
+    add_issue(version, :estimated_hours => 5, :done_ratio => 50, :parent_issue_id => parent.id)
     assert_equal 7.5, version.estimated_hours
+    assert_equal 2.75, version.estimated_remaining_hours
   end
 
   test "should update all issue's fixed_version associations in case the hierarchy changed XXX" do