Removed all the duplicate methods that were getting the rate for each TimeEntry

and replaced them with a simple collector that uses the new TimeEntry#cost
method (that wraps the Rate API).

  #1924
This commit is contained in:
Eric Davis
2009-01-21 15:20:21 -08:00
parent 7fa4f33748
commit 3d8c1ecc5c
6 changed files with 9 additions and 42 deletions
+3 -16
View File
@@ -110,15 +110,8 @@ class Budget
# Dollar amount of time that has been logged to the project itself
def amount_missing_on_issues
time_logs = TimeEntry.find_all_by_project_id_and_issue_id(self.project, nil)
total = 0
# Find each Member for their rate
time_logs.each do |time_log|
rate = Rate.amount_for(time_log.user, time_log.project, time_log.spent_on.to_s)
total += (rate * time_log.hours) unless rate.nil?
end
return total
return time_logs.collect(&:cost).inject { |sum, n| sum + n}
end
# Dollar amount of time that has been logged to issues that are not assigned to deliverables
@@ -132,14 +125,8 @@ class Budget
return 0 if all_issues.empty?
missing_issues = all_issues - deliverable_issues
time_logs = missing_issues.collect(&:time_entries).flatten
time_logs.each do |time_log|
rate = Rate.amount_for(time_log.user, time_log.project, time_log.spent_on.to_s)
total += (rate * time_log.hours) unless rate.nil?
end
return total
return time_logs.collect(&:cost).inject { |sum, n| sum + n}
end
end
+1 -7
View File
@@ -16,14 +16,8 @@ class FixedDeliverable < Deliverable
# Get all timelogs assigned
time_logs = self.issues.collect(&:time_entries).flatten
# Find each Member for their rate
time_logs.each do |time_log|
rate = Rate.amount_for(time_log.user, time_log.project, time_log.spent_on.to_s)
total += (rate * time_log.hours) unless rate.nil?
end
return total
return total + time_logs.collect(&:cost).inject { |sum, n| sum + n}
end
+1 -7
View File
@@ -10,13 +10,7 @@ class HourlyDeliverable < Deliverable
# Get all timelogs assigned
time_logs = self.issues.collect(&:time_entries).flatten
# Find each Member for their rate
time_logs.each do |time_log|
rate = Rate.amount_for(time_log.user, time_log.project, time_log.spent_on.to_s)
total += (rate * time_log.hours) unless rate.nil?
end
return total
return time_logs.collect(&:cost).inject { |sum, n| sum + n}
end
def profit # :nodoc:
+2 -8
View File
@@ -25,15 +25,9 @@ class MemberSpent
project.members.each do |member|
member_time_entries = time_entries.select { |tl| tl.user_id == member.user.id}
spent = 0.0
hours = 0.0
spent = member_time_entries.collect(&:cost).inject { |sum, n| sum + n}
hours = member_time_entries.collect(&:hours).inject { |sum, n| sum + n}
member_time_entries.each do |time_entry|
rate = Rate.amount_for(time_entry.user, time_entry.project, time_entry.spent_on.to_s)
spent += time_entry.hours.to_f * rate unless rate.nil?
hours += time_entry.hours
end
membership << MemberSpent.new({
:user => member.user,
:hours => hours,