diff options
| author | Arnold Moyaux <arm@odoo.com> | 2020-03-17 13:47:15 +0000 |
|---|---|---|
| committer | Arnold Moyaux <arm@odoo.com> | 2020-04-22 07:52:45 +0000 |
| commit | 943da6df0f1d39e8e10869b25c5ba8cc13a2aa54 (patch) | |
| tree | a9bcb2724d00e3fbc13d7feb6635e46279ae2c83 /addons/stock/static | |
| parent | b6fe6de9e9638a2d7db2861e976a7aa720d947f1 (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.js | 74 | ||||
| -rw-r--r-- | addons/stock/static/src/js/stock_orderpoint_list_model.js | 46 | ||||
| -rw-r--r-- | addons/stock/static/src/js/stock_orderpoint_list_view.js | 21 | ||||
| -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> |
