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