mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-02 20:15:22 +02:00
Multi-Currency Part 2 (#543)
* Support all currencies, handle outside DB * Remove currencies from seed * Fix account balance namespace * Set default currency on authentication * Cache currency instances * Implement multi-currency syncs with tests * Series fallback, passing tests * Fix conflicts * Make value group concrete class that works with currency values * Fix migration conflict * Update tests to expect multi-currency results * Update account list to use group method * Namespace updates * Fetch unknown exchange rates from API * Fix date range bug * Ensure demo data works without external API * Enforce cascades only at DB level
This commit is contained in:
parent
de0cba9fed
commit
110855d077
55 changed files with 1226 additions and 714 deletions
|
@ -23,6 +23,14 @@ class Money
|
|||
@currency = obj.is_a?(Money) ? obj.currency : Money::Currency.new(currency)
|
||||
end
|
||||
|
||||
# TODO: Replace with injected rate store
|
||||
def exchange_to(other_currency, date = Date.current)
|
||||
return self if @currency == Money::Currency.new(other_currency)
|
||||
rate = ExchangeRate.get_rate(@currency, other_currency, date)
|
||||
return nil if rate.nil?
|
||||
Money.new(@amount * rate.rate, other_currency)
|
||||
end
|
||||
|
||||
def cents_str(precision = @currency.default_precision)
|
||||
format_str = "%.#{precision}f"
|
||||
amount_str = format_str % @amount
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue