diff --git a/addons/website_sale/models/product.py b/addons/website_sale/models/product.py index 2f41c8cb384..0a22c37f4f3 100644 --- a/addons/website_sale/models/product.py +++ b/addons/website_sale/models/product.py @@ -207,6 +207,14 @@ class ProductTemplate(models.Model): product_template_image_ids = fields.One2many('product.image', 'product_tmpl_id', string="Extra Product Media", copy=True) + def _get_website_accessory_product(self): + domain = self.env['website'].sale_product_domain() + return self.accessory_product_ids.filtered_domain(domain) + + def _get_website_alternative_product(self): + domain = self.env['website'].sale_product_domain() + return self.alternative_product_ids.filtered_domain(domain) + def _has_no_variant_attributes(self): """Return whether this `product.template` has at least one no_variant attribute. diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index afc2d08094c..ef3de0ae059 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -301,7 +301,7 @@ class SaleOrder(models.Model): accessory_products = self.env['product.product'] for line in order.website_order_line.filtered(lambda l: l.product_id): combination = line.product_id.product_template_attribute_value_ids + line.product_no_variant_attribute_value_ids - accessory_products |= line.product_id.accessory_product_ids.filtered(lambda product: + accessory_products |= line.product_id.product_tmpl_id._get_website_accessory_product().filtered(lambda product: product.website_published and product not in products and product._is_variant_possible(parent_combination=combination) and diff --git a/addons/website_sale/models/website_snippet_filter.py b/addons/website_sale/models/website_snippet_filter.py index 1f1648c0f9c..686f0fd187f 100644 --- a/addons/website_sale/models/website_snippet_filter.py +++ b/addons/website_sale/models/website_snippet_filter.py @@ -146,7 +146,7 @@ class WebsiteSnippetFilter(models.Model): if current_template.exists(): excluded_products = website.sale_get_order().order_line.product_id.ids excluded_products.extend(current_template.product_variant_ids.ids) - included_products = current_template.product_variant_ids.accessory_product_ids.filtered('website_published').ids + included_products = current_template._get_website_accessory_product().filtered('website_published').ids products_ids = list(set(included_products) - set(excluded_products)) if products_ids: domain = expression.AND([ diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index dd6723ee121..774baa957f0 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -682,10 +682,11 @@