From 2a18e26b019b1e729558c8b8a924ea4907af84b4 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Mon, 17 Jun 2019 15:30:11 +0000 Subject: [PATCH] [FIX] (event_)sale(_product_configurator: optional products and product access > allow product access from so lines > allow selling optional products with events and rentals (event_sale, enterprise/sale_rental) --- .../src/js/event_configurator_widget.js | 11 +-- addons/event_sale/views/sale_order_views.xml | 3 - .../src/js/product_configurator_widget.js | 79 +++++++++++++-- addons/sale/views/sale_views.xml | 1 + .../src/js/product_configurator_widget.js | 99 +++++++++---------- .../src/js/tours/sale_product_configurator.js | 18 ---- .../views/assets.xml | 1 - 7 files changed, 126 insertions(+), 86 deletions(-) delete mode 100644 addons/sale_product_configurator/static/src/js/tours/sale_product_configurator.js 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..ee63327073e 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,11 +117,10 @@ 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) { 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/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 = $('