From 9612d36d1199accdc68a76c6c9befaf324d403d4 Mon Sep 17 00:00:00 2001 From: Valentin Chevalier Date: Fri, 12 May 2023 09:47:04 +0000 Subject: [PATCH] [FIX] sale_product_conf.: not store PNVAV on SOL if single PAV on PTAL sale_product_configurator: not store product no variant attribute value on the sale order line if there is a single product attribute value on the product template attribute line. Before this change, product no variant attribute values were not displayed on the sale order line if there was only one product attribute variant on the product template attribute line. This behavior was altered in 7e42f381c35f252bc25ce2acd5c2ed171fbce9e3 when product configurators were migrated to Owl. This commit ensures that when there is a single product attribute variant on the product template attribute line, product no variant attribute values are not displayed on the sale order line. closes odoo/odoo#121265 Signed-off-by: Valentin Chevalier --- .../product_configurator_dialog.js | 2 +- .../tests/tours/product_configurator_advanced_ui.js | 2 +- .../tests/test_sale_product_configurator.py | 13 +++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js b/addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js index 6abf9c3e729..b2286df0b21 100644 --- a/addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js +++ b/addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js @@ -400,7 +400,7 @@ export class ProductConfiguratorDialog extends Component { let noVariantCommands = [{ operation: "DELETE_ALL" }]; const noVariantPTAVIds = product.attribute_lines.filter( - ptal => ptal.create_variant === "no_variant" + ptal => ptal.create_variant === "no_variant" && ptal.attribute_values.length > 1 ).map(ptal => { return {id: ptal.selected_attribute_value_id}}); if (noVariantPTAVIds.length) noVariantCommands.push({ operation: "ADD_M2M", diff --git a/addons/test_sale_product_configurators/static/tests/tours/product_configurator_advanced_ui.js b/addons/test_sale_product_configurators/static/tests/tours/product_configurator_advanced_ui.js index 709db18b355..e13f6d1ba74 100644 --- a/addons/test_sale_product_configurators/static/tests/tours/product_configurator_advanced_ui.js +++ b/addons/test_sale_product_configurators/static/tests/tours/product_configurator_advanced_ui.js @@ -72,7 +72,7 @@ registry.category("web_tour.tours").add('sale_product_configurator_advanced_tour }, { trigger: 'button:contains(Confirm)', }, { - trigger: 'td.o_data_cell:contains("Customizable Desk (TEST) (Custom, White, PAV9, PAV5, PAV1)")', + trigger: 'td.o_data_cell:contains("Customizable Desk (TEST) (Custom, White, PAV9, PAV5, PAV1)"):not(:contains("PA9: Single PAV"))', isCheck: true, }, { trigger: 'td.o_data_cell:contains("Legs: Custom: Custom 1")', diff --git a/addons/test_sale_product_configurators/tests/test_sale_product_configurator.py b/addons/test_sale_product_configurators/tests/test_sale_product_configurator.py index ebc69dcda65..55153ae452a 100644 --- a/addons/test_sale_product_configurators/tests/test_sale_product_configurator.py +++ b/addons/test_sale_product_configurators/tests/test_sale_product_configurator.py @@ -72,6 +72,19 @@ class TestProductConfiguratorUi(HttpCase, TestProductConfiguratorCommon): 'attribute_id': product_attribute.id } for i in range(1, 11) for product_attribute in product_attributes]) + product_attribute_no_variant_single_pav = self.env['product.attribute'].create({ + 'name': 'PA9', + 'display_type': 'radio', + 'create_variant': 'no_variant' + }) + + self.env['product.attribute.value'].create({ + 'name': 'Single PAV', + 'attribute_id': product_attribute_no_variant_single_pav.id + }) + + product_attributes += product_attribute_no_variant_single_pav + product_template = self.product_product_custo_desk self.env['product.template.attribute.line'].create([{