class MudratProjector::Validator

Attributes

chart[RW]

Public Class Methods

new(projector: projector, chart: chart) click to toggle source
# File lib/mudrat_projector/validator.rb, line 5
def initialize projector: projector, chart: chart
  @projector = projector
  @chart     = chart
end

Public Instance Methods

must_be_balanced!() click to toggle source
# File lib/mudrat_projector/validator.rb, line 10
def must_be_balanced!
  unless projector.balanced?
    raise Projector::BalanceError, "Cannot project unless the accounts "\
      "are in balance"
  end
end
validate_account!(account_id, params) click to toggle source
# File lib/mudrat_projector/validator.rb, line 17
def validate_account! account_id, params
  if chart.exists? account_id
    raise Projector::AccountExists, "Account #{account_id.inspect} exists"
  end
  unless Account::TYPES.include? params[:type]
    raise Projector::InvalidAccount, "Account #{account_id.inspect} has "\
      "invalid type #{params[:type].inspect}"
  end
end
validate_transaction!(transaction) click to toggle source
# File lib/mudrat_projector/validator.rb, line 27
def validate_transaction! transaction
  if transaction.date < projector.from
    raise Projector::InvalidTransaction, "Transactions cannot occur before "\
      "projection start date. (#{projector.from} vs. #{transaction.date})"
  end
  unless transaction.balanced?
    raise Projector::BalanceError, "Credits and debit entries both "\
      "must be supplied; they cannot amount to zero"
  end
  if transaction.credits.empty? || transaction.debits.empty?
    raise Projector::InvalidTransaction, "You must supply at least a debit "\
      "and a credit on each transaction"
  end
end