class RockBooks::ReceiptsReportData

Attributes

all_entries[R]
receipt_dir[R]

Public Class Methods

new(all_entries, receipt_dir) click to toggle source
# File lib/rock_books/reports/data/receipts_report_data.rb, line 6
def initialize(all_entries, receipt_dir)
  @all_entries = all_entries
  @receipt_dir = receipt_dir
end

Public Instance Methods

fetch() click to toggle source
# File lib/rock_books/reports/data/receipts_report_data.rb, line 12
def fetch
  missing_receipts = []
  existing_receipts = []

  # We will start out putting all filespecs in the unused array, and delete them as they are found in the transactions.
  unused_receipt_filespecs = all_receipt_filespecs

  all_entries.each do |entry|
    entry.receipts.each do |receipt|
      filespec = receipt_full_filespec(receipt)
      unused_receipt_filespecs.delete(filespec)
      list = (File.file?(filespec) ? existing_receipts : missing_receipts)
      list << { receipt: receipt, journal: entry.doc_short_name }
    end
  end

  {
      missing: missing_receipts,
      unused: unused_receipt_filespecs,
      existing: existing_receipts
  }
end

Private Instance Methods

all_receipt_filespecs() click to toggle source
# File lib/rock_books/reports/data/receipts_report_data.rb, line 36
        def all_receipt_filespecs
  Dir['receipts/**/*'].select { |s| File.file?(s) } \
      .sort \
      .map { |s| "./" +  s }  # Prepend './' to match the data
end
receipt_full_filespec(receipt_filespec) click to toggle source
# File lib/rock_books/reports/data/receipts_report_data.rb, line 43
        def receipt_full_filespec(receipt_filespec)
  File.join(receipt_dir, receipt_filespec)
end