Added MemberSpent class to help create the fields for getting the amounts per member. #1190
This commit is contained in:
1 parent
b571a1f338
commit
211fc5879d
4 files changed
+51
-1
No files matched your search
@@ -105,6 +105,10 @@ class Deliverable < ActiveRecord::Base
|
|||||||
0
|
0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def members_spent
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
|
||||||
def left
|
def left
|
||||||
return self.budget - self.spent
|
return self.budget - self.spent
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ class HourlyDeliverable < Deliverable
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def members_spent
|
||||||
|
return MemberSpent.find_all_by_deliverable(self)
|
||||||
|
end
|
||||||
|
|
||||||
def profit
|
def profit
|
||||||
if read_attribute(:profit_percent).nil?
|
if read_attribute(:profit_percent).nil?
|
||||||
return super
|
return super
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
class MemberSpent
|
||||||
|
attr_accessor :user
|
||||||
|
attr_accessor :hours
|
||||||
|
attr_accessor :spent
|
||||||
|
|
||||||
|
def initialize(options = { })
|
||||||
|
self.user = options[:user] || nil
|
||||||
|
self.hours = options[:hours] || 0.0
|
||||||
|
self.spent = options[:spent] || 0.0
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.find_all_by_deliverable(deliverable)
|
||||||
|
membership = []
|
||||||
|
return membership unless deliverable.issues.size > 0
|
||||||
|
|
||||||
|
|
||||||
|
project = deliverable.project
|
||||||
|
time_entries = deliverable.issues.collect(&:time_entries).flatten
|
||||||
|
|
||||||
|
|
||||||
|
project.members.each do |member|
|
||||||
|
member_time_entries = time_entries.select { |tl| tl.user_id == member.user.id}
|
||||||
|
hours = member_time_entries.collect(&:hours).sum || 0.0
|
||||||
|
|
||||||
|
unless member.rate.nil?
|
||||||
|
spent = hours.to_f * member.rate
|
||||||
|
else
|
||||||
|
spent = 0.0
|
||||||
|
end
|
||||||
|
|
||||||
|
membership << MemberSpent.new({
|
||||||
|
:user => member.user,
|
||||||
|
:hours => hours,
|
||||||
|
:spent => spent
|
||||||
|
}) unless hours == 0.0
|
||||||
|
end
|
||||||
|
|
||||||
|
return membership
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -30,7 +30,9 @@
|
|||||||
<%= paragraph_with_data("Hours Estimated: ", deliverable.total_hours) if allowed_management? -%>
|
<%= paragraph_with_data("Hours Estimated: ", deliverable.total_hours) if allowed_management? -%>
|
||||||
<%= paragraph_with_data("Hours Used: ", deliverable.hours_used) if allowed_management? -%>
|
<%= paragraph_with_data("Hours Used: ", deliverable.hours_used) if allowed_management? -%>
|
||||||
|
|
||||||
TODO: Each person
|
<% deliverable.members_spent.each do |person| %>
|
||||||
|
<p><%= h person.user.name -%>: <%= h(person.hours) %> <%= number_to_currency(person.spent, :precision => 0) %></p>
|
||||||
|
<% end %>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
|
|||||||
Reference in new issue
Block a user