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"
|
||||||
|
require "gnucash/account_transaction"
|
||||||
require "gnucash/book"
|
require "gnucash/book"
|
||||||
require "gnucash/transaction"
|
require "gnucash/transaction"
|
||||||
require "gnucash/value"
|
require "gnucash/value"
|
||||||
|
@ -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
|
||||||
|
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
|
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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user