From 091dcc31a5469275e4f9ccc041fee8fdaa1a4649 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Tue, 19 Mar 2024 14:07:39 +0000 Subject: [PATCH] [FIX] delivery: Prevent Deliveries product category deletion Purpose ======= Lots of tickets are issues when the end user deleted this product category, leading to the impossibility to install another carrier as this category is referenced by all the specific carriers products Ticket example: 3789116 closes odoo/odoo#158626 Taskid: 3802440 X-original-commit: 9383b6f4a5ef0394588c522efcc92e6f37a245cb Signed-off-by: Yannick Tivisse (yti) --- addons/delivery/i18n/delivery.pot | 8 ++++++++ addons/delivery/models/__init__.py | 1 + addons/delivery/models/product_category.py | 15 +++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 addons/delivery/models/product_category.py diff --git a/addons/delivery/i18n/delivery.pot b/addons/delivery/i18n/delivery.pot index 777f0b4668e..b836360736b 100644 --- a/addons/delivery/i18n/delivery.pot +++ b/addons/delivery/i18n/delivery.pot @@ -807,6 +807,14 @@ msgid "" "\n" msgstr "" +#. module: delivery +#: code:addons/delivery/models/product_category.py:0 +#, python-format +msgid "" +"You cannot delete the deliveries product category as it is used on the " +"delivery carriers products." +msgstr "" + #. module: delivery #: model:ir.actions.act_window,name:delivery.action_delivery_zip_prefix_list msgid "Zip Prefix" diff --git a/addons/delivery/models/__init__.py b/addons/delivery/models/__init__.py index dea7dd944c0..10e86329fef 100644 --- a/addons/delivery/models/__init__.py +++ b/addons/delivery/models/__init__.py @@ -3,6 +3,7 @@ from . import delivery_carrier from . import delivery_price_rule from . import delivery_zip_prefix +from . import product_category from . import res_partner from . import sale_order from . import sale_order_line diff --git a/addons/delivery/models/product_category.py b/addons/delivery/models/product_category.py new file mode 100644 index 00000000000..c45f8593b6f --- /dev/null +++ b/addons/delivery/models/product_category.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, models, _ +from odoo.exceptions import UserError + + +class ProductCategory(models.Model): + _inherit = "product.category" + + @api.ondelete(at_uninstall=False) + def _unlink_except_delivery_category(self): + delivery_category = self.env.ref('delivery.product_category_deliveries', raise_if_not_found=False) + if delivery_category and delivery_category in self: + raise UserError(_("You cannot delete the deliveries product category as it is used on the delivery carriers products."))