-
- Downloads
[FIX] purchase_stock: consider product unit price precision
When changing the product price precision, this can lead to incorrect stock valuations. To reproduce the error: (Enable debug mode) 1. Go to Settings > Technical > Database Strucutre > Decimal Accuracy 2. Edit Product Price: - Digits: 4 3. Create a Product Category PC: - Costing Method: FIFO 4. Create a Product P: - Product Type: Storable Product - Product Category: PC 5. Create a RfQ with product P: - Quantity: 1000 - Unit Price: 0.035 6. Confirm Order, Receive Products, Validate 7. Click on Valuation Error: The total value is equal to $40 instead of $35. The calculation was done after rounding the unit price: $0.035 becomes $0.04, then 1000*0.04=$40. When confirming the RfQ, a stock move is created. To do so, the method `_get_stock_move_price_unit` is called. When validating the delivery, it recomputes the unit price thanks to method `_get_price_unit`. In both situation, and if the line has taxes, the method `compute_all` is called like this: ```python price_unit = line.taxes_id.with_context(round=False).compute_all(price_unit, currency=line.order_id.currency_id, quantity=1.0)['total_void'] ``` But here is the problem. In this method, total amount is computed with this line: ```python base = currency.round(price_unit * quantity) ``` However, `quantity` is equal to 1 and the multiplication is rounded using the currency precision. As a result, `base` is equal to $0.04. Then, all computations will use this value and will be incorrect. This fix applies the real quantity so `base` will have the correct value: ``` base = currency.round(price_unit * quantity) = currency.round(0.035 * 1000) = 35 ``` OPW-2472192 closes odoo/odoo#70080 X-original-commit: a57dc071 Signed-off-by:William Henrotin <Whenrow@users.noreply.github.com>
Showing
- addons/purchase_stock/models/purchase.py 5 additions, 2 deletionsaddons/purchase_stock/models/purchase.py
- addons/purchase_stock/models/stock.py 5 additions, 1 deletionaddons/purchase_stock/models/stock.py
- addons/purchase_stock/tests/test_fifo_price.py 45 additions, 0 deletionsaddons/purchase_stock/tests/test_fifo_price.py
Loading
Please register or sign in to comment