How to handle cash rounding / swedish rounding?

Rational

Cash or Swedish rounding “occurs when the minimum unit of account is smaller than the lowest physical denomination of currency.”
In some countries the smallest coin is bigger than the smallest unit of the currency.

At least the following nations are using cash rounding in slightly different
ways: Argentina, Australia, Belgium, Bosnia and Herzegovina, Brazil, Canada, Chile, Denmark, Finland, Hong Kong, Hungary, Republic of Ireland, Israel, Italy, Malaysia, Netherlands, Norway, New Zealand, People’s Republic of China, Singapore, South Africa, Sweden, Switzerland, Turkey, Vietnam.

Status Quo Tryton

The rounding (factor) defined on currency is used in general when showing
amounts. E.g. EUR has a general rounding of 0.01. This is the smallest unit of
the currency EUR and additionally it is equal to the smallest coin: one Cent.

But Belgium, Netherlands, Italy - all EUR - are removing the one and two Cent coins from general use. So the smallest coin in these nations is (or will be) five cent. Which means prices rounded to a multiple of five Cent will become usual.
In Switzerland the CHF currency does not have smaller coins than 0.05.

For now the amounts in invoices are rounded with the rounding defined in the
currency. The rounding in the currency is usually defined by the the smallest unit of the currency[1].

On payment in Tryton it is possible to manually accept a different rounding like cash rounding with the write-off functionality of the payment wizard. The small differences from rounding can be booked into a write-off journal.
So the invoice receivables can be reconciled with payment and write-off.

But this practice has two drawbacks in the above countries, when regular handling cash rounding:

  1. The rounded amount for a cash payment is not shown on the invoice.
    On time of cash payment it needs manual calculation for the rounding to
    the smallest coin.
  2. A manual write-off entry for the rounding differences is needed.

[1] Setting the smallest coin as the rounding precision of the currency would
screw up all accounting reports, because there is a lost of information and
huge rounding errors.

Proposal

  • Country: Add another rounding preference which defines the smallest coin
    used in the country. (lowest_physical_denomination)
  • Sale and invoice: Add another total amount field rounded by
    lowest_physical_denomination.
    The field is shown in forms and reports only, when a
    lowest_physical_denomination in the country of the party or company is given.
  • Invoice: pay wizard indicates the use of lowest_physical_denomination and
    adds automatically a write-off accounting move to the payment.

Is it a topic in your country, currency or business? Would the proposal help? What is missing?

issue1000 seems to indicate that setting the rounding on the currency is a working solution.

I do not think it is a property of the country but a combination of the country and currency.

I do not think it should be a new field. It is only needed on the report so it can be computed when rendering.

I think the automatic write-off is the right solution. But it should be part of a larger concept including the reconciliation.
There are different reconciliation case that should be managed with a write-off automatically:

  • cash rounding
  • currency exchange
  • too small amount (which will be too expensive to request)

In practice it does not work so well, because it rounds every monetary value in Tryton, not only cash payment related.
This produces wired small differences in cummulated reports like balance sheet and income statement.

It seems you are correct, because there are countries which have more than one official currency.

The value is also needed on payment for the wizard. But maybe it better to calculate it on demand instead of having a function field.

Some kind of discounts, too

It should not as everything is rounded. Indeed we already round but usually with 0.01 but for example for Loas Kip, we have already setup a rounding to 500.

I do not think it is needed on payment wizard. The payment wizard should try to get the best accurate amount but just transparently manage small accepted differences.

More precisely, I would include partial payment discount.

Yes, and this is used at least in Germany, too:
Prompt payment discount or cash discount.

The solution of issue7284 solves the “wired small differences in cumulated reports”.
Thanks!