class FeideeUtils::Account

Constants

FieldMappings
IgnoredFields
NullPOID

Public Class Methods

validate_global_integrity() click to toggle source
# File lib/feidee_utils/account.rb, line 32
def self.validate_global_integrity
  if self.find_by_id(-1) != nil
    raise "-1 is used as the parent POID placeholder of a parent account." +
      " Account of POID -1 should not exist."
  end
end

Public Instance Methods

balance() click to toggle source

NOTE: balance is not set for credit cards etc. Instead credit/debit are used. Guess: The special behavior is be controlled by account_group_poid. Again, the code can work in all cases, thus no check is done.

# File lib/feidee_utils/account.rb, line 72
def balance
  to_bigdecimal(raw_balance) + credit - debit
end
children() click to toggle source
# File lib/feidee_utils/account.rb, line 108
def children
  arr = []
  self.class.database.query(
    "SELECT * FROM #{self.class.table_name} WHERE parent = ?", poid
  ) do |result|
    result.each do |raw_row|
      arr << self.class.new(raw_row)
    end
  end
  arr
end
credit() click to toggle source
# File lib/feidee_utils/account.rb, line 76
def credit
  to_bigdecimal(raw_credit)
end
debit() click to toggle source
# File lib/feidee_utils/account.rb, line 80
def debit
  to_bigdecimal(raw_debit)
end
flagged_as_parent?() click to toggle source
# File lib/feidee_utils/account.rb, line 97
def flagged_as_parent?
  # Account with POID -1 doesn't exist. It's just a special
  # POID used to indicate that this account itself is the parent
  # of some other accounts.
  parent_poid == -1
end
flat_parent_hierachy?() click to toggle source
# File lib/feidee_utils/account.rb, line 104
def flat_parent_hierachy?
  !has_parent? or parent.flagged_as_parent?
end
has_parent?() click to toggle source
# File lib/feidee_utils/account.rb, line 93
def has_parent?
  parent_poid != NullPOID && !flagged_as_parent?
end
hidden?() click to toggle source
# File lib/feidee_utils/account.rb, line 84
def hidden?
  raw_hidden == 1
end
parent() click to toggle source

Parent related.

# File lib/feidee_utils/account.rb, line 89
def parent
  self.class.find_by_id(parent_poid)
end
to_s() click to toggle source
# File lib/feidee_utils/account.rb, line 120
def to_s
  "#{name} (Account/#{poid})"
end
validate_integrity() click to toggle source
# File lib/feidee_utils/account.rb, line 7
def validate_integrity
  unless not column("type") or column("type") == 0
    raise "Account type should always be 0, but it's #{column("type")}.\n" +
      inspect
  end
  unless column("usedCount") == 0
    raise "Account usedCount should always be 0," +
      " but it's #{column("usedCount")}.\n"+
      inspect
  end
  unless column("uuid").to_s.empty?
    raise "Account uuid should always be empty,"+
      " but it's #{column("uuid")}.\n" +
      inspect
  end
  unless flat_parent_hierachy?
    raise "Account hierachy contains more than 2 levels.\n" + inspect
  end
  unless (raw_hidden == 1 or raw_hidden == 0)
    raise "Account hidden should be either 0 or 1," +
      " but it's #{raw_hidden}.\n" +
      inspect
  end
end