role based settings field updated

This commit is contained in:
Alaguraj0361 2026-01-23 19:02:37 +05:30
parent e7e35d7ad2
commit 580e6461dc
3 changed files with 50 additions and 22 deletions

View File

@ -17,26 +17,54 @@ class ResUsers(models.Model):
if not self.restaurant_role:
return
# Map roles to their XML IDs
# Map roles to their XML IDs and REQUIRED Odoo Base groups to keep sections visible
role_mapping = {
'waiter': 'restaurant_management.group_restaurant_waiter',
'chef': 'restaurant_management.group_restaurant_kitchen',
'cashier': 'restaurant_management.group_restaurant_cashier',
'manager': 'restaurant_management.group_restaurant_manager',
'admin': 'restaurant_management.group_restaurant_admin',
'store': 'restaurant_management.group_restaurant_store_keeper',
'waiter': [
'restaurant_management.group_restaurant_waiter',
'base.group_user',
'point_of_sale.group_pos_user'
],
'chef': [
'restaurant_management.group_restaurant_kitchen',
'base.group_user'
],
'cashier': [
'restaurant_management.group_restaurant_cashier',
'base.group_user',
'point_of_sale.group_pos_user'
],
'manager': [
'restaurant_management.group_restaurant_manager',
'base.group_user',
'point_of_sale.group_pos_manager',
'stock.group_stock_user'
],
'admin': [
'restaurant_management.group_restaurant_admin',
'base.group_user',
'point_of_sale.group_pos_manager',
'stock.group_stock_manager',
'base.group_system'
],
'store': [
'restaurant_management.group_restaurant_store_keeper',
'base.group_user',
'stock.group_stock_user'
],
}
# Clear existing restaurant groups first (optional, but cleaner)
# We can find them by category
category = self.env.ref('restaurant_management.module_category_restaurant_staff', raise_if_not_found=False)
if category:
restaurant_groups = self.env['res.groups'].search([('category_id', '=', category.id)])
# 1. Clear existing restaurant groups (only in our custom category)
category_staff = self.env.ref('restaurant_management.module_category_restaurant_staff', raise_if_not_found=False)
if category_staff:
restaurant_groups = self.env['res.groups'].search([('category_id', '=', category_staff.id)])
self.groups_id = [(3, g.id) for g in restaurant_groups]
# Add the selected group
group_xml_id = role_mapping.get(self.restaurant_role)
if group_xml_id:
group = self.env.ref(group_xml_id)
# 2. Add the selected groups (one combined list of commands)
group_xml_ids = role_mapping.get(self.restaurant_role, [])
group_commands = []
for xml_id in group_xml_ids:
group = self.env.ref(xml_id, raise_if_not_found=False)
if group:
self.groups_id = [(4, group.id)]
group_commands.append((4, group.id))
self.groups_id = group_commands

View File

@ -1,6 +1,6 @@
<odoo>
<data>
<!-- 1. Category for Staff Roles (Dropdown selection) -->
<!-- 1. Category for Staff Roles -->
<record id="module_category_restaurant_staff" model="ir.module.category">
<field name="name">Restaurant Staff Role</field>
<field name="description">Select the staff member's primary role.</field>
@ -11,23 +11,24 @@
<record id="group_restaurant_kitchen" model="res.groups">
<field name="name">Chef / Kitchen Staff</field>
<field name="category_id" ref="module_category_restaurant_staff"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<!-- Waiter Role -->
<record id="group_restaurant_waiter" model="res.groups">
<field name="name">Waiter / Captain</field>
<field name="category_id" ref="module_category_restaurant_staff"/>
<field name="implied_ids" eval="[(4, ref('point_of_sale.group_pos_user'))]"/>
<field name="implied_ids" eval="[(4, ref('base.group_user')), (4, ref('point_of_sale.group_pos_user'))]"/>
</record>
<!-- Store Role -->
<record id="group_restaurant_store_keeper" model="res.groups">
<field name="name">Store Keeper</field>
<field name="category_id" ref="module_category_restaurant_staff"/>
<field name="implied_ids" eval="[(4, ref('stock.group_stock_user'))]"/>
<field name="implied_ids" eval="[(4, ref('base.group_user')), (4, ref('stock.group_stock_user'))]"/>
</record>
<!-- Cashier Role (Inherits Waiter) -->
<!-- Cashier Role -->
<record id="group_restaurant_cashier" model="res.groups">
<field name="name">Cashier</field>
<field name="category_id" ref="module_category_restaurant_staff"/>
@ -47,6 +48,5 @@
<field name="category_id" ref="module_category_restaurant_staff"/>
<field name="implied_ids" eval="[(4, ref('group_restaurant_manager')), (4, ref('group_restaurant_kitchen'))]"/>
</record>
</data>
</odoo>