Class: RockBooks::JournalEntry

Inherits:
Struct
  • Object
show all
Defined in:
lib/rock_books/documents/journal_entry.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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_amountsObject

Returns the value of attribute acct_amounts

Returns:

  • (Object)

    the current value of acct_amounts



6
7
8
# File 'lib/rock_books/documents/journal_entry.rb', line 6

def acct_amounts
  @acct_amounts
end

#dateObject

Returns the value of attribute date

Returns:

  • (Object)

    the current value of date



6
7
8
# File 'lib/rock_books/documents/journal_entry.rb', line 6

def date
  @date
end

#descriptionObject

Returns the value of attribute description

Returns:

  • (Object)

    the current value of description



6
7
8
# File 'lib/rock_books/documents/journal_entry.rb', line 6

def description
  @description
end

#doc_short_nameObject

Returns the value of attribute doc_short_name

Returns:

  • (Object)

    the current value of doc_short_name



6
7
8
# File 'lib/rock_books/documents/journal_entry.rb', line 6

def doc_short_name
  @doc_short_name
end

#receiptsObject

Returns the value of attribute receipts

Returns:

  • (Object)

    the current value of 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, )
  entries.select { |entry| entry.contains_account?() }
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, )
  entries.map { |entry| entry.total_for_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()
  AcctAmount.filter(acct_amounts, AcctAmountFilters.())
end

#balanced?Boolean

Returns:

  • (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

Returns:

  • (Boolean)


73
74
75
# File 'lib/rock_books/documents/journal_entry.rb', line 73

def contains_account?()
  acct_amounts.any? { |acct_amount| acct_amount.code ==  }
end

#total_absolute_valueObject

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_amountObject



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()
  acct_amounts_with_code().map(&:amount).sum
end