[REF] stock: convert stock_orderpoint_list to OWL

X-original-commit: 262366c693ffdb5b9d4bc3c7bef293f52bd6a344
Part-of: odoo/odoo#101305
This commit is contained in:
svs-odoo
2022-10-04 17:01:21 +02:00
committed by Arnold Moyaux
parent 989c6df74d
commit 61bc8347eb
8 changed files with 64 additions and 151 deletions
@@ -1,73 +0,0 @@
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_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 && 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;
});
@@ -1,43 +0,0 @@
odoo.define('stock.StockOrderpointListModel', function (require) {
"use strict";
var ListModel = require('web.ListModel');
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;
});
@@ -1,21 +0,0 @@
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;
});
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
<t t-name="stock.StockOrderpoint.Buttons" t-inherit="web.ListView.Buttons" owl="1">
<xpath expr="//button[hasclass('o_list_button_add')]" position="attributes">
<attribute name="class">btn btn-secondary o_list_button_add</attribute>
</xpath>
<xpath expr="//button[hasclass('o_list_button_add')]" position="before">
<button t-if="nbSelected" type="button" t-on-click="onClickOrder"
class="o_button_order btn btn-primary me-1">
Order
</button>
<button t-if="nbSelected" type="button" t-on-click="onClickSnooze"
class="o_button_snooze btn btn-primary me-1">
Snooze
</button>
</xpath>
</t>
</templates>
@@ -0,0 +1,30 @@
/** @odoo-module */
import { ListController } from '@web/views/list/list_controller';
export class StockOrderpointListController extends ListController {
async onClickOrder() {
const resIds = await this.getSelectedResIds();
const action = await this.model.orm.call(this.props.resModel, 'action_replenish', [resIds], {
context: this.props.context,
});
if (action) {
await this.actionService.doAction(action);
}
return this.actionService.doAction('stock.action_replenishment', {
stackPosition: 'replaceCurrentAction',
});
}
async onClickSnooze() {
const resIds = await this.getSelectedResIds();
this.actionService.doAction('stock.action_orderpoint_snooze', {
additionalContext: { default_orderpoint_ids: resIds },
onClose: () => {
this.actionService.doAction('stock.action_replenishment', {
stackPosition: 'replaceCurrentAction',
});
}
});
}
}
@@ -0,0 +1,13 @@
/** @odoo-module */
import { listView } from '@web/views/list/list_view';
import { registry } from "@web/core/registry";
import { StockOrderpointListController as Controller } from './stock_orderpoint_list_controller';
export const StockOrderpointListView = {
...listView,
Controller,
buttonTemplate: 'stock.StockOrderpoint.Buttons',
};
registry.category("views").add("stock_orderpoint_list", StockOrderpointListView);
@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
<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>
@@ -38,7 +38,7 @@
<field name="name">stock.warehouse.orderpoint.tree.editable</field>
<field name="model">stock.warehouse.orderpoint</field>
<field name="arch" type="xml">
<tree string="Reordering Rules" editable="bottom" js_class="stock_orderpoint_list" sample="1" multi_edit="1">
<tree string="Reordering Rules" editable="bottom" js_class="stock_orderpoint_list" sample="1" multi_edit="1" export_xlsx="0">
<field name="active" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="product_category_id" invisible="1"/>