diff --git a/addons/event_sale/static/src/js/event_configurator_widget.js b/addons/event_sale/static/src/js/event_configurator_widget.js index 469bf489f6c..ea7a5899389 100644 --- a/addons/event_sale/static/src/js/event_configurator_widget.js +++ b/addons/event_sale/static/src/js/event_configurator_widget.js @@ -74,7 +74,7 @@ ProductConfiguratorWidget.include({ * @override * @private */ - _onEditProductConfiguration: function () { + _onEditLineConfiguration: function () { if (this.recordData.event_ok) { var defaultValues = { default_product_id: this.recordData.product_id.data.id @@ -117,17 +117,19 @@ ProductConfiguratorWidget.include({ self.trigger_up('field_changed', { dataPointID: dataPointId, changes: result.eventConfiguration, - // VFE NOTE : Do we unselect the row after event config? - // event_sale tour is made to work without unselectRow - /*onSuccess: function (){ - self.getParent().unselectRow(); - }*/ + onSuccess: function () { + // Call post-init function. + self._onLineConfigured(); + } }); } else { if (!self.recordData.event_id || !self.recordData.event_ticket_id) { self.trigger_up('field_changed', { dataPointID: dataPointId, - changes: {product_id: false}, + changes: { + product_id: false, + name: '' + }, }); } } diff --git a/addons/event_sale/views/sale_order_views.xml b/addons/event_sale/views/sale_order_views.xml index ae50fdbd75b..2ec78e4747e 100644 --- a/addons/event_sale/views/sale_order_views.xml +++ b/addons/event_sale/views/sale_order_views.xml @@ -30,9 +30,6 @@ /> - - {'no_open': True} - diff --git a/addons/sale/models/product_template.py b/addons/sale/models/product_template.py index 55943f3ac13..2c3125f40ad 100644 --- a/addons/sale/models/product_template.py +++ b/addons/sale/models/product_template.py @@ -263,6 +263,7 @@ class ProductTemplate(models.Model): product_template = product_template.with_context(current_attributes_price_extra=[v.price_extra or 0.0 for v in combination]) list_price = product_template.price_compute('list_price')[product_template.id] price = product_template.price if pricelist else list_price + display_image = bool(product_template.image) filtered_combination = combination._without_no_variant_attributes() if filtered_combination: diff --git a/addons/sale/static/src/js/product_configurator_widget.js b/addons/sale/static/src/js/product_configurator_widget.js index 34721b9b17e..78e79cf74f0 100644 --- a/addons/sale/static/src/js/product_configurator_widget.js +++ b/addons/sale/static/src/js/product_configurator_widget.js @@ -17,7 +17,7 @@ var _t = core._t; */ var ProductConfiguratorWidget = relationalFields.FieldMany2One.extend({ events: _.extend({}, relationalFields.FieldMany2One.prototype.events, { - 'click .o_edit_product_configuration': '_onEditProductConfiguration' + 'click .o_edit_product_configuration': '_onEditConfiguration' }), /** @@ -26,13 +26,35 @@ var ProductConfiguratorWidget = relationalFields.FieldMany2One.extend({ _render: function () { this._super.apply(this, arguments); if (this.mode === 'edit' && this.value && - (this._isConfigurableProduct() || this._isConfigurableLine())) { - this._addConfigurationEditButton(); + (this._isConfigurableProduct() || this._isConfigurableLine())) { + this._addProductLinkButton(); + this._addConfigurationEditButton(); + } else if (this.mode === 'edit' && this.value) { + this._addProductLinkButton(); } else { this.$('.o_edit_product_configuration').hide(); } }, + /** + * Add button linking to product_id/product_template_id form. + */ + _addProductLinkButton: function () { + if (this.$('.o_external_button').length === 0) { + var $productLinkButton = $('