diff --git a/addons/stock/i18n/stock.pot b/addons/stock/i18n/stock.pot index 5faad4e2547..09ce03e4859 100644 --- a/addons/stock/i18n/stock.pot +++ b/addons/stock/i18n/stock.pot @@ -6495,6 +6495,13 @@ msgstr "" msgid "You need to supply a Lot/Serial number for product %s." msgstr "" +#. module: stock +#: code:addons/stock/models/res_config_settings.py:70 +#, python-format +msgid "You should not remove the 'lots and serial numbers' option while the following products are still tracked by lot or serial number:\n" +" %s" +msgstr "" + #. module: stock #: code:addons/stock/models/product.py:394 #: code:addons/stock/models/product.py:538 diff --git a/addons/stock/models/res_config_settings.py b/addons/stock/models/res_config_settings.py index ebf7d339d39..b39b1a6beaa 100644 --- a/addons/stock/models/res_config_settings.py +++ b/addons/stock/models/res_config_settings.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import api, fields, models +from odoo import api, fields, models, _ +from odoo.exceptions import UserError class ResConfigSettings(models.TransientModel): @@ -64,6 +65,13 @@ class ResConfigSettings(models.TransientModel): def _onchange_group_stock_production_lot(self): if not self.group_stock_production_lot: self.group_lot_on_delivery_slip = False + tracked_products = self.env['product.template'].search([('tracking', 'in', ['lot', 'serial']),]) + if not self.group_stock_production_lot and tracked_products: + names = ", ".join(tracked_products.mapped('display_name') if len(tracked_products) <= 10 + else tracked_products[:10].mapped('display_name') + ["..."]) + raise UserError(_("You should not remove the 'lots and serial numbers' " + "option while the following products are still tracked by lot " + "or serial number:\n %s") % names) @api.onchange('group_stock_adv_location') def onchange_adv_location(self):