1
0
Fork 0
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:
Zach Gollwitzer 2024-03-21 13:39:10 -04:00 committed by GitHub
parent de0cba9fed
commit 110855d077
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
55 changed files with 1226 additions and 714 deletions

View file

@ -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