diff --git a/addons/point_of_sale/data/point_of_sale_demo.xml b/addons/point_of_sale/data/point_of_sale_demo.xml
index 2a13b95a59e..342de906143 100644
--- a/addons/point_of_sale/data/point_of_sale_demo.xml
+++ b/addons/point_of_sale/data/point_of_sale_demo.xml
@@ -464,6 +464,7 @@
Office combo
combo
+
diff --git a/addons/point_of_sale/models/product.py b/addons/point_of_sale/models/product.py
index 7046e87d78e..b223e5e5abd 100644
--- a/addons/point_of_sale/models/product.py
+++ b/addons/point_of_sale/models/product.py
@@ -35,6 +35,13 @@ class ProductTemplate(models.Model):
if not self.sale_ok:
self.available_in_pos = False
+ @api.constrains('available_in_pos')
+ def _check_combo_inclusions(self):
+ for product in self:
+ if not product.available_in_pos:
+ combo_name = self.env['pos.combo.line'].search([('product_id', 'in', product.product_variant_ids.ids)], limit=1).combo_id.name
+ if combo_name:
+ raise UserError(_('You must first remove this product from the %s combo') % combo_name)
class ProductProduct(models.Model):
_inherit = 'product.product'
diff --git a/addons/point_of_sale/views/pos_combo_view.xml b/addons/point_of_sale/views/pos_combo_view.xml
index 22c4f1e8ce5..efe96fa3f1e 100644
--- a/addons/point_of_sale/views/pos_combo_view.xml
+++ b/addons/point_of_sale/views/pos_combo_view.xml
@@ -13,7 +13,7 @@
-
+