class RockBooks::JournalReport

Attributes

context[RW]
report_data[RW]

Public Class Methods

new(report_data, report_context, filter = nil) click to toggle source
# File lib/rock_books/reports/journal_report.rb, line 15
def initialize(report_data, report_context, filter = nil)
  @report_data = report_data
  @context = report_context
end

Public Instance Methods

generate() click to toggle source
# File lib/rock_books/reports/journal_report.rb, line 21
def generate
  presentation_context = template_presentation_context.merge(fn_format_entry: method(:format_entry))
  ErbHelper.render_hashes('text/journal.txt.erb', report_data, presentation_context)
end

Private Instance Methods

format_date_and_account_amount(date, acct_amount) click to toggle source
# File lib/rock_books/reports/journal_report.rb, line 27
        def format_date_and_account_amount(date, acct_amount)
  "#{date}  #{format_acct_amount(acct_amount)}\n"
end
format_entry(entry) click to toggle source
# File lib/rock_books/reports/journal_report.rb, line 74
        def format_entry(entry)
  if entry.acct_amounts.size > 2
    format_entry_with_split(entry)
  else
    format_entry_no_split(entry)
  end
end
format_entry_first_acct_amount(entry) click to toggle source
# File lib/rock_books/reports/journal_report.rb, line 32
        def format_entry_first_acct_amount(entry)
  format_date_and_account_amount(entry.date, entry.acct_amounts.first)
end
format_entry_last_acct_amount(entry) click to toggle source
# File lib/rock_books/reports/journal_report.rb, line 37
        def format_entry_last_acct_amount(entry)
  format_date_and_account_amount(entry.date, entry.acct_amounts.last)
end
format_entry_no_split(entry) click to toggle source

Formats an entry like this, with entry description added on additional line(s) if it exists: 2018-05-21 $120.00 701 Office Supplies

# File lib/rock_books/reports/journal_report.rb, line 44
        def format_entry_no_split(entry)
  output = format_entry_last_acct_amount(entry)

  if entry.description && entry.description.length > 0
    output += entry.description
  end
  output
end
format_entry_with_split(entry) click to toggle source
Formats an entry like this, with entry description added on additional line(s) if it exists

2018-05-21 $120.00 95.00 701 Office Supplies

25.00     751  Gift to Customer
# File lib/rock_books/reports/journal_report.rb, line 57
        def format_entry_with_split(entry)
  output = StringIO.new
  output << format_entry_first_acct_amount(entry)
  indent = ' ' * 12

  entry.acct_amounts[1..-1].each do |acct_amount|
    output << indent << format_acct_amount(acct_amount) << "\n"
  end

  if entry.description && entry.description.length > 0
    output << entry.description
  end

  output.string
end