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
- .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 38 |
# 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 entries.reverse! 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
46 47 48 |
# File 'lib/rock_books/documents/journal_entry.rb', line 46 def acct_amounts_with_code(account_code) AcctAmount.filter(acct_amounts, AcctAmountFilters.account_code(account_code)) end |
#balanced? ⇒ Boolean
63 64 65 |
# File 'lib/rock_books/documents/journal_entry.rb', line 63 def balanced? total_amount == 0.0 end |
#contains_account?(account_code) ⇒ Boolean
68 69 70 |
# File 'lib/rock_books/documents/journal_entry.rb', line 68 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.
58 59 60 |
# File 'lib/rock_books/documents/journal_entry.rb', line 58 def total_absolute_value acct_amounts.map(&:amount).select { |n| n.positive? }.sum end |
#total_amount ⇒ Object
51 52 53 |
# File 'lib/rock_books/documents/journal_entry.rb', line 51 def total_amount acct_amounts.inject(0) { |sum, aa| sum + aa.amount } end |
#total_for_code(account_code) ⇒ Object
41 42 43 |
# File 'lib/rock_books/documents/journal_entry.rb', line 41 def total_for_code(account_code) acct_amounts_with_code(account_code).map(&:amount).sum end |