From 66d9dce9b6e6e65000ba0b62efcb153f2d3eec15 Mon Sep 17 00:00:00 2001
From: Arnold Moyaux <arm@odoo.com>
Date: Tue, 16 Feb 2021 14:47:25 +0000
Subject: [PATCH] [FIX] mrp, mrp_subcontracting: traceback during unistall

The unlink fail in __init__.py uninstall hook is managed, however
when it fail, the error is catch but the cursor is not rollback and
do not accept additional transaction. That result in a traceback at
uninstall.

opw-2453939

closes odoo/odoo#66278

Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
---
 addons/mrp/__init__.py                | 5 +++--
 addons/mrp_subcontracting/__init__.py | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/addons/mrp/__init__.py b/addons/mrp/__init__.py
index f2aacb129c76..e3fc61aab29b 100644
--- a/addons/mrp/__init__.py
+++ b/addons/mrp/__init__.py
@@ -37,12 +37,13 @@ def _create_warehouse_data(cr, registry):
 def uninstall_hook(cr, registry):
     env = api.Environment(cr, SUPERUSER_ID, {})
     warehouses = env["stock.warehouse"].search([])
-    subcontracting_routes = warehouses.mapped("pbm_route_id")
+    pbm_routes = warehouses.mapped("pbm_route_id")
     warehouses.write({"pbm_route_id": False})
     # Fail unlink means that the route is used somewhere (e.g. route_id on stock.rule). In this case
     # we don't try to do anything.
     try:
-        subcontracting_routes.unlink()
+        with env.cr.savepoint():
+            pbm_routes.unlink()
     except:
         pass
 
diff --git a/addons/mrp_subcontracting/__init__.py b/addons/mrp_subcontracting/__init__.py
index 276d3a48dbfd..abbc8a489ee4 100644
--- a/addons/mrp_subcontracting/__init__.py
+++ b/addons/mrp_subcontracting/__init__.py
@@ -14,6 +14,7 @@ def uninstall_hook(cr, registry):
     # Fail unlink means that the route is used somewhere (e.g. route_id on stock.rule). In this case
     # we don't try to do anything.
     try:
-        subcontracting_routes.unlink()
+        with env.cr.savepoint():
+            subcontracting_routes.unlink()
     except:
         pass
-- 
GitLab