Currency
How to set up currency conversion
To set up currency, go to Global menu >> Administration >> Currency. Continue by clicking on the List of currencies. Hereby you get on a page with a list of both active and available currencies to add as illustrated below. Active currencies can only be selected from the list of available ones by clicking on "Add" button. There is no option of manually creating a new type that is not included in the list. Nevertheless, you can edit any parameters of any existing currency in the list. To remove a currency from the list of active ones, just click on "Delete" button.
To edit existing currency, you must make it active first. Continue by clicking on the "Edit" button on the same line. The following parameters can be edited: name, symbol. Moreover, you have to select for which projects is this currency used and whether it is the default one.
You can always change the project's currency from here or directly in project's settings as shown below.
Moreover, the Budgets plugin (incomes, expenses, personal costs, profit...) is now integrated with Currency. This makes working with currencies even simpler as you can select the required one using an easy drop-down list directly in Budgets, without the need to change the Currency settings on the global or project levels. In addition to that, the Budgets plugin has also been integrated with WBS in Cost Breakdown Structure.
Within the application, you have the capability to work with a vast array of over 350 different currencies.
However, it's important to note that currency synchronization via the European Central Bank (ECB) is currently limited to only 22 currencies.
This synchronization process occurs daily and covers all available currencies, which can place a significant demand on the application's resources. As a result, we have imposed restrictions on this functionality.
Here is a list of the 22 supported currencies:
- CZK
- EUR
- GBP
- HUF
- JPY
- RUB
- USD
- INR
- CNY
- PLN
- CAD
- MXN
- KZT
- TRY
- ZAR
- KRW
- AUD
- AED
- CHF
- BRL
- DKK
- MAD
If you find yourself working with a currency that falls outside of these 22 supported, there are several avenues to explore:
- Custom Exchange Rates Within the Application: You have the flexibility to manually input your custom exchange rates for this currency directly within the application. While this option is available, it's essential to understand that exchange rates fluctuate daily, potentially making this approach impractical for those who require precise and up-to-date data.
- Request Currency Addition: You can submit a formal request to have the specific currency added to the application's supported list. Please be aware that we have implemented limitations to ensure the efficient synchronization of currency data, as explained earlier. You can initiate such a request by following this link: https://rates.easysoftware.com/currencies/dashboard
- Utilize External Services: An alternative solution is to leverage external services like fixer.io, which offers an extensive range of currencies and enables clients to access the desired information. It's worth mentioning that some external services may necessitate the creation of your account and potential adjustments for seamless integration with our application.
Technical details
Easy currency is a module responsible for formatting and recalculation of entities which have price abstraction (are denoted by currency). Recalculation is supported on:
- Budget sheets -> internal and external rates are in currency defined on project
- CRM
- Budgets / cashflow
A currency could be set on a project. Currency can be managed in Administration section, where the admin could add currency from the list and additionally set formatting symbol for it. If no symbol is set, ISO code of currency will be used (3 letters). The currency will be display as a suffix after the amount. This could be changed in money module, where you can choose suffix or prefix in project settings.
To activate new currencies in system, it is required to run
bundle exec rake easyproject:currency_update_tables RAILS_ENV=production
and RESTART SERVER.
If a client wants to use old data with new currencies, he must set exchange rates between currencies and run :
bundle exec rake easyproject:currency_recalculate_all RAILS_ENV=production
or could be done in one step with:
bundle exec rake easyproject:currency_update_tables_and_recalculate RAILS_ENV=production
As mentioned, a restart is required after each command. When adding a new currency, it is strongly recommended that you run the recalculation on server shortly after adding the currency. Otherwise, new data in this currency will be inconsistent and incorrect. You can set exchange rates manually or synchronize them from ECB. To see the option to synchronize, go to rates setting tab of currency page and activate it. To synchronize it from ECB you must set working day in past and push synchronize.
Apart from 'show ECB sync button ' option, there is the option to lock exchange rates older than x months and formatting options for 'Rates by Currency' tab, where you can choose the day of month and number of months after and before the current month. Internally currency works by changing database tables by adding currency suffix to price columns. These currency columns are recalculated when the entity is saved according to exchange rates, price, currency, and date.