1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-02 13:49:42 +00:00

Workaround for spent time grouped by project (#1561).

git-svn-id: http://svn.redmine.org/redmine/trunk@14667 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2015-10-09 09:30:14 +00:00
parent eee65c8ba8
commit 9c7832d822
2 changed files with 23 additions and 1 deletions

View File

@ -325,7 +325,15 @@ class IssueQuery < Query
# Returns sum of all the issue's time entries hours
def total_for_spent_hours(scope)
scope.joins(:time_entries).sum("#{TimeEntry.table_name}.hours")
if group_by_column.try(:name) == :project
# TODO: remove this when https://github.com/rails/rails/issues/21922 is fixed
# We have to do a custom join without the time_entries.project_id column
# that would trigger a ambiguous column name error
scope.joins("JOIN (SELECT issue_id, hours FROM #{TimeEntry.table_name}) AS joined_time_entries ON joined_time_entries.issue_id = #{Issue.table_name}.id").
sum("joined_time_entries.hours")
else
scope.joins(:time_entries).sum("#{TimeEntry.table_name}.hours")
end
end
# Returns the issues

View File

@ -1219,6 +1219,20 @@ class QueryTest < ActiveSupport::TestCase
)
end
def test_total_by_project_group_for_spent_hours
TimeEntry.delete_all
TimeEntry.generate!(:hours => 5.5, :issue_id => 1)
TimeEntry.generate!(:hours => 1.1, :issue_id => 2)
Issue.where(:id => 1).update_all(:assigned_to_id => 2)
Issue.where(:id => 2).update_all(:assigned_to_id => 3)
q = IssueQuery.new(:group_by => 'project')
assert_equal(
{Project.find(1) => 6.6},
q.total_by_group_for(:spent_hours)
)
end
def test_total_for_int_custom_field
field = IssueCustomField.generate!(:field_format => 'int', :is_for_all => true)
CustomValue.create!(:customized => Issue.find(1), :custom_field => field, :value => '2')