diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index 7b543af7ec9..fae5b696b6c 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -368,6 +368,10 @@ class SaleOrder(models.Model): product.id not in product_ids and product.filtered_domain(self.env['product.product']._check_company_domain(line.company_id)) and product._is_variant_possible(parent_combination=combination) + and ( + not self.website_id.prevent_zero_price_sale + or product._get_contextual_price() + ) ) return random.sample(all_accessory_products, len(all_accessory_products)) diff --git a/addons/website_sale/models/website_snippet_filter.py b/addons/website_sale/models/website_snippet_filter.py index 9e8a1f8071a..23416dab329 100644 --- a/addons/website_sale/models/website_snippet_filter.py +++ b/addons/website_sale/models/website_snippet_filter.py @@ -170,6 +170,8 @@ class WebsiteSnippetFilter(models.Model): excluded_products |= current_template.product_variant_ids included_products = current_template.alternative_product_ids.product_variant_ids products = included_products - excluded_products + if website.prevent_zero_price_sale: + products = products.filtered(lambda p: p._get_contextual_price()) if products: domain = expression.AND([ domain, diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index cad30f3403e..1fe02017b73 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -215,7 +215,7 @@
- + diff --git a/addons/website_sale_comparison/views/website_sale_comparison_template.xml b/addons/website_sale_comparison/views/website_sale_comparison_template.xml index 1b10ff8cac3..9a405f2314a 100644 --- a/addons/website_sale_comparison/views/website_sale_comparison_template.xml +++ b/addons/website_sale_comparison/views/website_sale_comparison_template.xml @@ -163,7 +163,7 @@ class="btn btn-primary btn_cta"> Contact Us - + Add to Cart diff --git a/addons/website_sale_product_configurator/controllers/main.py b/addons/website_sale_product_configurator/controllers/main.py index 6516e181175..343ec003402 100644 --- a/addons/website_sale_product_configurator/controllers/main.py +++ b/addons/website_sale_product_configurator/controllers/main.py @@ -16,7 +16,9 @@ class WebsiteSaleProductConfiguratorController(Controller): product_template = product.product_tmpl_id combination = request.env['product.template.attribute.value'].browse(variant_values) has_optional_products = product.optional_product_ids.filtered( - lambda p: p._is_add_to_cart_possible(combination)) + lambda p: p._is_add_to_cart_possible(combination) + and (not request.website.prevent_zero_price_sale or p._get_contextual_price()) + ) already_configured = bool(combination) if not force_dialog and not has_optional_products and ( diff --git a/addons/website_sale_product_configurator/views/templates.xml b/addons/website_sale_product_configurator/views/templates.xml index fec659110e0..775ed93bcf7 100644 --- a/addons/website_sale_product_configurator/views/templates.xml +++ b/addons/website_sale_product_configurator/views/templates.xml @@ -133,7 +133,7 @@ - + diff --git a/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml b/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml index ef1c37026d7..0d7566f1166 100644 --- a/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml +++ b/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml @@ -2,7 +2,7 @@ - +
diff --git a/addons/website_sale_stock_wishlist/static/src/xml/product_availability.xml b/addons/website_sale_stock_wishlist/static/src/xml/product_availability.xml index 0f12e8605f2..3983a8908b2 100644 --- a/addons/website_sale_stock_wishlist/static/src/xml/product_availability.xml +++ b/addons/website_sale_stock_wishlist/static/src/xml/product_availability.xml @@ -2,7 +2,9 @@ -
+