odoo/odoo#158950
Created by fw-bot
- label
- odoo-dev:17.0-16.0-opw-3754297-recurring-order-with-option-change-plan-etvi-bSjT-fw
- head
- d3b3d1d835775706faa9493cdf8e46e90702cebe
- target
- 17.0
- merged
- 2 months ago by Arnaud Joset (arj)
- forward-port of
- odoo/odoo#157515 DETACHED (conflicts: None None)
[FW][FIX] sale_management: dispense temp cache records
**Current behavior:**
If a recurring sale order has an associated sale order option and the recurring plan of the order is changed, a trace back occurs.
**Expected behavior:**
The recurring plan can be changed as it ordinarily would.
**Steps to reproduce:**
1. Add a recurring product to a sale order
2. Add an optional recurring product to the order
3. Try to change the recurring plan of the order to encounter the trace back
**Cause of the issue:**
This flow causes some 'phantom' sale order lines to have their price recalculated (phantom because they have no price, qty, currency, nor order_id field values). During this recalculation a currency_id is expected either in the line itself or in the sale order it is a part of. Because there is no value for either of these, it fails the ensure_one() method in the sequence (0 vals, expects 1).
The phantom lines are created in the `sale.order.option` model in the `sale_management` module, in `_compute_price_unit()` and `_compute_discount()`.
**Fix:**
Call `invalidate_recorset(flush=False)` on these cached records at the end of the methods in which they are created.
Test added in https://github.com/odoo/enterprise/pull/58264
opw-3754297
Forward-Port-Of: odoo/odoo#157515