class ActsAsAccount::Journal
Public Class Methods
clear_current()
click to toggle source
# File lib/acts_as_account/journal.rb, line 17 def clear_current Thread.current[:acts_as_account_current] = nil end
current()
click to toggle source
# File lib/acts_as_account/journal.rb, line 13 def current Thread.current[:acts_as_account_current] ||= create! end
Public Instance Methods
transfer(amount, from_account, to_account, reference = nil, valuta = Time.now)
click to toggle source
# File lib/acts_as_account/journal.rb, line 28 def transfer(amount, from_account, to_account, reference = nil, valuta = Time.now) transaction do if (amount < 0) # change order if amount is negative amount, from_account, to_account = -amount, to_account, from_account end logger.debug { "ActsAsAccount::Journal.transfer amount: #{amount} from:#{from_account.id} to:#{to_account.id} reference:#{reference.class.name}(#{reference.id}) valuta:#{valuta}" } if logger # to avoid possible deadlocks we need to ensure that the locking order is always # the same therfore the sort by id. [from_account, to_account].sort_by(&:id).map(&:lock!) add_posting(-amount, from_account, to_account, reference, valuta) add_posting( amount, to_account, from_account, reference, valuta) end end
transfers()
click to toggle source
# File lib/acts_as_account/journal.rb, line 22 def transfers [].tap do |transfers| postings.each_slice(2) { |postings| transfers << Transfer.new(*postings) } end end
Private Instance Methods
add_posting(amount, account, other_account, reference, valuta)
click to toggle source
# File lib/acts_as_account/journal.rb, line 48 def add_posting(amount, account, other_account, reference, valuta) posting = postings.build( :amount => amount, :account => account, :other_account => other_account, :reference => reference, :valuta => valuta) account.class.update_counters account.id, :postings_count => 1, :balance => posting.amount posting.save(:validate => false) account.save(:validate => false) end