From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- .../static/src/js/product_matrix_configurator.js | 183 +++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 addons/purchase_product_matrix/static/src/js/product_matrix_configurator.js (limited to 'addons/purchase_product_matrix/static/src') diff --git a/addons/purchase_product_matrix/static/src/js/product_matrix_configurator.js b/addons/purchase_product_matrix/static/src/js/product_matrix_configurator.js new file mode 100644 index 00000000..907b2d4b --- /dev/null +++ b/addons/purchase_product_matrix/static/src/js/product_matrix_configurator.js @@ -0,0 +1,183 @@ +odoo.define('purchase.product_matrix_configurator', function (require) { + +var relationalFields = require('web.relational_fields'); +var FieldsRegistry = require('web.field_registry'); +var core = require('web.core'); +var _t = core._t; + +/** + * The purchase.product_matrix_configurator widget is a widget extending FieldMany2One + * It triggers the opening of the matrix edition when the product has multiple variants. + * + * + * !!! WARNING !!! + * + * This widget is only designed for Purchase Order Lines. + * !!! It should only be used on a product_template field !!! + */ +var MatrixConfiguratorWidget = relationalFields.FieldMany2One.extend({ + events: _.extend({}, relationalFields.FieldMany2One.prototype.events, { + 'click .o_edit_product_configuration': '_onEditProductConfiguration' + }), + + /** + * @override + */ + _render: function () { + this._super.apply(this, arguments); + if (this.mode === 'edit' && this.value && + (this._isConfigurableProduct())) { + 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 = $('