* Balance reconcilations with new components * Fix materializer and test assumptions * Fix investment valuation calculations and recon display * Lint fixes * Balance series uses new component fields
32 lines
909 B
Ruby
32 lines
909 B
Ruby
class Balance < ApplicationRecord
|
|
include Monetizable
|
|
|
|
belongs_to :account
|
|
|
|
validates :account, :date, :balance, presence: true
|
|
validates :flows_factor, inclusion: { in: [ -1, 1 ] }
|
|
|
|
monetize :balance, :cash_balance,
|
|
:start_cash_balance, :start_non_cash_balance, :start_balance,
|
|
:cash_inflows, :cash_outflows, :non_cash_inflows, :non_cash_outflows, :net_market_flows,
|
|
:cash_adjustments, :non_cash_adjustments,
|
|
:end_cash_balance, :end_non_cash_balance, :end_balance
|
|
|
|
scope :in_period, ->(period) { period.nil? ? all : where(date: period.date_range) }
|
|
scope :chronological, -> { order(:date) }
|
|
|
|
def balance_trend
|
|
Trend.new(
|
|
current: end_balance_money,
|
|
previous: start_balance_money,
|
|
favorable_direction: favorable_direction
|
|
)
|
|
end
|
|
|
|
private
|
|
|
|
def favorable_direction
|
|
flows_factor == -1 ? "down" : "up"
|
|
end
|
|
end
|