add AccountTransaction class for easier access to Transaction data from an Account's list of transactions

This commit is contained in:
Josh Holtrop 2013-08-12 21:59:55 -04:00
parent c749b17904
commit 4524d4e229
4 changed files with 22 additions and 13 deletions

View File

@ -1,4 +1,5 @@
require "gnucash/account" require "gnucash/account"
require "gnucash/account_transaction"
require "gnucash/book" require "gnucash/book"
require "gnucash/transaction" require "gnucash/transaction"
require "gnucash/value" require "gnucash/value"

View File

@ -28,23 +28,17 @@ module Gnucash
prefix + name prefix + name
end end
def add_transaction(txn, value, description) def add_transaction(act_txn)
@transactions << { @transactions << act_txn
txn: txn,
value: value,
description: description,
}
end end
def finalize def finalize
@transactions.sort! do |a, b| @transactions.sort! { |a, b| a.date <=> b.date }
a[:txn].date <=> b[:txn].date
end
balance = Value.new(0) balance = Value.new(0)
@balances = @transactions.map do |txn_hash| @balances = @transactions.map do |act_txn|
balance += txn_hash[:value] balance += act_txn.value
{ {
date: txn_hash[:txn].date, date: act_txn.date,
value: balance, value: balance,
} }
end end

View File

@ -0,0 +1,14 @@
module Gnucash
class AccountTransaction
attr_accessor :value
def initialize(real_txn, value)
@real_txn = real_txn
@value = value
end
def method_missing(*args)
@real_txn.send(*args)
end
end
end

View File

@ -18,7 +18,7 @@ module Gnucash
unless account unless account
raise "Could not find account with ID #{account_id} for transaction #{@id}" raise "Could not find account with ID #{account_id} for transaction #{@id}"
end end
account.add_transaction(self, value, description) account.add_transaction(AccountTransaction.new(self, value))
{ {
account_id: account_id, account_id: account_id,
value: value, value: value,