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