diff --git a/addons/sale/controllers/product_configurator.py b/addons/sale/controllers/product_configurator.py index 49572b64311..9a9d397b4dd 100644 --- a/addons/sale/controllers/product_configurator.py +++ b/addons/sale/controllers/product_configurator.py @@ -183,7 +183,7 @@ class ProductConfiguratorController(http.Controller): product_id = None list_price = product_template.price_compute('list_price')[product_template.id] - price = product_template.price or list_price + price = product_template.price if(product): product = product.with_context( no_variant_attributes_price_extra=[product_attribute_value.price_extra or 0.0 @@ -194,7 +194,7 @@ class ProductConfiguratorController(http.Controller): ) product_id = product.id list_price = product.price_compute('list_price')[product.id] - price = product.price or list_price + price = product.price display_name = [product_template.name] if filtered_product_template_attribute_values: diff --git a/addons/sale/views/sale_product_configurator_templates.xml b/addons/sale/views/sale_product_configurator_templates.xml index 5cd7317b09b..bf9df14a54d 100644 --- a/addons/sale/views/sale_product_configurator_templates.xml +++ b/addons/sale/views/sale_product_configurator_templates.xml @@ -19,7 +19,7 @@

a:contains('Tajine Saucisse')", + auto: true, +}, { + trigger: "a:contains('Configure a product')", + extra_trigger: ".o_field_widget[name=pricelist_id] > .o_external_button", // Wait for pricelist (onchange_partner_id) }, { trigger: '.o_product_configurator .o_input_dropdown input', run: 'click' @@ -129,4 +136,4 @@ tour.register('sale_product_configurator_advanced_tour', { run: function (){} //check }]); -}); \ No newline at end of file +}); diff --git a/addons/sale_management/static/tests/product_configurator_test_ui.js b/addons/sale_management/static/tests/product_configurator_test_ui.js index 39165e279a3..0f50c1b4440 100644 --- a/addons/sale_management/static/tests/product_configurator_test_ui.js +++ b/addons/sale_management/static/tests/product_configurator_test_ui.js @@ -16,7 +16,14 @@ tour.register('sale_product_configurator_tour', { trigger: ".o_list_button_add", extra_trigger: ".o_sale_order" }, { - trigger: "a:contains('Configure a product')" + trigger: ".o_required_modifier[name=partner_id] input", + run: "text Couscous Magique", +}, { + trigger: ".ui-menu-item > a:contains('Couscous Magique')", + auto: true, +}, { + trigger: "a:contains('Configure a product')", + extra_trigger: ".o_field_widget[name=pricelist_id] > .o_external_button", // Wait for pricelist (onchange_partner_id) }, { trigger: '.o_product_configurator .o_input_dropdown input', run: 'click' @@ -85,6 +92,16 @@ tour.register('sale_product_configurator_tour', { extra_trigger: 'div[name="order_line"]', in_modal: false, run: function (){} +}, { + trigger: '.o_readonly_modifier[name=amount_total]:contains("835")', + in_modal: false, + edition: 'community', + run: function (){} +}, { + trigger: '.o_readonly_modifier[name=amount_total]:contains("837")', + in_modal: false, + edition: 'enterprise', + run: function (){} }]); }); diff --git a/addons/sale_management/tests/test_sale_ui.py b/addons/sale_management/tests/test_sale_ui.py index dc323229ee7..7f147d0d574 100644 --- a/addons/sale_management/tests/test_sale_ui.py +++ b/addons/sale_management/tests/test_sale_ui.py @@ -8,14 +8,28 @@ class TestUi(odoo.tests.HttpCase): self.phantom_js("/web", "odoo.__DEBUG__.services['web_tour.tour'].run('sale_tour')", "odoo.__DEBUG__.services['web_tour.tour'].tours.sale_tour.ready", login="admin") def test_02_product_configurator(self): - # To be able to test the product configurator, admin user must have access to "variants and options" feature, so we give him the right group for that - self.env.ref('base.user_admin').write({'groups_id': [(4, self.env.ref('product.group_product_variant').id)]}) + # group_product_variant: use the product configurator + # group_sale_pricelist: display the pricelist to determine when it is changed after choosing + # the partner + self.env.ref('base.user_admin').write({ + 'groups_id': [ + (4, self.env.ref('product.group_product_variant').id), + (4, self.env.ref('product.group_sale_pricelist').id), + ], + }) self.phantom_js("/web", "odoo.__DEBUG__.services['web_tour.tour'].run('sale_product_configurator_tour')", "odoo.__DEBUG__.services['web_tour.tour'].tours.sale_product_configurator_tour.ready", login="admin") def test_03_product_configurator_advanced(self): - # To be able to test the product configurator, admin user must have access to "variants and options" feature, so we give him the right group for that - self.env.ref('base.user_admin').write({'groups_id': [(4, self.env.ref('product.group_product_variant').id)]}) + # group_product_variant: use the product configurator + # group_sale_pricelist: display the pricelist to determine when it is changed after choosing + # the partner + self.env.ref('base.user_admin').write({ + 'groups_id': [ + (4, self.env.ref('product.group_product_variant').id), + (4, self.env.ref('product.group_sale_pricelist').id), + ], + }) # Prepare relevant test data # This is not included in demo data to avoid useless noise