[REF] stock_account: _compute_average_price unit price rounding

Since the introduction of the stock valuation layer, unit_cost is
rounded in the company currency (actually it is NOT because of an ORM
bug that will be fixed later). With the test introduced at [0], fixing
that ORM bug shows we have a rounding issue (27.02 instead of 27) due to
the company currency rounding on the unit_cost. Since the logic of the
anglo saxon will probably always give some rounding issue (we always
return a price unit that will be multiply by the invoiced quantity)
recomputing a not rounded price unit by using the not rounded value with
the not rounded quantity seems a good enough compromise.

[0] 13a535a091

closes odoo/odoo#35384

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
This commit is contained in:
Simon Lejeune
2019-08-01 13:16:58 +00:00
parent 9197c0ad23
commit 0fc9a97d20
+1 -1
View File
@@ -585,7 +585,7 @@ class ProductProduct(models.Model):
qty_taken_on_candidate = min(qty_to_take_on_candidates, candidate_quantity)
qty_to_take_on_candidates -= qty_taken_on_candidate
tmp_value += qty_taken_on_candidate * candidate.unit_cost
tmp_value += qty_taken_on_candidate * (candidate.value / candidate.quantity)
if float_is_zero(qty_to_take_on_candidates, precision_rounding=candidate.uom_id.rounding):
break