diff --git a/addons/restaurant_management/models/__pycache__/res_users.cpython-310.pyc b/addons/restaurant_management/models/__pycache__/res_users.cpython-310.pyc index 0e6c43a..1045503 100644 Binary files a/addons/restaurant_management/models/__pycache__/res_users.cpython-310.pyc and b/addons/restaurant_management/models/__pycache__/res_users.cpython-310.pyc differ diff --git a/addons/restaurant_management/models/res_users.py b/addons/restaurant_management/models/res_users.py index d554580..8923980 100644 --- a/addons/restaurant_management/models/res_users.py +++ b/addons/restaurant_management/models/res_users.py @@ -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 diff --git a/addons/restaurant_management/security/restaurant_security.xml b/addons/restaurant_management/security/restaurant_security.xml index b20f8c6..eaf40fe 100644 --- a/addons/restaurant_management/security/restaurant_security.xml +++ b/addons/restaurant_management/security/restaurant_security.xml @@ -1,6 +1,6 @@ - + Restaurant Staff Role Select the staff member's primary role. @@ -11,23 +11,24 @@ Chef / Kitchen Staff + Waiter / Captain - + Store Keeper - + - + Cashier @@ -47,6 +48,5 @@ -