1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-24 15:49:39 +02:00

Add Money and Money Series (#505)

* Add Money class

* Standardize creation of money series

* Formatting

* Fix test
This commit is contained in:
Zach Gollwitzer 2024-03-01 17:17:34 -05:00 committed by GitHub
parent 89ea12e9a1
commit 0fe9b6d34a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 228 additions and 161 deletions

View file

@ -28,29 +28,17 @@ class Account < ApplicationRecord
end
def balance_series(period)
filtered_balances = balances.in_period(period).order(:date)
return nil if filtered_balances.empty?
series_data = [ nil, *filtered_balances ].each_cons(2).map do |previous, current|
trend = current&.trend(previous)
{ data: current, trend: { amount: trend&.amount, direction: trend&.direction, percent: trend&.percent } }
end
last_balance = series_data.last[:data]
{
series_data: series_data,
last_balance: last_balance.balance,
trend: last_balance.trend(series_data.first[:data])
}
MoneySeries.new(
balances.in_period(period).order(:date),
{ trend_type: classification }
)
end
def valuation_series
series_data = [ nil, *valuations.order(:date) ].each_cons(2).map do |previous, current|
{ value: current, trend: current&.trend(previous) }
end
series_data.reverse_each
MoneySeries.new(
valuations.order(:date),
{ trend_type: classification, amount_accessor: :value }
)
end
def check_currency