module Countir::ResourceBasedMethods

Public Instance Methods

list_account_codes() click to toggle source
# File lib/countir/resource_based_methods.rb, line 3
def list_account_codes
  get('/account_codes', resource_class: Countir::AccountCode)
end
list_journals(offset: nil, limit: nil) click to toggle source
# File lib/countir/resource_based_methods.rb, line 7
def list_journals(offset: nil, limit: nil)
  params = {offset: offset, limit: limit}
  get('/journals', params, resource_class: Countir::Journal)
end
post_journal(transaction_date:, memo:, entries:) click to toggle source
# File lib/countir/resource_based_methods.rb, line 12
def post_journal(transaction_date:, memo:, entries:)
  unless entries.class == Array
    message = "entries should must be Array value"
    raise Countir::InvalidParameter.new(message)
  end

  entry_keys = [:account_code_id, :debit_or_credit, :price]

  entries_has_valid_keys = entries.map do |entry|
    entry.keys.sort == entry_keys
  end.all?

  unless entries_has_valid_keys
    message = sprintf("entry should have keys [%s]", entry_keys.join(?,))
    raise Countir::InvalidParameter.new(message)
  end

  params = {
    transaction_date: transaction_date,
    memo: memo,
    # entries: entry_keys.zip(*entries.valies_at(entry_keys)).to_h,
    entries: entries,
    images: [],
  }

  post('/journals', params)
end