Dear Odoo Community,
I would like to address a common concern in restaurant management, specifically related to Odoo POS in v17 and previous. Currently, the system allows any user, including waiters, to delete products during a POS session, which may not be ideal for managerial control.
Below you can find a workaround to limit the ability to delete products and close tables (register payments) in a POS session to managerial staff only. Please follow the steps below:
Note: This solution is designed under the assumption that there are at least two users in the POS system at all times. One user should have full access to Odoo POS and backend, designated for the manager. The second user should have limited access, specifically for waiter use.
Step 1: Limiting User Rights for Product Deletion
- Activate developer mode and navigate to the Settings app.
- Go to the Users & Companies menu and access the Groups section. By default, Odoo provides two access groups for Point of Sale: Administrator and User. We will create a new intermediary group, which we can refer to as "User with Deleting Rights" (explained below).
Search for the “Point of Sale / User” access group and click on it:
Then go to the “Access Rights” tab, find the “pos.order.line” record and uncheck the box from the “Delete Access” column:
Step 2: Create a new intermediate access group
Before creating the intermediate access group we need to know in which app to create it (there’s more than one Point of Sale so we need to know which one is the correct one with the access groups inside it).
We will look for it by accessing the “Point of Sale / Administrator” access right and then clicking on the internal link of the “Application” field:
We need to know what is the internal id of this Point of Sale app (you can identify it on the url next to id=):
Now we can create a new access group by going to the “Groups” menu and clicking in the “New” button. In order to create the new group we need to choose the correct app in the “Application” field. For this click in the field and then “Search More…”. In the search bar click the right arrow and then “Add Custom Filter” the criteria in this filter will be: ID = *the ID of the point of sale app we looked for in the previous step*. Then select the Point of Sale app:
Now we have the correct “Application” and we can define the access group name (User with deleting rights). Then we have to go to the Access Rights tab and create the following access right by adding a line (Name = pos.order.line ; Model = Point of Sale Order Lines ; all checkboxes on):
In the “Inherited” tab of the new access group “Add a line” and search for the “Point of Sale / User” group name:
Step 3: Change the inherited user groups to the administrator
Once the new intermediate group is created (User with deleting rights) we need to reorder the hierarchy of the access rights groups in point of sale. The logic is that: administrator inherits the new intermediate group, and the new intermediate group inherits the user group.
In order to do this, go to the “Point of Sale / Administrator” group access and in the “Inherited” tab delete the line containing “Point of Sale / User” and add Add a line with the “Point of Sale / User with deleting rights” group:
Step 4: Define users access rights
Once the access group is created and configurations are ready. We can assign the “User with deleting rights” to the manager and “User” to the waiters users. This will allow managers to delete products and limit the waiters user to pay (checkout) if they’ve deleted products from the POS order:
Step 5: Test the configurations
With this configuration, the business flow should work. Remember for this use case in the real operation, the restaurant should login to the waiters screens with the Waiters user and the manager that can delete products should be in a different computer logged in with the Restaurant Manager user. This way only managers can close orders or delete products from tables.
Limitations: with this workaround only managers are able to delete products from tables and close tables (payment process). This may slow down the operation for many restaurants but in many cases owners prefer this workflow in order to have control of what is sold without waiters being able to simply delete products and keepíng the cash for themselves.
Hello,
this solution doesn't work and it's clearly a big failure in POS security.
When you send an order to the kitchen via the POS, the order line is systematically deleted (I don't know why...).
It means that you can't remove access to an employee to delete order lines from the order.
I guess that the code behind use the same "user" to trigger this action.
I opened a ticket to Odoo and I insisted, I didn't receive any support yet.
If you have an other solution, please let me know.
Tested with Odoo 17.0 and 17.2.
Hi is there a solution yet for odoo 18?