forked from alaguraj/odoo-testing-addons
role based settings field updated
This commit is contained in:
parent
e7e35d7ad2
commit
580e6461dc
Binary file not shown.
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user