Rounding configuration
DISCLAIMER
Please note that this core rounding functionality is still under the feature flag.
The rounding configuration is a functionality on the Silverfin platform that will make sure that rounding is driven from Silverfin core rather than being handled in the template set. However, users can still choose where to apply this rounding and where not, so different use-cases could be individually supported.
The functionality can be activated in your Client overview page by selecting the ‘Accounts’ menu, and by clicking on ‘Rounding configuration’.
Next, you will be able indicate in the drop-downs which P&L and balance sheet rounding accounts you want to allocate the rounding differences to. Once you’ve selected your accounts, simply hit ‘Save’.
Note that the selection will apply in current and future periods. Periods from the past will not be impacted.
In practice, decimals will be removed from every amount for every single trial balance account. As a result, the sum of all balance sheet accounts and profit and loss accounts will be out of balance. The balancing amounts/rounding difference will then be allocated to the indicated BS and P&L account, so that the total trial balance balances back to 0. This will be done both in templates, as well as in reports.
Reports
The rounding difference for reports will be presented automatically on the selected accounts.
Templates
For templates, we do not want to add rounding to every single template, so the rounding difference handling needs to be manually activated. This can be done by adding an additional liquid filter to the account collections.
The filter add_rounding_difference should be added in the templates were period.accounts is accessed (and where rounding is needed). Note that we should always include a rounding method. e.g. return_values_in_ones (or return_values_in_thousands) to actually present correct figures. The code should more or less look like this:
{% assign period_accounts_0y = period.accounts.return_values_in_ones | add_rounding_difference %}
{% assign period_accounts_1y = period.minus_1y.accounts.return_values_in_ones | add_rounding_difference %}
If we then want to print the total for a range of (rounded) accounts, we can then simply do:
{{ period_accounts_0y | range:"1" }}
Silverfin will apply this for all periods going forward until you make a change to the rounding accounts in a certain period.
In case you already have some rounding logic defined, it is important to remove this before implementing the core rounding. If this is not done, it can cause conflicts between the two configurations. Once these two actions are done, the new rounding should be applied to the template.
Point of attention
The add_rounding_difference filter will not work when doing calculations with accounts drops. Even multiplying the accounts drop with -1 for instance, will prevent the add_rounding_difference from working. Calculate with variables or use the invert filter instead.
Do NOT do:
{{ period.accounts.include_zeros.[chosen_rounding].Abc + period.accounts.include_zeros.[chosen_rounding].Def | add_rounding_difference }}
{{ -1*period.accounts.include_zeros.[chosen_rounding] | add_rounding_difference | range:'Abc' }}
instead do:
{% assign value_abc = period.accounts.include_zeros.[chosen_rounding] | add_rounding_difference | range:'Abc' %}
{% assign value_def = period.accounts.include_zeros.[chosen_rounding] | add_rounding_difference | range:'Def' %}
{{ value_abc+value_def }}
{{ period.accounts.include_zeros.[chosen_rounding] | add_rounding_difference | range:'Abc' | currency:0,invert:true }}
Display rounding difference
It is possible to display the exact rounding difference in a template. This could be done by using the p_and_l_rounding_difference or bs_rounding_difference method.
Rounding difference P&L: {{ period.accounts.p_and_l_rounding_difference }}
Rounding difference BS: {{ period.accounts.bs_rounding_difference }}
Output:
Rounding difference P&L: -25
Rounding difference BS: 3
Display rounding account
Within a template, it is also possible to display the account number to which the rounding differences are allocated:
P&L rounding difference account: {{ period.accounts.p_and_l_rounding_account.number }}
BS rounding difference account: {{ period.accounts.bs_rounding_account.number }}
Output:
P&L rounding difference account: 10.01.00.00.000
BS rounding difference account: 40.01.00.00.000
Updated over 2 years ago