summaryrefslogtreecommitdiff
path: root/addons/stock/static
diff options
context:
space:
mode:
authorArnold Moyaux <arm@odoo.com>2020-03-17 13:47:15 +0000
committerArnold Moyaux <arm@odoo.com>2020-04-22 07:52:45 +0000
commit943da6df0f1d39e8e10869b25c5ba8cc13a2aa54 (patch)
treea9bcb2724d00e3fbc13d7feb6635e46279ae2c83 /addons/stock/static
parentb6fe6de9e9638a2d7db2861e976a7aa720d947f1 (diff)
[IMP] stock, purchase_stock, mrp: Replenishment Report
New report to easily order missing products in each warehouse. Orderpoint have a new type: 'manual'. Manual orderpoint are not trigger by the scheduler but the user could create replenishment from the report directly. The report use the forecast report in order to detect missing quantity for today (it does not search depending the lead time for each product warehouse due to lake of performance). It compares missing quantity with incoming RFQ and other ongoing orderpoint. If it still missing a new entry for replenihsment is created (it's also automaticaly deleted if the replenihsment has been done another way). Task: 2161378
Diffstat (limited to 'addons/stock/static')
-rw-r--r--addons/stock/static/src/js/stock_orderpoint_list_controller.js74
-rw-r--r--addons/stock/static/src/js/stock_orderpoint_list_model.js46
-rw-r--r--addons/stock/static/src/js/stock_orderpoint_list_view.js21
-rw-r--r--addons/stock/static/src/xml/stock_orderpoint.xml (renamed from addons/stock/static/src/xml/stock_orderpoint_lead_days_widget.xml)12
4 files changed, 153 insertions, 0 deletions
diff --git a/addons/stock/static/src/js/stock_orderpoint_list_controller.js b/addons/stock/static/src/js/stock_orderpoint_list_controller.js
new file mode 100644
index 00000000000..4ad0750815c
--- /dev/null
+++ b/addons/stock/static/src/js/stock_orderpoint_list_controller.js
@@ -0,0 +1,74 @@
+odoo.define('stock.StockOrderpointListController', function (require) {
+"use strict";
+
+var core = require('web.core');
+var ListController = require('web.ListController');
+
+var qweb = core.qweb;
+
+
+var StockOrderpointListController = ListController.extend({
+
+ // -------------------------------------------------------------------------
+ // Public
+ // -------------------------------------------------------------------------
+
+ /**
+ * @override
+ */
+ renderButtons: function () {
+ this._super.apply(this, arguments);
+ this.$buttons.find('.o_button_import').addClass('d-none');
+ this.$buttons.find('.o_list_export_xlsx').addClass('d-none');
+ this.$buttons.find('.o_list_button_add').removeClass('btn-primary').addClass('btn-secondary');
+ var $buttons = $(qweb.render('StockOrderpoint.Buttons'));
+ var $buttonOrder = $buttons.find('.o_button_order');
+ var $buttonSnooze = $buttons.find('.o_button_snooze');
+ $buttonOrder.on('click', this._onReplenish.bind(this));
+ $buttonSnooze.on('click', this._onSnooze.bind(this));
+ $buttons.prependTo(this.$buttons);
+ },
+
+ // -------------------------------------------------------------------------
+ // Handlers
+ // -------------------------------------------------------------------------
+
+ _onButtonClicked: function (ev) {
+ if (ev.data.attrs.class.split(' ').includes('o_replenish_buttons')) {
+ ev.stopPropagation();
+ var self = this;
+ this._callButtonAction(ev.data.attrs, ev.data.record).then(function () {
+ self.reload();
+ });
+ } else {
+ this._super.apply(this, arguments);
+ }
+ },
+
+ _onReplenish: function () {
+ var records = this.getSelectedRecords();
+ this.model.replenish(records);
+ },
+
+ _onSelectionChanged: function (ev) {
+ this._super(ev);
+ var $buttonOrder = this.$el.find('.o_button_order');
+ var $buttonSnooze = this.$el.find('.o_button_snooze');
+ if (this.getSelectedIds().length === 0){
+ $buttonOrder.addClass('d-none');
+ $buttonSnooze.addClass('d-none');
+ } else {
+ $buttonOrder.removeClass('d-none');
+ $buttonSnooze.removeClass('d-none');
+ }
+ },
+
+ _onSnooze: function () {
+ var records = this.getSelectedRecords();
+ this.model.snooze(records);
+ },
+});
+
+return StockOrderpointListController;
+
+});
diff --git a/addons/stock/static/src/js/stock_orderpoint_list_model.js b/addons/stock/static/src/js/stock_orderpoint_list_model.js
new file mode 100644
index 00000000000..c9f0acb9012
--- /dev/null
+++ b/addons/stock/static/src/js/stock_orderpoint_list_model.js
@@ -0,0 +1,46 @@
+odoo.define('stock.StockOrderpointListModel', function (require) {
+"use strict";
+
+var core = require('web.core');
+var ListModel = require('web.ListModel');
+
+var qweb = core.qweb;
+
+
+var StockOrderpointListModel = ListModel.extend({
+
+ // -------------------------------------------------------------------------
+ // Public
+ // -------------------------------------------------------------------------
+ /**
+ */
+ replenish: function (records) {
+ var self = this;
+ var model = records[0].model;
+ var recordResIds = _.pluck(records, 'res_id');
+ var context = records[0].getContext();
+ return this._rpc({
+ model: model,
+ method: 'action_replenish',
+ args: [recordResIds],
+ context: context,
+ }).then(function () {
+ return self.do_action('stock.action_replenishment');
+ });
+ },
+
+ snooze: function (records) {
+ var recordResIds = _.pluck(records, 'res_id');
+ var self = this;
+ return this.do_action('stock.action_orderpoint_snooze', {
+ additional_context: {
+ default_orderpoint_ids: recordResIds
+ },
+ on_close: () => self.do_action('stock.action_replenishment')
+ });
+ },
+});
+
+return StockOrderpointListModel;
+
+});
diff --git a/addons/stock/static/src/js/stock_orderpoint_list_view.js b/addons/stock/static/src/js/stock_orderpoint_list_view.js
new file mode 100644
index 00000000000..d893ba9e5da
--- /dev/null
+++ b/addons/stock/static/src/js/stock_orderpoint_list_view.js
@@ -0,0 +1,21 @@
+odoo.define('stock.StockOrderpointListView', function (require) {
+"use strict";
+
+var ListView = require('web.ListView');
+var StockOrderpointListController = require('stock.StockOrderpointListController');
+var StockOrderpointListModel = require('stock.StockOrderpointListModel');
+var viewRegistry = require('web.view_registry');
+
+
+var StockOrderpointListView = ListView.extend({
+ config: _.extend({}, ListView.prototype.config, {
+ Controller: StockOrderpointListController,
+ Model: StockOrderpointListModel,
+ }),
+});
+
+viewRegistry.add('stock_orderpoint_list', StockOrderpointListView);
+
+return StockOrderpointListView;
+
+});
diff --git a/addons/stock/static/src/xml/stock_orderpoint_lead_days_widget.xml b/addons/stock/static/src/xml/stock_orderpoint.xml
index 51214708a24..6661303d5a6 100644
--- a/addons/stock/static/src/xml/stock_orderpoint_lead_days_widget.xml
+++ b/addons/stock/static/src/xml/stock_orderpoint.xml
@@ -26,4 +26,16 @@
</tbody>
</table>
</div>
+
+ <t t-name="StockOrderpoint.Buttons">
+ <span>
+ <button type="button" class="btn d-none btn-primary o_button_order">
+ Order
+ </button>
+ <button type="button" class="btn d-none btn-primary o_button_snooze">
+ Snooze
+ </button>
+ </span>
+ </t>
+
</templates>