from odoo import models, fields, api class ResUsers(models.Model): _inherit = 'res.users' is_pos_user = fields.Boolean(string="Is POS User?", default=False) is_kitchen_user = fields.Boolean(string="Is Kitchen User?", default=False) @api.model_create_multi def create(self, vals_list): pos_user_group = self.env.ref('point_of_sale.group_pos_user', raise_if_not_found=False) if pos_user_group: for vals in vals_list: if vals.get('is_kitchen_user') or vals.get('is_pos_user'): group_commands = vals.get('group_ids', []) if isinstance(group_commands, list): group_commands.append((4, pos_user_group.id)) vals['group_ids'] = group_commands res = super().create(vals_list) if any(vals.get('is_pos_user') or vals.get('is_kitchen_user') for vals in vals_list): self.env.registry.clear_cache() return res def write(self, vals): pos_user_group = self.env.ref('point_of_sale.group_pos_user', raise_if_not_found=False) if pos_user_group and ('is_kitchen_user' in vals or 'is_pos_user' in vals): for user in self: is_kitchen = vals.get('is_kitchen_user', user.is_kitchen_user) is_pos = vals.get('is_pos_user', user.is_pos_user) if (is_kitchen or is_pos): if pos_user_group not in user.group_ids: super(ResUsers, user).write({'group_ids': [(4, pos_user_group.id)]}) else: if pos_user_group in user.group_ids: super(ResUsers, user).write({'group_ids': [(3, pos_user_group.id)]}) res = super().write(vals) if 'is_pos_user' in vals or 'is_kitchen_user' in vals: self.env.registry.clear_cache() return res