diff --git a/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/views/One2ManyProductPicker/record.js b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/views/One2ManyProductPicker/record.js new file mode 100644 index 000000000..0755a1003 --- /dev/null +++ b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/views/One2ManyProductPicker/record.js @@ -0,0 +1,27 @@ +// Copyright 2021 Tecnativa - Alexandre Díaz +// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +odoo.define("web_widget_one2many_product_picker_sale_secondary_unit.One2ManyProductPickerRecord", function( + require +) { + "use strict"; + + const One2ManyProductPickerRecord = require("web_widget_one2many_product_picker.One2ManyProductPickerRecord"); + + One2ManyProductPickerRecord.include({ + + /** + * @override + */ + _setMasterUomMap: function () { + this._super.apply(this, arguments); + if ((this.state && this.state.data && this.state.data.secondary_uom_id) || + !this.state && this.recordSearch && this.recordSearch.sale_secondary_uom_id) { + _.extend(this.master_uom_map, { + "field_uom": "secondary_uom", + "field_uom_qty": "secondary_uom_qty", + "search_field_uom": "sale_secondary_uom_id", + }); + } + }, + }); +}); diff --git a/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/views/One2ManyProductPicker/renderer.js b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/views/One2ManyProductPicker/renderer.js new file mode 100644 index 000000000..7b23f02c0 --- /dev/null +++ b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/views/One2ManyProductPicker/renderer.js @@ -0,0 +1,21 @@ +// Copyright 2021 Tecnativa - Alexandre Díaz +// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +odoo.define( + "web_widget_one2many_product_picker_sale_secondary_unit.One2ManyProductPickerRenderer", + function(require) { + "use strict"; + + const One2ManyProductPickerRenderer = require("web_widget_one2many_product_picker.One2ManyProductPickerRenderer"); + + One2ManyProductPickerRenderer.include({ + _isEqualState: function(state_a, state_b) { + const res = this._super.apply(this, arguments); + const secondary_uom_id_a = + state_a.data.secondary_uom_id && state_a.data.secondary_uom_id.data.id; + const secondary_uom_id_b = + state_b.data.secondary_uom_id && state_b.data.secondary_uom_id.data.id; + return res && secondary_uom_id_a === secondary_uom_id_b; + }, + }); + } +); diff --git a/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/widgets/field_one2many_product_picker.js b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/widgets/field_one2many_product_picker.js new file mode 100644 index 000000000..01492f799 --- /dev/null +++ b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/js/widgets/field_one2many_product_picker.js @@ -0,0 +1,27 @@ +// Copyright 2021 Tecnativa - Alexandre Díaz +// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +odoo.define("web_widget_one2many_product_picker_sale_secondary_unit.FieldOne2ManyProductPicker", function( + require +) { + "use strict"; + + const FieldOne2ManyProductPicker = require("web_widget_one2many_product_picker.FieldOne2ManyProductPicker"); + + FieldOne2ManyProductPicker.include({ + // Model product.product fields + search_read_fields: _.unique([].concat(FieldOne2ManyProductPicker.prototype.search_read_fields, [ + "sale_secondary_uom_id", + ])), + + /** + * @private + * @returns {Object} + */ + _getDefaultOptions: function() { + const res = this._super.apply(this, arguments); + res.field_map.secondary_uom = "secondary_uom_id"; + res.field_map.secondary_uom_qty = "secondary_uom_qty"; + return res; + }, + }); +}); diff --git a/web_widget_one2many_product_picker_sale_secondary_unit/static/src/xml/one2many_product_picker.xml b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/xml/one2many_product_picker.xml index 8208ba096..88ea03be1 100644 --- a/web_widget_one2many_product_picker_sale_secondary_unit/static/src/xml/one2many_product_picker.xml +++ b/web_widget_one2many_product_picker_sale_secondary_unit/static/src/xml/one2many_product_picker.xml @@ -1,17 +1,18 @@