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: if not self.restaurant_role:
return return
# Map roles to their XML IDs # Map roles to their XML IDs and REQUIRED Odoo Base groups to keep sections visible
role_mapping = { role_mapping = {
'waiter': 'restaurant_management.group_restaurant_waiter', 'waiter': [
'chef': 'restaurant_management.group_restaurant_kitchen', 'restaurant_management.group_restaurant_waiter',
'cashier': 'restaurant_management.group_restaurant_cashier', 'base.group_user',
'manager': 'restaurant_management.group_restaurant_manager', 'point_of_sale.group_pos_user'
'admin': 'restaurant_management.group_restaurant_admin', ],
'store': 'restaurant_management.group_restaurant_store_keeper', '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) # 1. Clear existing restaurant groups (only in our custom category)
# We can find them by category category_staff = self.env.ref('restaurant_management.module_category_restaurant_staff', raise_if_not_found=False)
category = self.env.ref('restaurant_management.module_category_restaurant_staff', raise_if_not_found=False) if category_staff:
if category: restaurant_groups = self.env['res.groups'].search([('category_id', '=', category_staff.id)])
restaurant_groups = self.env['res.groups'].search([('category_id', '=', category.id)])
self.groups_id = [(3, g.id) for g in restaurant_groups] self.groups_id = [(3, g.id) for g in restaurant_groups]
# Add the selected group # 2. Add the selected groups (one combined list of commands)
group_xml_id = role_mapping.get(self.restaurant_role) group_xml_ids = role_mapping.get(self.restaurant_role, [])
if group_xml_id: group_commands = []
group = self.env.ref(group_xml_id) for xml_id in group_xml_ids:
group = self.env.ref(xml_id, raise_if_not_found=False)
if group: 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> <odoo>
<data> <data>
<!-- 1. Category for Staff Roles (Dropdown selection) --> <!-- 1. Category for Staff Roles -->
<record id="module_category_restaurant_staff" model="ir.module.category"> <record id="module_category_restaurant_staff" model="ir.module.category">
<field name="name">Restaurant Staff Role</field> <field name="name">Restaurant Staff Role</field>
<field name="description">Select the staff member's primary 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"> <record id="group_restaurant_kitchen" model="res.groups">
<field name="name">Chef / Kitchen Staff</field> <field name="name">Chef / Kitchen Staff</field>
<field name="category_id" ref="module_category_restaurant_staff"/> <field name="category_id" ref="module_category_restaurant_staff"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record> </record>
<!-- Waiter Role --> <!-- Waiter Role -->
<record id="group_restaurant_waiter" model="res.groups"> <record id="group_restaurant_waiter" model="res.groups">
<field name="name">Waiter / Captain</field> <field name="name">Waiter / Captain</field>
<field name="category_id" ref="module_category_restaurant_staff"/> <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> </record>
<!-- Store Role --> <!-- Store Role -->
<record id="group_restaurant_store_keeper" model="res.groups"> <record id="group_restaurant_store_keeper" model="res.groups">
<field name="name">Store Keeper</field> <field name="name">Store Keeper</field>
<field name="category_id" ref="module_category_restaurant_staff"/> <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> </record>
<!-- Cashier Role (Inherits Waiter) --> <!-- Cashier Role -->
<record id="group_restaurant_cashier" model="res.groups"> <record id="group_restaurant_cashier" model="res.groups">
<field name="name">Cashier</field> <field name="name">Cashier</field>
<field name="category_id" ref="module_category_restaurant_staff"/> <field name="category_id" ref="module_category_restaurant_staff"/>
@ -47,6 +48,5 @@
<field name="category_id" ref="module_category_restaurant_staff"/> <field name="category_id" ref="module_category_restaurant_staff"/>
<field name="implied_ids" eval="[(4, ref('group_restaurant_manager')), (4, ref('group_restaurant_kitchen'))]"/> <field name="implied_ids" eval="[(4, ref('group_restaurant_manager')), (4, ref('group_restaurant_kitchen'))]"/>
</record> </record>
</data> </data>
</odoo> </odoo>