class CashAccount
Public Instance Methods
account_ledger()
click to toggle source
# File lib/models/cash_account.rb, line 17 def account_ledger acct_trans = self.trans.order(:post_date).distinct b = 0 lines = [] acct_trans.each do |t| date = Date.parse(t.post_date) line = {date: date.strftime("%m/%d/%Y"),num:t.num,desc:t.description, checking:{db:0,cr:0},details:[],balance:0, memo:nil,r:nil} t.splits.each do |s| details = s.details if details[:aguid] == self.guid line[:checking][:db] += details[:db] line[:checking][:cr] += details[:cr] b += (details[:db] - details[:cr]) line[:balance] = b line[:r] = details[:r] else line[:balance] = b if line[:memo].nil? line[:memo] = details[:name] else line[:memo] = "- Split Transaction -" end end line[:details] << details end lines << line end lines end
account_name()
click to toggle source
# File lib/models/cash_account.rb, line 89 def account_name account_name = self.name p = self.parent while p.parent_guid.present? account_name = p.name + ":" + account_name p = p.parent end return account_name end
balance(decimal=true)
click to toggle source
# File lib/models/cash_account.rb, line 49 def balance(decimal=true) b = self.splits.sum(:value_num) if decimal "#{b/100}.#{b%100}" else b end end
balance_on(date)
click to toggle source
# File lib/models/cash_account.rb, line 58 def balance_on(date) sp = self.splits.joins(:tran).where(Tran.arel_table[:post_date].lt(date.to_s(:db))) b = sp.sum(:value_num) end
balances_between(from,to)
click to toggle source
# File lib/models/cash_account.rb, line 63 def balances_between(from,to) bb = self.balance_on(from) sp = splits_by_month(from,to) credits = sp.where('value_num < ?',0).sum(:value_num) debits = sp.where('value_num >= ?', 0).sum(:value_num) diff = debits + credits results = {bbalance:bb,diff:diff,debits:debits,credits:credits * -1,ebalance:bb+diff} end
children()
click to toggle source
# File lib/models/cash_account.rb, line 13 def children CashAccount.where(parent_guid:self.guid).order(:name) end
children_balance(decimal=true)
click to toggle source
# File lib/models/cash_account.rb, line 76 def children_balance(decimal=true) b = 0 kids = self.children kids.each do |c| b += c.balance(false) end if decimal "#{b/100}.#{b%100}" else b end end
parent()
click to toggle source
# File lib/models/cash_account.rb, line 9 def parent CashAccount.find(self.parent_guid) end
splits_by_month(bom,eom)
click to toggle source
# File lib/models/cash_account.rb, line 72 def splits_by_month(bom,eom) self.splits.joins(:tran).where(transactions:{post_date: Vfwcash.str_date_range(bom,eom)}) end