From bbf5d70170d0e6f9342b8eef195d87f50e68513d Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 13 Oct 2011 15:29:51 -0700 Subject: [PATCH] [#6636] Support nil categories in Deliverable's issue_category methods --- app/models/deliverable.rb | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index 1855c17..554efd1 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -371,13 +371,25 @@ class Deliverable < ActiveRecord::Base end def spent_for_issue_category(category, billable_time_only) - time_entries = project.time_entries.all(:conditions => ["#{TimeEntry.table_name}.issue_id IN (?) AND #{Issue.table_name}.category_id IN (?)", issue_ids, category.id], :include => [:issue]) + conditions = ARCondition.new(["#{TimeEntry.table_name}.issue_id IN (?)", issue_ids]) + if category.present? + conditions.add(["#{Issue.table_name}.category_id IN (?)", category.id]) + else + conditions.add("#{Issue.table_name}.category_id IS NULL") + end + time_entries = project.time_entries.all(:conditions => conditions.conditions, :include => [:issue]) time_entries.select {|time| time.billable? == billable_time_only }.sum(&:cost) end def hours_spent_for_issue_category(category, billable_time_only) - time_entries = project.time_entries.all(:conditions => ["#{TimeEntry.table_name}.issue_id IN (?) AND #{Issue.table_name}.category_id IN (?)", issue_ids, category.id], :include => [:issue]) + conditions = ARCondition.new(["#{TimeEntry.table_name}.issue_id IN (?)", issue_ids]) + if category.present? + conditions.add(["#{Issue.table_name}.category_id IN (?)", category.id]) + else + conditions.add("#{Issue.table_name}.category_id IS NULL") + end + time_entries = project.time_entries.all(:conditions => conditions.conditions, :include => [:issue]) time_entries.select {|time| time.billable? == billable_time_only }.sum(&:hours) end