class Countir::Journal

Attributes

entries[RW]
memo[RW]
transaction_date[RW]

Public Class Methods

new(transaction_date:, memo:) click to toggle source
# File lib/countir/resources/journal.rb, line 23
def initialize(transaction_date:, memo:)
  self.transaction_date = transaction_date
  self.memo             = memo
  self.entries          = []
end
response_schema(data) click to toggle source
# File lib/countir/resources/journal.rb, line 62
def self.response_schema(data)
  data["journals"].map do |journal_data|
    journal = self.new(
      transaction_date: journal_data["transaction_date"],
      memo:             journal_data["memo"],
    )

    journal_data["entries"].each do |entry|
      journal.add_entry(
        account_code_id: entry["account_code_id"],
        debit_or_credit: entry["debit_or_credit"],
        price:           entry["price"],
      )
    end

    journal
  end
end

Public Instance Methods

add_entry(account_code_id:, debit_or_credit:, price:) click to toggle source
# File lib/countir/resources/journal.rb, line 29
def add_entry(account_code_id:, debit_or_credit:, price:)
  self.entries << Entry.new(
    account_code_id: account_code_id,
    debit_or_credit: debit_or_credit,
    price:           price
  )
end
to_h() click to toggle source
# File lib/countir/resources/journal.rb, line 55
def to_h
  { transaction_date: self.transaction_date,
    memo:             self.memo,
    entries:          self.entries.map(&:to_h),
  }
end
valid?() click to toggle source
# File lib/countir/resources/journal.rb, line 43
def valid?
  debit_price  = 0
  credit_price = 0

  self.entries.each do |entry|
    debit_price  += entry.price if entry.debit_or_credit  == "debit"
    credit_price += entry.price if entry.credit_or_credit == "credit"
  end

  debit_price == credit_price
end
validation!() click to toggle source
# File lib/countir/resources/journal.rb, line 37
def validation!
  unless self.valid?
    raise
  end
end