From 06fa22728bca9069dab6f212bbf8c8a9fd91e7b5 Mon Sep 17 00:00:00 2001 From: "Tiffany Chang (tic)" Date: Tue, 19 May 2020 12:13:45 +0000 Subject: [PATCH] [IMP] stock: update orderpoint view This commit updates the orderpoint (replenishment) view with the following changes: - group "Min Quantity", "Max Quantity", and "To Order" together - make preferred route "selection" only (note that widget="selection" does not work in list view => standard workaround applied) - renaming of order buttons: "Order" => "Order Once" and "Order Always" => "Automate Orders" - add a link to forecasted inventory report for the product (note this link will show even if there is no data to show in the report) - remove class decorates from replenishing related buttons ("Order Once", "Automate Orders", and "Snooze") Specifications 14 and 15 of inventory usability task. Task: 2206279 Related Enterprise PR: odoo/enterprise#10723 closes odoo/odoo#51681 Signed-off-by: Arnold Moyaux --- addons/stock/static/src/js/popover_widget.js | 30 +++++++++++++++++++ .../stock/static/src/xml/stock_orderpoint.xml | 5 ++++ addons/stock/views/stock_orderpoint_views.xml | 12 ++++---- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/addons/stock/static/src/js/popover_widget.js b/addons/stock/static/src/js/popover_widget.js index e3e3db85bab..c31b32a39e0 100644 --- a/addons/stock/static/src/js/popover_widget.js +++ b/addons/stock/static/src/js/popover_widget.js @@ -4,6 +4,8 @@ odoo.define('stock.popover_widget', function (require) { var AbstractField = require('web.AbstractField'); var core = require('web.core'); var QWeb = core.qweb; +var Context = require('web.Context'); +var data_manager = require('web.data_manager'); var fieldRegistry = require('web.field_registry'); /** @@ -36,6 +38,7 @@ var PopoverWidgetField = AbstractField.extend({ this.$el.html(QWeb.render(this.buttonTemplape, _.defaults(value, {color: this.color, icon: this.icon}))); this.$el.find('a').prop('special_click', true); this.$popover = $(QWeb.render(value.popoverTemplate || this.popoverTemplate, value)); + this.$popover.on('click', '.action_open_forecast', this._openForecast.bind(this)); this.$el.find('a').popover({ content: this.$popover, html: this.html, @@ -46,6 +49,33 @@ var PopoverWidgetField = AbstractField.extend({ }); }, + /** + * Redirect to the product graph view. + * (Based off of qty_at_date_widget.js method) + * + * @private + * @param {MouseEvent} event + * @returns {Promise} action loaded + */ + async _openForecast(ev) { + ev.stopPropagation(); + // Change action context to choose a specific date and product(s) + // As grid_anchor is set to now() by default in the data, we need + // to load the action first, change the context then launch it via do_action + // additional_context cannot replace a context value, only add new + const action = await data_manager.load_action('stock.report_stock_quantity_action_product'); + const additional_context = { + grid_anchor: this.recordData.delivery_date_grid, + search_default_warehouse_id: [this.recordData.warehouse_id.data.id], + search_default_below_warehouse: false + }; + action.context = new Context(action.context, additional_context); + action.domain = [ + ['product_id', '=', this.recordData.product_id.data.id] + ]; + return this.do_action(action); + }, + destroy: function () { this.$el.find('a').popover('dispose'); this._super.apply(this, arguments); diff --git a/addons/stock/static/src/xml/stock_orderpoint.xml b/addons/stock/static/src/xml/stock_orderpoint.xml index 0985d7ff022..a9155181300 100644 --- a/addons/stock/static/src/xml/stock_orderpoint.xml +++ b/addons/stock/static/src/xml/stock_orderpoint.xml @@ -29,6 +29,11 @@ + diff --git a/addons/stock/views/stock_orderpoint_views.xml b/addons/stock/views/stock_orderpoint_views.xml index 44bde0eed4c..71444f8154f 100644 --- a/addons/stock/views/stock_orderpoint_views.xml +++ b/addons/stock/views/stock_orderpoint_views.xml @@ -47,22 +47,22 @@ - + + + - - -