pos_custom_access/README.md

48 lines
2.3 KiB
Markdown

# POS Custom Employee Access
This Odoo 19 module enhances the security and auditability of the Point of Sale system by enforcing PIN-based authentication for critical workflows and tracking detailed order attribution.
## Features
- **Mandatory PIN on Table Selection**: Prevents unauthorized access to tables. Every table selection triggers a PIN prompt to identify the employee taking the order.
- **Mandatory PIN on Load Order**: Enforces PIN entry when a draft order is loaded/resumed from the Orders tab (`TicketScreen`).
- **Mandatory PIN on Payment**: Requires PIN authentication before processing payments to ensure the transaction is handled by an authorized employee.
- **Role-Based Payment Gating**: Cross-checks employee roles (using `pos_employee_role`) to prevent roles like 'waiter' from processing payments.
- **Order Attribution**:
- `Order Taker`: Records the employee who first authenticated for the table.
- `Cashier`: Records the employee who authenticated for the payment.
- **UI Streamlining**:
- Removes manual "+ New Order" buttons to enforce a table-based workflow.
- Hides the "Course" button on the POS UI.
- Hides the "Transfer Course" button on the POS UI.
- Hides the save order for later (upload icon) button from the POS UI.
- Hides the "Set Table" button from Register/Direct Sale orders.
- Renames the "Basic Receipt" button to "Table Checker" (on both the action pad and print success screen) for clearer pre-payment table verification.
## Dependencies
- `point_of_sale`
- `pos_restaurant`
- `pos_hr`
- `pos_employee_role`
## Installation
1. Place the `pos_custom_access` directory in your Odoo `customaddons` folder.
2. Restart the Odoo server.
3. Update the App List in the Odoo backend.
4. Install the `POS Custom Employee Access` module.
## Configuration
Ensure that employees have PINs set in their HR Employee profile and that they are assigned appropriate roles if using `pos_employee_role`.
## Audit Fields
The following fields are added or modified on the `pos.order` model:
- `user_id`: "Session User" - Odoo user who opened the session.
- `employee_id`: "Order Taker" - Employee who registered the order/uses the cash register (standard `pos_hr` field).
- `payer_id`: "Cashier" - Employee who processed the payment.
These fields can be viewed in the POS Order backend list and form views.