[FIX] pos_hr: res.users loaded twice

When pos_hr was installed, `load_models` was called twice for res.users
and calls to `load_fields` were not processed correctly.

closes odoo/odoo#38462

X-original-commit: 26274dbb9720743461be2a70de02bf4c1ea377f4
Signed-off-by: Antoine Prieëls <aprieels@users.noreply.github.com>
This commit is contained in:
Antoine Prieels
2019-10-11 08:23:24 +00:00
committed by fw-bot
parent 93deb095c8
commit 01535c618a
2 changed files with 15 additions and 35 deletions
+15 -12
View File
@@ -295,20 +295,23 @@ exports.PosModel = Backbone.Model.extend({
},{
model: 'res.users',
fields: ['name','company_id', 'id', 'groups_id'],
ids: function(self){ return [session.uid]; },
domain: function(self){ return [['company_ids', 'in', self.config.company_id[0]],'|', ['groups_id','=', self.config.group_pos_manager_id[0]],['groups_id','=', self.config.group_pos_user_id[0]]]; },
loaded: function(self,users){
var role = 'cashier';
users[0].groups_id.some(function(group_id) {
if (group_id === self.config.group_pos_manager_id[0]) {
role = 'manager';
return true;
}
users.forEach(function(user) {
user.role = 'cashier';
user.groups_id.some(function(group_id) {
if (group_id === self.config.group_pos_manager_id[0]) {
user.role = 'manager';
return true;
}
});
if (user.id === session.uid) {
self.user = user;
self.employee = user;
self.employee.user_id = [user.id, user.name];
}
});
self.user = users[0];
self.user.role = role;
self.employee.name = self.user.name;
self.employee.role = role;
self.employee.user_id = [self.user.id, self.user.name];
self.users = users;
self.employees = [self.employee];
self.set_cashier(self.employee);
},
-23
View File
@@ -5,29 +5,6 @@ var models = require('point_of_sale.models');
var rpc = require('web.rpc');
models.load_models([{
model: 'res.users',
fields: ['name','groups_id'],
domain: function(self){ return [['company_ids', 'in', self.config.company_id[0]],'|', ['groups_id','=', self.config.group_pos_manager_id[0]],['groups_id','=', self.config.group_pos_user_id[0]]]; },
loaded: function(self,users){
// we attribute a role to the user, 'cashier' or 'manager', depending
// on the group the user belongs.
users.forEach(function(user) {
user.role = 'cashier';
user.groups_id.some(function(group_id) {
if (group_id === self.config.group_pos_manager_id[0]) {
user.role = 'manager';
return true;
}
});
// replace the current user with its updated version
if (user.id === self.user.id) {
self.user = user;
self.employee = self.user;
}
});
self.users = users;
},
},{
model: 'hr.employee',
fields: ['name', 'id', 'user_id'],
domain: function(self){ return [['company_id', '=', self.config.company_id[0]]]; },