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:
parent
eee65c8ba8
commit
9c7832d822
@ -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
|
||||
|
||||
@ -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')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user