diff --git a/lib/gnucash.rb b/lib/gnucash.rb index a1d5287..cb0a8d0 100644 --- a/lib/gnucash.rb +++ b/lib/gnucash.rb @@ -1,4 +1,5 @@ require "gnucash/account" +require "gnucash/account_transaction" require "gnucash/book" require "gnucash/transaction" require "gnucash/value" diff --git a/lib/gnucash/account.rb b/lib/gnucash/account.rb index 6660dab..9aecc1e 100644 --- a/lib/gnucash/account.rb +++ b/lib/gnucash/account.rb @@ -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 diff --git a/lib/gnucash/account_transaction.rb b/lib/gnucash/account_transaction.rb new file mode 100644 index 0000000..32249b6 --- /dev/null +++ b/lib/gnucash/account_transaction.rb @@ -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 diff --git a/lib/gnucash/transaction.rb b/lib/gnucash/transaction.rb index 9b5d384..633bf2f 100644 --- a/lib/gnucash/transaction.rb +++ b/lib/gnucash/transaction.rb @@ -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,