From a05f4e05b9f4df88948ac3dfc1522828b63bfb64 Mon Sep 17 00:00:00 2001
From: "Touati Djamel (otd)" <otd@odoo.com>
Date: Wed, 27 Oct 2021 13:12:32 +0000
Subject: [PATCH] [FIX] mrp: display a warning when archiving a used work
 center

If a work center is used in any routing, a warning will be displayed when it will be archived

opw-2658596

closes odoo/odoo#79087

Signed-off-by: Arnold Moyaux <arm@odoo.com>
---
 addons/mrp/i18n/mrp.pot             |  9 +++++++++
 addons/mrp/models/mrp_workcenter.py | 17 +++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/addons/mrp/i18n/mrp.pot b/addons/mrp/i18n/mrp.pot
index 0ba8dcb5763c..8a918dbcf76d 100644
--- a/addons/mrp/i18n/mrp.pot
+++ b/addons/mrp/i18n/mrp.pot
@@ -2709,6 +2709,15 @@ msgstr ""
 msgid "Not to restrict or prefer quants, but informative."
 msgstr ""
 
+#. module: mrp
+#: code:addons/mrp/models/mrp_workcenter.py:0
+#, python-format
+msgid ""
+"Note that archived work center(s): '%s' is/are still linked to active Bill "
+"of Materials, which means that operations can still be planned on it/them. "
+"To prevent this, deletion of the work center is recommended instead."
+msgstr ""
+
 #. module: mrp
 #: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_needaction_counter
 #: model:ir.model.fields,field_description:mrp.field_mrp_production__message_needaction_counter
diff --git a/addons/mrp/models/mrp_workcenter.py b/addons/mrp/models/mrp_workcenter.py
index d55aa9eee1c5..1e88dd0d1dbd 100644
--- a/addons/mrp/models/mrp_workcenter.py
+++ b/addons/mrp/models/mrp_workcenter.py
@@ -253,6 +253,23 @@ class MrpWorkcenter(models.Model):
                         remaining -= interval_minutes
         return False, 'Not available slot 700 days after the planned start'
 
+    def action_archive(self):
+        res = super().action_archive()
+        filtered_workcenters = ", ".join(workcenter.name for workcenter in self.filtered('routing_line_ids'))
+        if filtered_workcenters:
+            return {
+                'type': 'ir.actions.client',
+                'tag': 'display_notification',
+                'params': {
+                'title': _("Note that archived work center(s): '%s' is/are still linked to active Bill of Materials, which means that operations can still be planned on it/them. "
+                           "To prevent this, deletion of the work center is recommended instead.", filtered_workcenters),
+                'type': 'warning',
+                'sticky': True,  #True/False will display for few seconds if false
+                'next': {'type': 'ir.actions.act_window_close'},
+                },
+            }
+        return res
+
 
 class MrpWorkcenterProductivityLossType(models.Model):
     _name = "mrp.workcenter.productivity.loss.type"
-- 
GitLab