tamaloa/direktkreditverwaltung

View on GitHub
app/models/contract_version.rb

Summary

Maintainability
A
0 mins
Test Coverage
class ContractVersion < ActiveRecord::Base
  belongs_to :contract

  validates_presence_of :interest_rate, :start, :version
  validate :sane_interest_rate

  def sane_interest_rate
    interest_form_input = interest_rate_before_type_cast.to_s
    errors.add(:interest_rate, 'Zinssatz ungültig. Eingabeformat z.B.: 1,5% als 0.015 eingeben') unless interest_form_input.match(/(\d)\.(\d)*/)
    interest = interest_rate.to_f
    errors.add(:interest_rate, 'Zinssatz ungültig. Muss zwischen 0 und 9% liegen.') unless (0.00 .. 0.09).cover?(interest)
  end

  # wrap missing concept for fixed-term versus open-ended contract-versions
  # - fixed-term-contracts are specified by end_date, duration_months or duration_year
  # - open ended contracts are specified by a notice_period
  def is_open_ended
    return (end_date.blank? && duration_months.blank? && duration_years.blank?)
  end

  def calculate_end_date
    if end_date
      date = end_date
    else
      date = start
      date = date >> duration_months.to_i
      date = date >> (duration_years.to_i * 12)
    end
    date
  end
end