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_transaction"
require "gnucash/book"
require "gnucash/transaction"
require "gnucash/value"

View File

@ -28,23 +28,17 @@ module Gnucash
prefix + name
end
def add_transaction(txn, value, description)
@transactions << {
txn: txn,
value: value,
description: description,
}
def add_transaction(act_txn)
@transactions << act_txn
end
def finalize
@transactions.sort! do |a, b|
a[:txn].date <=> b[:txn].date
end
@transactions.sort! { |a, b| a.date <=> b.date }
balance = Value.new(0)
@balances = @transactions.map do |txn_hash|
balance += txn_hash[:value]
@balances = @transactions.map do |act_txn|
balance += act_txn.value
{
date: txn_hash[:txn].date,
date: act_txn.date,
value: balance,
}
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
raise "Could not find account with ID #{account_id} for transaction #{@id}"
end
account.add_transaction(self, value, description)
account.add_transaction(AccountTransaction.new(self, value))
{
account_id: account_id,
value: value,