feat: add is_admin_user field to res.users and update POS access and restriction logic

This commit is contained in:
Suherdy Yacob 2026-06-10 16:36:22 +07:00
parent bc0487f65a
commit 6b5ea11884
3 changed files with 11 additions and 7 deletions

View File

@ -6,6 +6,7 @@ class PosConfig(models.Model):
is_pos_user_restricted = fields.Boolean(compute='_compute_is_pos_user_restricted')
def _compute_is_pos_user_restricted(self):
is_pos = self.env.user.is_pos_user
user = self.env.user
is_restricted = user.is_pos_user or user.is_admin_user
for config in self:
config.is_pos_user_restricted = is_pos
config.is_pos_user_restricted = is_restricted

View File

@ -5,30 +5,32 @@ class ResUsers(models.Model):
is_pos_user = fields.Boolean(string="Is POS User?", default=False)
is_kitchen_user = fields.Boolean(string="Is Kitchen User?", default=False)
is_admin_user = fields.Boolean(string="Is Admin 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'):
if vals.get('is_kitchen_user') or vals.get('is_pos_user') or vals.get('is_admin_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):
if any(vals.get('is_pos_user') or vals.get('is_kitchen_user') or vals.get('is_admin_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):
if pos_user_group and ('is_kitchen_user' in vals or 'is_pos_user' in vals or 'is_admin_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):
is_admin = vals.get('is_admin_user', user.is_admin_user)
if (is_kitchen or is_pos or is_admin):
if pos_user_group not in user.group_ids:
super(ResUsers, user).write({'group_ids': [(4, pos_user_group.id)]})
else:
@ -36,7 +38,7 @@ class ResUsers(models.Model):
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:
if 'is_pos_user' in vals or 'is_kitchen_user' in vals or 'is_admin_user' in vals:
self.env.registry.clear_cache()
return res

View File

@ -8,6 +8,7 @@
<xpath expr="//page[@name='access_rights']/group[1]" position="after">
<group string="Special POS/Kitchen Restrictions">
<field name="is_pos_user"/>
<field name="is_admin_user"/>
<field name="is_kitchen_user"/>
</group>
</xpath>