Class: RockBooks::JournalEntry
- Inherits:
-
Struct
- Object
- Struct
- RockBooks::JournalEntry
- Defined in:
- lib/rock_books/documents/journal_entry.rb
Instance Attribute Summary collapse
-
#acct_amounts ⇒ Object
Returns the value of attribute acct_amounts.
-
#date ⇒ Object
Returns the value of attribute date.
-
#description ⇒ Object
Returns the value of attribute description.
-
#doc_short_name ⇒ Object
Returns the value of attribute doc_short_name.
-
#receipts ⇒ Object
Returns the value of attribute receipts.
Class Method Summary collapse
- .entries_acct_amounts(entries) ⇒ Object
- .entries_containing_account_code(entries, account_code) ⇒ Object
- .sort_entries_by_amount_descending!(entries) ⇒ Object
- .sort_entries_by_date!(entries) ⇒ Object
- .total_for_code(entries, account_code) ⇒ Object
Instance Method Summary collapse
- #acct_amounts_with_code(account_code) ⇒ Object
- #balanced? ⇒ Boolean
- #contains_account?(account_code) ⇒ Boolean
-
#initialize(date, acct_amounts = [], doc_short_name = nil, description = '', receipts = []) ⇒ JournalEntry
constructor
A new instance of JournalEntry.
-
#total_absolute_value ⇒ Object
Gets the absolute value of the positive (or negative) amounts in this entry.
- #total_amount ⇒ Object
- #total_for_code(account_code) ⇒ Object
Constructor Details
#initialize(date, acct_amounts = [], doc_short_name = nil, description = '', receipts = []) ⇒ JournalEntry
Returns a new instance of JournalEntry.
9 10 11 |
# File 'lib/rock_books/documents/journal_entry.rb', line 9 def initialize(date, acct_amounts = [], doc_short_name = nil, description = '', receipts = []) super end |
Instance Attribute Details
#acct_amounts ⇒ Object
Returns the value of attribute acct_amounts
6 7 8 |
# File 'lib/rock_books/documents/journal_entry.rb', line 6 def acct_amounts @acct_amounts end |
#date ⇒ Object
Returns the value of attribute date
6 7 8 |
# File 'lib/rock_books/documents/journal_entry.rb', line 6 def date @date end |
#description ⇒ Object
Returns the value of attribute description
6 7 8 |
# File 'lib/rock_books/documents/journal_entry.rb', line 6 def description @description end |
#doc_short_name ⇒ Object
Returns the value of attribute doc_short_name
6 7 8 |
# File 'lib/rock_books/documents/journal_entry.rb', line 6 def doc_short_name @doc_short_name end |
#receipts ⇒ Object
Returns the value of attribute receipts
6 7 8 |
# File 'lib/rock_books/documents/journal_entry.rb', line 6 def receipts @receipts end |
Class Method Details
.entries_acct_amounts(entries) ⇒ Object
14 15 16 17 18 19 20 |
# 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) ⇒ Object
23 24 25 |
# 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 |
.sort_entries_by_amount_descending!(entries) ⇒ Object
33 34 35 36 37 |
# 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) ⇒ Object
40 41 42 |
# 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) ⇒ Object
28 29 30 |
# 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 |
Instance Method Details
#acct_amounts_with_code(account_code) ⇒ Object
51 52 53 |
# 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? ⇒ Boolean
68 69 70 |
# File 'lib/rock_books/documents/journal_entry.rb', line 68 def balanced? total_amount == 0.0 end |
#contains_account?(account_code) ⇒ Boolean
73 74 75 |
# 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 ⇒ Object
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.
63 64 65 |
# 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 ⇒ Object
56 57 58 |
# 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) ⇒ Object
46 47 48 |
# 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 |