Added a helper method to TimeEntry that will encapsulate the rate API for a TimeEntry.
* TimeEntry#cost will return the amount the TimeEntry costs based on: ** logged hours times the assigned rate amount ** logged hours times the effective project rate for the user ** logged hours times the effective default rate for the user ** 0 if the user has no rates at all #1924
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
require_dependency 'time_entry'
|
||||
|
||||
module RateTimeEntryPatch
|
||||
def self.included(base) # :nodoc:
|
||||
base.extend(ClassMethods)
|
||||
|
||||
base.send(:include, InstanceMethods)
|
||||
|
||||
# Same as typing in the class
|
||||
base.class_eval do
|
||||
unloadable # Send unloadable so it will not be unloaded in development
|
||||
belongs_to :rate
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
# Returns the current cost of the TimeEntry based on it's rate and hours
|
||||
def cost
|
||||
if self.rate.nil?
|
||||
amount = Rate.amount_for(self.user, self.project, self.spent_on.to_s)
|
||||
else
|
||||
amount = rate.amount
|
||||
end
|
||||
|
||||
return 0.0 if amount.nil?
|
||||
|
||||
return amount.to_f * hours.to_f
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
TimeEntry.send(:include, RateTimeEntryPatch)
|
||||
Reference in New Issue
Block a user