From 80020e8c7bcec1098f65ff5a7176f2a122155cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Mon, 3 May 2021 22:01:05 +0200 Subject: [PATCH 1/4] [FIX] web_widget_one2many_product_picker: Set product_id using the context --- .../src/js/views/One2ManyProductPicker/record.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js b/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js index 91aea409e..508270deb 100644 --- a/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js +++ b/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js @@ -249,23 +249,21 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRecord", fu var context = {}; context["default_" + this.options.basicFieldParams.relation_field] = this.options.basicFieldParams.state.id || null; + context["default_" + this.options.fieldMap.product] = + this.recordSearch.id || null; return context; }, /** * Forced data used in virtual states. - * Be careful with the onchanges sequence. Think as user interaction, not as CRUD operation. + * Be careful with the onchanges sequence. Think as user interaction ("ADD", "DELETE", ... commands), not as CRUD operation. * * @private * @returns {Object} */ - _getInternalVirtualRecordData: function () { - var data = {}; - data[this.options.fieldMap.product] = { - operation: 'ADD', - id: this.recordSearch.id, - }; - return data; + _getInternalVirtualRecordData: function() { + // To be overwritten + return {}; }, /** From 37992bb486055d3766b72857940e517c1e314904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Tue, 4 May 2021 15:09:09 +0200 Subject: [PATCH 2/4] [FIX] web_widget_one2many_product_picker: Confirm changes --- .../widgets/field_one2many_product_picker.js | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js b/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js index 0021fd3d3..d3d1acbac 100644 --- a/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js +++ b/web_widget_one2many_product_picker/static/src/js/widgets/field_one2many_product_picker.js @@ -588,17 +588,24 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun model.setPureVirtual(evt.data.id, false); if (this.options.auto_save) { - // Dont trigger state update + // Don't notifyChange because we already have all the onchange data for 1 qty this._setValue( {operation: "ADD", id: evt.data.id}, {notifyChange: false} ).then(function () { self.parent_controller.saveRecord(undefined, {stayInEdit: true}).then(function () { - self.renderer.updateState(model.get(self.parent_controller.handle).data[self.name], {force: true}); - if (evt.data.callback) { - evt.data.callback(); - } + // When call 'saveRecord' with 'stayInEdit' the changes aren't confirmed so we force it + var parent_record = model.get(self.parent_controller.handle); + self.parent_controller.renderer.confirmChange(parent_record, parent_record.id, [self.name]).then(function() { + // Second call to callback method. + // We call two times because the first is for fast update + // this second is the update after parent changes + if (evt.data.callback) { + evt.data.callback(); + } + }); }); + // First call to callback method if (evt.data.callback) { evt.data.callback(); } @@ -620,17 +627,24 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun _doUpdateQuickRecord: function (id, data, callback) { if (this.options.auto_save) { var self = this; - // Dont trigger state update + var model = this.parent_controller.model; this._setValue( {operation: "UPDATE", id: id, data: data}, - {notifyChange: false} + {notifyChange: true} ).then(function () { self.parent_controller.saveRecord(undefined, {stayInEdit: true}).then(function () { - self.renderer.updateState(self.parent_controller.model.get(self.parent_controller.handle).data[self.name], {force: true}); - if (callback) { - callback(); - } + // When call 'saveRecord' with 'stayInEdit' the changes aren't confirmed so we force it + var parent_record = model.get(self.parent_controller.handle); + self.parent_controller.renderer.confirmChange(parent_record, parent_record.id, [self.name]).then(function() { + // Second call to callback method. + // We call two times because the first is for fast update + // this second is the update after parent changes + if (callback) { + callback(); + } + }); }); + // First call to callback method if (callback) { callback(); } From c094c5853a826f134d671f1037585ca82ad72054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Tue, 4 May 2021 15:13:54 +0200 Subject: [PATCH 3/4] [FIX] web_widget_one2many_product_picker: Redraw records in 'Lines' section --- .../static/src/js/views/One2ManyProductPicker/renderer.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js b/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js index 4cbc64fa8..b44bc6e5c 100644 --- a/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js +++ b/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/renderer.js @@ -142,11 +142,6 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer", } } - if (this.search_group.name === "main_lines") { - _.invoke(to_destroy, "destroy"); - return $.when(); - } - // If doesn't exists other records with the same product, we need // create a 'pure virtual' record again. for (var index_destroy in to_destroy) { From 34a98894193208245324129c16e6877f140067bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Tue, 4 May 2021 15:14:13 +0200 Subject: [PATCH 4/4] [IMP] web_widget_one2many_product_picker: ES Translations --- web_widget_one2many_product_picker/i18n/es.po | 26 ++++++++++++------- .../web_widget_one2many_product_picker.pot | 14 +++++++++- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/web_widget_one2many_product_picker/i18n/es.po b/web_widget_one2many_product_picker/i18n/es.po index c7c00276b..44b1b8ac4 100644 --- a/web_widget_one2many_product_picker/i18n/es.po +++ b/web_widget_one2many_product_picker/i18n/es.po @@ -6,15 +6,16 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-02-17 13:45+0000\n" +"POT-Creation-Date: 2021-05-04 13:10+0000\n" +"PO-Revision-Date: 2021-05-04 17:17+0200\n" "Last-Translator: claudiagn \n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.2\n" +"X-Generator: Poedit 2.4.1\n" #. module: web_widget_one2many_product_picker #. openerp-web @@ -37,19 +38,24 @@ msgstr "Todo" msgid "Groups" msgstr "Grupos" +#. module: web_widget_one2many_product_picker +#: model:ir.model,name:web_widget_one2many_product_picker.model_ir_http +msgid "HTTP Routing" +msgstr "Enrutamiento HTTP" + #. module: web_widget_one2many_product_picker #. openerp-web #: code:addons/web_widget_one2many_product_picker/static/src/xml/one2many_product_picker.xml:43 #, python-format msgid "Lines" -msgstr "Línias" +msgstr "Líneas" #. module: web_widget_one2many_product_picker #. openerp-web #: code:addons/web_widget_one2many_product_picker/static/src/xml/one2many_product_picker.xml:67 #, python-format msgid "Load More" -msgstr "Carga más" +msgstr "Cargar más" #. module: web_widget_one2many_product_picker #. openerp-web @@ -58,6 +64,11 @@ msgstr "Carga más" msgid "Price:" msgstr "Precio:" +#. module: web_widget_one2many_product_picker +#: model:ir.model,name:web_widget_one2many_product_picker.model_product_pricelist_item +msgid "Pricelist Item" +msgstr "Elemento de tarifa" + #. module: web_widget_one2many_product_picker #: model:ir.model,name:web_widget_one2many_product_picker.model_product_product msgid "Product" @@ -114,10 +125,7 @@ msgstr "Imagen variante media (calculada)" #. module: web_widget_one2many_product_picker #. openerp-web -#: code:addons/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js:363 +#: code:addons/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js:361 #, python-format msgid "[No widget %s]" msgstr "[Sin widget %s]" - -#~ msgid "Add 1" -#~ msgstr "Añadir 1" diff --git a/web_widget_one2many_product_picker/i18n/web_widget_one2many_product_picker.pot b/web_widget_one2many_product_picker/i18n/web_widget_one2many_product_picker.pot index c21953d3c..9dd56487e 100644 --- a/web_widget_one2many_product_picker/i18n/web_widget_one2many_product_picker.pot +++ b/web_widget_one2many_product_picker/i18n/web_widget_one2many_product_picker.pot @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-05-04 13:10+0000\n" +"PO-Revision-Date: 2021-05-04 13:10+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -34,6 +36,11 @@ msgstr "" msgid "Groups" msgstr "" +#. module: web_widget_one2many_product_picker +#: model:ir.model,name:web_widget_one2many_product_picker.model_ir_http +msgid "HTTP Routing" +msgstr "" + #. module: web_widget_one2many_product_picker #. openerp-web #: code:addons/web_widget_one2many_product_picker/static/src/xml/one2many_product_picker.xml:43 @@ -55,6 +62,11 @@ msgstr "" msgid "Price:" msgstr "" +#. module: web_widget_one2many_product_picker +#: model:ir.model,name:web_widget_one2many_product_picker.model_product_pricelist_item +msgid "Pricelist Item" +msgstr "" + #. module: web_widget_one2many_product_picker #: model:ir.model,name:web_widget_one2many_product_picker.model_product_product msgid "Product" @@ -103,7 +115,7 @@ msgstr "" #. module: web_widget_one2many_product_picker #. openerp-web -#: code:addons/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js:363 +#: code:addons/web_widget_one2many_product_picker/static/src/js/views/One2ManyProductPicker/record.js:361 #, python-format msgid "[No widget %s]" msgstr ""