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