pos_kitchen_custom_access/models/res_users.py
2026-05-27 09:29:00 +07:00

43 lines
1.9 KiB
Python

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