Comment 97 for bug 452854

Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

Hi everyone,

To finish the discussion on this issue, and specifically the remaining question of whether to have the invoice automatically handle additional "rounding moves" somehow, here is an explanation of the strategy that will be used in OpenERP.

We have considered all possible options, and came to the following conclusions:

 - OpenERP accounting is specific and does not need 'rounding moves' to be able
   to validate a multi-currency invoices with everything balanced (as opposed to other
   accounting systems that perhaps need it).
 - Accounting is a very sensitive and complex topic, but our goal is to try keeping the main
   process as simple as possible, and avoid bloating it with all kinds of exceptions and specific
   behaviors.
 - Specifically, we know that in many countries the law lets you handle these situations as you
   see fit. For example some "legally defined" charts of accounts do not even include dedicated
   accounts for "rounding adjustments" or "penny difference" as they were named here.
   This is why OpenERP will only implement the basic logic that is common to everyone in
   multi-currency.
 - I repeat: we want to be very clear for community and customers, OpenERP does not make errors in
   computing multi-currency invoices, and all moves are balanced.
 - Now for countries or companies that absolutely insist that the "penny difference"
   or "rounding adjustment" must be processed by the invoice itself and not to be handled by the
   normal reconciliation process (as for exchange rates write-offs), we will offer the same sort of
   solution as usual: this must be done in a separate module.

But in order to be able to cleanly implement a separate module as suggested in last item above, a refactoring of the current code is needed, to split the process in smaller chunks that will be easier to extend.
This refactoring cannot be considered for stable (5.0) of course, so it will be done in trunk (for 6.0).

However, we already want to provide an extension hook dedicated for this situation. Please see the definition of the hook that we propose in the patch in the next post. By default this hook is basically a "no-op", but you can use it to provide you own logic.
With this solution, you can directly write a module that implements everything you still wish to add. In fact you can even do this for 5.0! Your module could even add a property per company and currency to choose the account where you directly want to post the "penny difference" moves that you don't want to see on the payable account.

I think this concludes the discussion on this bug, and we can safely consider it fixed.