From 8dcda00ef827d0f4fc9d7396bfb1d3505172231c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=8E=E3=82=A6=E3=83=A9?= Date: Wed, 16 Nov 2022 17:24:05 +0000 Subject: [PATCH] [FIX] stock: unreserve by changing location on import/location view This PR Reverts the change in #105425 as the code is redundant see Discussion Fixes the issue and explain the details as it doesn't get triggered from inventory adjustment view but from current stock view in location X. Steps to reproduce: - Install inventory - Activate storage locations - Allow import in Locations/WH/Stock/Current Stock - Export the current stock of WH/Stock - Change the Location in the file to WH/Output - Import the modified file In the Location/Current stock view, the _load_records_write/create methods are bypassing the allowed_fields checks in the def create/write since this check only occurs when _is_inventory_mode() = True. This can cause inconsistencies if there are quants reserved. To solve the problem we set inventory_mode to True so that the method returns True and the checks are triggered (and prevent these inconsistencies). Task id: 3007499 closes odoo/odoo#106077 X-original-commit: 7240c5b19e9c06fe22a929ca3ec83115c29a5c7f Related: odoo/enterprise#34153 Signed-off-by: Tiffany Chang --- addons/stock/models/stock_quant.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/stock/models/stock_quant.py b/addons/stock/models/stock_quant.py index 0358bb195cf..0662cff9051 100644 --- a/addons/stock/models/stock_quant.py +++ b/addons/stock/models/stock_quant.py @@ -287,7 +287,11 @@ class StockQuant(models.Model): for value in values: if 'location_id' not in value: value['location_id'] = warehouse.lot_stock_id.id - return super()._load_records_create(values) + return super(StockQuant, self.with_context(inventory_mode=True))._load_records_create(values) + + def _load_records_write(self, values): + """ Only allowed fields should be modified """ + return super(StockQuant, self.with_context(inventory_mode=True))._load_records_write(values) @api.model def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True):