Go to file
2026-06-20 12:17:27 +07:00
models feat: automate payer_id assignment during order processing and payment validation 2026-06-17 17:42:26 +07:00
static/src/app refactor: replace nbrOfChanges check with currentOrder.hasChange for consistency in Actionpad and ProductScreen buttons 2026-06-20 12:17:27 +07:00
views refactor: centralize payment authorization logic in PoS store and update UI components 2026-05-12 15:52:29 +07:00
__init__.py first commit 2026-05-12 13:15:13 +07:00
__manifest__.py feat: implement automatic register unlock and maintain order screen focus after order submission 2026-06-05 17:00:05 +07:00
.gitignore first commit 2026-05-12 13:15:13 +07:00
README.md feat: disable numpad sign change and restrict quantity modifications for Ojol discount lines 2026-06-15 13:36:48 +07:00

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.
  • Block Discount Split/Transfer: Prevents discount lines (including reward lines, global discounts, and negative price/manual adjustment lines) from being manually split or transferred on the POS split bill screen.
  • 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.
  • Order Attribution (Cashier): Records the employee who authenticated for the payment.
  • UI Streamlining - Floor Screen: Removes manual "+ New Order" buttons to enforce a table-based workflow.
  • UI Streamlining - Course: Hides the "Course" button on the POS UI.
  • UI Streamlining - Transfer Course: Hides the "Transfer Course" button on the POS UI.
  • UI Streamlining - Save Order: Hides the save order for later (upload icon) button from the POS UI.
  • UI Streamlining - Set Table: Hides the "Set Table" button from Register/Direct Sale orders.
  • UI Streamlining - Button Renaming: Renames the "Basic Receipt" button to "Table Checker" (on both the action pad and print success screen) for clearer pre-payment table verification.
  • Automatic Table Checker on Send: Automatically prints a "Table Checker" (Basic Receipt) whenever the employee clicks the kitchen "Send" button to submit changes.
  • Incremental Printing on Send: When additional items are added to an already sent order, the automatic print on "Send" is filtered to print only the newly added (additional) items, preventing duplicate printing of already served items.
  • Unlock Register PIN/Selection Bypass: Bypasses the PIN prompt and employee selection when unlocking the register. It unlocks directly with the current/last cashier. Note that opening the register (new session) still requires PIN entry.
  • Stay on Current Order on Send: Retains the POS UI on the current table/order screen after clicking "Send" rather than returning to the Floor Screen (table view).
  • Disable Numpad Sign Change: Disables the "+/-" button on the POS numpad to prevent manual negative price input or quantity negation.
  • Lock Ojol Discount Quantity: Blocks quantity changes (via numpad and keyboard) and configuration edits (via long press) on the "Diskon Ojol" product lines on POS orders.

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.