class RockBooks::JournalEntry

Public Class Methods

entries_acct_amounts(entries) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 14
def self.entries_acct_amounts(entries)
  acct_amounts = entries.each_with_object([]) do |entry, acct_amounts|
    acct_amounts << entry.acct_amounts
  end
  acct_amounts.flatten!
  acct_amounts
end
entries_containing_account_code(entries, account_code) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 23
def self.entries_containing_account_code(entries, account_code)
  entries.select { |entry| entry.contains_account?(account_code) }
end
new(date, acct_amounts = [], doc_short_name = nil, description = '', receipts = []) click to toggle source
Calls superclass method
# File lib/rock_books/documents/journal_entry.rb, line 9
def initialize(date, acct_amounts = [], doc_short_name = nil, description = '', receipts = [])
  super
end
sort_entries_by_amount_descending!(entries) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 33
def self.sort_entries_by_amount_descending!(entries)
  entries.sort_by! do |entry|
    [-entry.total_absolute_value, entry.doc_short_name]
    end
end
sort_entries_by_date!(entries) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 40
def self.sort_entries_by_date!(entries)
  entries.sort_by! { |entry| [entry.date, entry.doc_short_name] }
end
total_for_code(entries, account_code) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 28
def self.total_for_code(entries, account_code)
  entries.map { |entry| entry.total_for_code(account_code)}.sum
end

Public Instance Methods

acct_amounts_with_code(account_code) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 51
def acct_amounts_with_code(account_code)
  AcctAmount.filter(acct_amounts, AcctAmountFilters.account_code(account_code))
end
balanced?() click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 68
def balanced?
  total_amount == 0.0
end
contains_account?(account_code) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 73
def contains_account?(account_code)
  acct_amounts.any? { |acct_amount| acct_amount.code == account_code }
end
total_absolute_value() click to toggle source

Gets the absolute value of the positive (or negative) amounts in this entry. This is used to sort by transaction amount, since total of all amounts will always be zero.

# File lib/rock_books/documents/journal_entry.rb, line 63
def total_absolute_value
  acct_amounts.map(&:amount).select { |n| n.positive? }.sum
end
total_amount() click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 56
def total_amount
  acct_amounts.inject(0) { |sum, aa| sum + aa.amount }
end
total_for_code(account_code) click to toggle source
# File lib/rock_books/documents/journal_entry.rb, line 46
def total_for_code(account_code)
  acct_amounts_with_code(account_code).map(&:amount).sum
end