commit 1616f6735e3bf4eef7973730efdeb32a436f633b Author: Suherdy Yacob Date: Thu Mar 12 14:39:39 2026 +0700 first commit diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/__manifest__.py b/__manifest__.py new file mode 100644 index 0000000..593b977 --- /dev/null +++ b/__manifest__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'POS Employee Role', + 'version': '1.0', + 'category': 'Sales/Point of Sale', + 'summary': 'Add roles to employees for POS permissions', + 'description': """ +This module adds a role to employees for Point of Sale. +Roles: Waiter/Server, Cashier, Outlet Manager, Area Manager. +These roles are used to restrict POS UI features dynamically. + """, + 'depends': ['point_of_sale', 'pos_hr'], + 'data': [ + 'views/hr_employee_views.xml', + ], + 'assets': { + 'point_of_sale._assets_pos': [ + 'pos_employee_role/static/src/app/**/*', + ], + }, + 'installable': True, + 'application': False, + 'license': 'LGPL-3', +} diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..89ef2a9 --- /dev/null +++ b/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import hr_employee +from . import pos_session diff --git a/models/hr_employee.py b/models/hr_employee.py new file mode 100644 index 0000000..4e0eff4 --- /dev/null +++ b/models/hr_employee.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- + +from odoo import fields, models + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + pos_role = fields.Selection([ + ('waiter', 'Waiter/Server'), + ('cashier', 'Cashier'), + ('outlet_manager', 'Outlet Manager'), + ('area_manager', 'Area Manager') + ], string='POS Role', default='waiter', help='Defines the permission level constraint in the Point of Sale.') diff --git a/models/pos_session.py b/models/pos_session.py new file mode 100644 index 0000000..c1e37f1 --- /dev/null +++ b/models/pos_session.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +from odoo import models + +class PosSession(models.Model): + _inherit = 'pos.session' + + def _loader_params_hr_employee(self): + result = super()._loader_params_hr_employee() + result['search_params']['fields'].append('pos_role') + return result diff --git a/static/src/app/components/navbar/navbar.xml b/static/src/app/components/navbar/navbar.xml new file mode 100644 index 0000000..c2629bd --- /dev/null +++ b/static/src/app/components/navbar/navbar.xml @@ -0,0 +1,21 @@ + + + + + + + + hardwareProxy.printer and (this.pos.cashier.pos_role == 'outlet_manager' or this.pos.cashier.pos_role == 'area_manager') + + + + + this.pos.cashier.pos_role == 'outlet_manager' or this.pos.cashier.pos_role == 'area_manager' + + + + + this.pos.cashier.pos_role != 'waiter' + + + diff --git a/static/src/app/screens/product_screen/action_pad/action_pad.xml b/static/src/app/screens/product_screen/action_pad/action_pad.xml new file mode 100644 index 0000000..251996f --- /dev/null +++ b/static/src/app/screens/product_screen/action_pad/action_pad.xml @@ -0,0 +1,12 @@ + + + + + + this.pos.cashier.pos_role != 'waiter' + + + this.pos.cashier.pos_role != 'waiter' and showFastPaymentMethods + + + diff --git a/static/src/app/screens/product_screen/control_buttons/control_buttons.xml b/static/src/app/screens/product_screen/control_buttons/control_buttons.xml new file mode 100644 index 0000000..94aeb9c --- /dev/null +++ b/static/src/app/screens/product_screen/control_buttons/control_buttons.xml @@ -0,0 +1,9 @@ + + + + + + this.pos.cashier._role != 'minimal' and (this.pos.cashier.pos_role == 'outlet_manager' or this.pos.cashier.pos_role == 'area_manager') + + + diff --git a/static/src/app/screens/ticket_screen/ticket_screen.xml b/static/src/app/screens/ticket_screen/ticket_screen.xml new file mode 100644 index 0000000..b5c4d9c --- /dev/null +++ b/static/src/app/screens/ticket_screen/ticket_screen.xml @@ -0,0 +1,9 @@ + + + + + + getHasItemsToRefund() and (this.pos.cashier.pos_role == 'outlet_manager' or this.pos.cashier.pos_role == 'area_manager') + + + diff --git a/views/hr_employee_views.xml b/views/hr_employee_views.xml new file mode 100644 index 0000000..ddb8925 --- /dev/null +++ b/views/hr_employee_views.xml @@ -0,0 +1,16 @@ + + + + hr.employee.form.pos.role.inherit + hr.employee + + + + + + + + + + +