add AccountTransaction class for easier access to Transaction data from an Account's list of transactions
This commit is contained in:
parent
c749b17904
commit
4524d4e229
@ -1,4 +1,5 @@
|
||||
require "gnucash/account"
|
||||
require "gnucash/account_transaction"
|
||||
require "gnucash/book"
|
||||
require "gnucash/transaction"
|
||||
require "gnucash/value"
|
||||
|
@ -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
|
||||
|
14
lib/gnucash/account_transaction.rb
Normal file
14
lib/gnucash/account_transaction.rb
Normal 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
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user