class MudratProjector::Account
Constants
- TYPES
Attributes
open_date[RW]
Public Class Methods
new(params = {})
click to toggle source
# File lib/mudrat_projector/account.rb, line 7 def initialize params = {} @entries = [] @open_date = params[:open_date] || ABSOLUTE_START @offset = 0 @opening_balance = params[:opening_balance] || 0 @parent_id = params[:parent_id] || nil @tags = params[:tags] || [] @type = params.fetch :type end
Public Instance Methods
add_entry(entry)
click to toggle source
# File lib/mudrat_projector/account.rb, line 17 def add_entry entry @entries.push entry @offset += entry.delta end
balance()
click to toggle source
# File lib/mudrat_projector/account.rb, line 22 def balance @opening_balance + @offset end
close!()
click to toggle source
# File lib/mudrat_projector/account.rb, line 26 def close! freeze return self if closed? self.class.new serialize end
closed?()
click to toggle source
# File lib/mudrat_projector/account.rb, line 32 def closed? @entries.empty? end
create_child(params = {})
click to toggle source
# File lib/mudrat_projector/account.rb, line 36 def create_child params = {} new_params = serialize new_params.merge!( opening_balance: params[:opening_balance], parent_id: params.fetch(:parent_id), tags: (tags | Array(params[:tags])), ) self.class.new new_params end
parent?()
click to toggle source
# File lib/mudrat_projector/account.rb, line 46 def parent? parent_id.nil? ? false : true end
serialize()
click to toggle source
# File lib/mudrat_projector/account.rb, line 54 def serialize hash = { opening_balance: balance } %i(open_date parent_id tags type).each do |attr| value = public_send attr unless default_value? attr, value hash[attr] = value unless Array(value).empty? end end hash end
tag?(tag_name)
click to toggle source
# File lib/mudrat_projector/account.rb, line 50 def tag? tag_name tags.include? tag_name end
Private Instance Methods
default_value?(attr, value)
click to toggle source
# File lib/mudrat_projector/account.rb, line 67 def default_value? attr, value if attr == :open_date value == ABSOLUTE_START else false end end