Browse Source

Merge PR #324 into 9.0

Signed-off-by legalsylvain
pull/328/head
OCA-git-bot 5 years ago
parent
commit
acbdd05ed9
  1. 214
      pos_access_right/static/src/js/pos_access_right.js

214
pos_access_right/static/src/js/pos_access_right.js

@ -11,40 +11,52 @@ odoo.define('pos_access_right.pos_access_right', function (require) {
var screens = require('point_of_sale.screens'); var screens = require('point_of_sale.screens');
var chrome = require('point_of_sale.chrome'); var chrome = require('point_of_sale.chrome');
var models = require('point_of_sale.models'); var models = require('point_of_sale.models');
var Model = require('web.DataModel');
var gui = require('point_of_sale.gui'); var gui = require('point_of_sale.gui');
var core = require('web.core'); var core = require('web.core');
var _t = core._t; var _t = core._t;
/* ********************************************************
point_of_sale.gui
******************************************************** */
/* ********************************************************
Point_of_sale.gui
******************************************************** */
// New function 'display_access_right' to display disabled functions // New function 'display_access_right' to display disabled functions
gui.Gui.prototype.display_access_right = function(user){
if (user.groups_id.indexOf(this.pos.config.group_negative_qty_id[0]) != -1){
$('.numpad-minus').removeClass('pos-disabled-mode');
}
else{
$('.numpad-minus').addClass('pos-disabled-mode');
}
if (user.groups_id.indexOf(this.pos.config.group_discount_id[0]) != -1){
$(".mode-button[data-mode='discount']").removeClass('pos-disabled-mode');
}
else{
$(".mode-button[data-mode='discount']").addClass('pos-disabled-mode');
}
if (user.groups_id.indexOf(this.pos.config.group_change_unit_price_id[0]) != -1){
$(".mode-button[data-mode='price']").removeClass('pos-disabled-mode');
}
else{
$(".mode-button[data-mode='price']").addClass('pos-disabled-mode');
gui.Gui.prototype.display_access_right = function (user) {
var records = new Model('res.users')
.query(['groups_id'])
.filter([['id', '=', user.id]])
.all();
var groups_id = [];
var group_negative_qty_id = this.pos.config.group_negative_qty_id[0];
var group_discount_id = this.pos.config.group_discount_id[0];
var group_price_id = this.pos.config.group_change_unit_price_id[0];
var dis_mode = 'pos-disabled-mode';
records.then(function (result) {
groups_id = result[0].groups_id;
if (groups_id.indexOf(group_negative_qty_id) === -1) {
$('.numpad-minus').addClass(dis_mode);
} else {
$('.numpad-minus').removeClass(dis_mode);
}
if (groups_id.indexOf(group_discount_id) === -1) {
$(".mode-button[data-mode='discount']").addClass(dis_mode);
} else {
$(".mode-button[data-mode='discount']").removeClass(dis_mode);
}
if (groups_id.indexOf(group_price_id) === -1) {
$(".mode-button[data-mode='price']").addClass(dis_mode);
} else {
$(".mode-button[data-mode='price']").removeClass(dis_mode);
}
} }
);
}; };
/* ********************************************************
point_of_sale.models
******************************************************** */
/* ********************************************************
Point_of_sale.models
******************************************************** */
// load extra data from 'pos_config' (ids of new groups) // load extra data from 'pos_config' (ids of new groups)
models.load_fields("pos.config", "group_negative_qty_id"); models.load_fields("pos.config", "group_negative_qty_id");
@ -56,85 +68,131 @@ point_of_sale.models
// Overload 'set_cashier' function to display correctly // Overload 'set_cashier' function to display correctly
// unauthorized function after cashier changed // unauthorized function after cashier changed
var _set_cashier_ = models.PosModel.prototype.set_cashier; var _set_cashier_ = models.PosModel.prototype.set_cashier;
models.PosModel.prototype.set_cashier = function(user){
models.PosModel.prototype.set_cashier = function (user) {
this.gui.display_access_right(user); this.gui.display_access_right(user);
_set_cashier_.call(this, user); _set_cashier_.call(this, user);
}; };
/* ********************************************************
chrome.OrderSelectorWidget
******************************************************** */
/* ********************************************************
Chrome.OrderSelectorWidget
******************************************************** */
chrome.OrderSelectorWidget.include({ chrome.OrderSelectorWidget.include({
neworder_click_handler: function(event, $el) {
if (this.pos.get_cashier().groups_id.indexOf(this.pos.config.group_multi_order_id[0]) == -1) {
this.gui.show_popup('error',{
'title': _t('Many Orders - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
else {
return this._super();
neworder_click_handler: function (event, $el) {
var user = this.pos.get_cashier();
var records = new Model('res.users')
.query(['groups_id'])
.filter([['id', '=', user.id]])
.all();
var groups_id = [];
var group_multi_order_id = this.pos.config.group_multi_order_id[0];
var v_gui = this.gui;
records.then(function (result) {
groups_id = result[0].groups_id;
if (groups_id.indexOf(group_multi_order_id) === -1) {
v_gui.show_popup('error', {
'title': _t('Many Orders - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
} }
);
return this._super(event, $el);
}, },
deleteorder_click_handler: function(event, $el) {
if (this.pos.get_cashier().groups_id.indexOf(this.pos.config.group_delete_order_id[0]) == -1) {
this.gui.show_popup('error',{
'title': _t('Delete Order - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
else {
return this._super();
deleteorder_click_handler: function (event, $el) {
var user = this.pos.get_cashier();
var records = new Model('res.users')
.query(['groups_id'])
.filter([['id', '=', user.id]])
.all();
var groups_id = [];
var group_del_order_id = this.pos.config.group_delete_order_id[0];
var v_gui = this.gui;
records.then(function (result) {
groups_id = result[0].groups_id;
if (groups_id.indexOf(group_del_order_id) === -1) {
v_gui.show_popup('error', {
'title': _t('Delete Order - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
} }
);
return this._super(event, $el);
}, },
}); });
/* ********************************************************
screens.NumpadWidget
******************************************************** */
/* ********************************************************
Screens.NumpadWidget
******************************************************** */
screens.NumpadWidget.include({ screens.NumpadWidget.include({
// Overload 'start' function to display correctly unauthorized function // Overload 'start' function to display correctly unauthorized function
// at the beginning of the session, based on current user // at the beginning of the session, based on current user
start: function() {
start: function () {
this._super(); this._super();
this.gui.display_access_right(this.pos.get_cashier()); this.gui.display_access_right(this.pos.get_cashier());
}, },
// block '+/-' button if user doesn't belong to the correct group
clickSwitchSign: function() {
if (this.pos.get_cashier().groups_id.indexOf(this.pos.config.group_negative_qty_id[0]) == -1) {
this.gui.show_popup('error',{
'title': _t('Negative Quantity - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
else {
return this._super();
// Block '+/-' button if user doesn't belong to the correct group
clickSwitchSign: function () {
var user = this.pos.get_cashier();
var records = new Model('res.users')
.query(['groups_id'])
.filter([['id', '=', user.id]])
.all();
var groups_id = [];
var group_neg_qty_id = this.pos.config.group_negative_qty_id[0];
var v_gui = this.gui;
records.then(function (result) {
groups_id = result[0].groups_id;
if (groups_id.indexOf(group_neg_qty_id) === -1) {
v_gui.show_popup('error', {
'title':
_t('Negative Quantity - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
} }
);
return this._super();
}, },
// block 'discount' or 'price' button if user doesn't belong to the correct group
clickChangeMode: function(event) {
if (event.currentTarget.attributes['data-mode'].nodeValue == 'discount' &&
this.pos.get_cashier().groups_id.indexOf(this.pos.config.group_discount_id[0]) == -1) {
this.gui.show_popup('error',{
'title': _t('Discount - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
else if (event.currentTarget.attributes['data-mode'].nodeValue == 'price' &&
this.pos.get_cashier().groups_id.indexOf(this.pos.config.group_change_unit_price_id[0]) == -1) {
this.gui.show_popup('error',{
'title': _t('Change Unit Price - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
else {
return this._super(event);
// Block 'discount' or 'price' button if user doesn't belong to the
// Correct group
clickChangeMode: function (event) {
var user = this.pos.get_cashier();
var records = new Model('res.users')
.query(['groups_id'])
.filter([['id', '=', user.id]])
.all();
var groups_id = [];
var group_discount_id = this.pos.config.group_discount_id[0];
var group_price_id = this.pos.config.group_change_unit_price_id[0];
var v_gui = this.gui;
var data_mode= event.currentTarget.attributes['data-mode'];
records.then(function (result) {
groups_id = result[0].groups_id;
if (event.currentTarget.attributes['data-mode'].nodeValue ===
'discount' &&
groups_id.indexOf(group_discount_id) === -1) {
v_gui.show_popup('error', {
'title': _t('Discount - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
} else if (data_mode.nodeValue === 'price' &&
groups_id.indexOf(group_price_id) === -1) {
v_gui.show_popup('error', {
'title':
_t('Change Unit Price - Unauthorized function'),
'body': _t('Please ask your manager to do it.'),
});
}
} }
);
return this._super(event);
}, },
}); });
}); });
Loading…
Cancel
Save