class MudratProjector::ScheduledTransaction
Attributes
schedule[R]
Public Class Methods
new(params = {})
click to toggle source
Calls superclass method
# File lib/mudrat_projector/scheduled_transaction.rb, line 5 def initialize params = {} @schedule = Schedule.new params.fetch :schedule super params end
Public Instance Methods
build_transactions(intervals)
click to toggle source
# File lib/mudrat_projector/scheduled_transaction.rb, line 10 def build_transactions intervals intervals.map do |date, prorate| clone_transaction new_date: date, multiplier: prorate, new_schedule: nil end end
clone_transaction(new_date: date, new_schedule: schedule.serialize, multiplier: 1)
click to toggle source
# File lib/mudrat_projector/scheduled_transaction.rb, line 16 def clone_transaction new_date: date, new_schedule: schedule.serialize, multiplier: 1 params = build_cloned_tranasction_params new_date, multiplier return Transaction.new(params) if new_schedule.nil? params[:schedule] = new_schedule ScheduledTransaction.new params end
multiply(entries, by: 1)
click to toggle source
# File lib/mudrat_projector/scheduled_transaction.rb, line 23 def multiply entries, by: 1 entries.map do |entry| entry * by; end end
slice(slice_date)
click to toggle source
# File lib/mudrat_projector/scheduled_transaction.rb, line 27 def slice slice_date intervals, next_schedule = schedule.slice(date..slice_date) if next_schedule leftover = clone_transaction new_date: slice_date + 1, new_schedule: next_schedule end [build_transactions(intervals), leftover] end
Private Instance Methods
build_cloned_tranasction_params(new_date, multiplier)
click to toggle source
# File lib/mudrat_projector/scheduled_transaction.rb, line 37 def build_cloned_tranasction_params new_date, multiplier { date: new_date, debits: multiply(debits, by: multiplier), credits: multiply(credits, by: multiplier), } end