Phase 2 will build on #31 (Phase 1) to create a basic mechanism to allow foreign currency transactions.
Basically, in order to be properly additive, amounts on journal entries must of course always be in the same currency (asset type).
So, if a transaction happens in a foreign currency or other asset type, we'll have to convert that to the tenant's default asset.
For Phase 2, we can not worry about constant fluctuations in exchange rates just to build the basic infrastructure. Regularly refreshing the exchange rates or being able to lookup a historical exchange rate can wait until a hypothetical phase 3.
This free (for some limited usage) web service can provide the latest or historical rates:
https://openexchangerates.org/
[ ] Build schema to store Asset Type Exchange Rates
[ ] Create a tool (e.g. LinqPad script) to populate asset types exchange rates table
[ ] Extend Journal Entry Account Schema to support foreign currency amount and asset types and the utilized exchange rates
[ ] Update business logic for Journal Entry write operations to support foreign asset type conversion
[ ] Update API view models to support foreign asset types and conversions
Phase 2 will build on #31 (Phase 1) to create a basic mechanism to allow foreign currency transactions. Basically, in order to be properly additive, amounts on journal entries must of course always be in the same currency (asset type). So, if a transaction happens in a foreign currency or other asset type, we'll have to convert that to the tenant's default asset.
As an example, see https://support.accountingseed.com/hc/en-us/articles/360015011434-Example-Multi-Currency-Transactions
For Phase 2, we can not worry about constant fluctuations in exchange rates just to build the basic infrastructure. Regularly refreshing the exchange rates or being able to lookup a historical exchange rate can wait until a hypothetical phase 3.
This free (for some limited usage) web service can provide the latest or historical rates: https://openexchangerates.org/