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 @@ - + + + - - -