| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Inventory (stock) • Invoicing (account) • Point of Sale (point_of_sale) • Discuss (mail) |
| Lines of code | 12924 |
| Technical Name |
ma_pos_base |
| License | LGPL-3 |
| Website | https://xamltech.com/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Inventory (stock) • Invoicing (account) • Point of Sale (point_of_sale) • Discuss (mail) |
| Lines of code | 12924 |
| Technical Name |
ma_pos_base |
| License | LGPL-3 |
| Website | https://xamltech.com/ |
POS Base – Security Framework
Enterprise-grade PIN authentication, 5-tier role-based access, SHA-256 hashed credentials, discount enforcement, manager overrides, audit logging & per-user permission control for Odoo 18 POS.
PIN Authentication System
SHA-256 Hashed PINs
4–10 digit PINs with user-specific salt. _hash_pin_static(pin, user_id) generates unique hash per user.
Smart Account Lockout
Auto-lock after 5 failed attempts × 15 min cooldown. Warning levels: Safe → Warning → Danger.
Dual PIN System
Separate POS PIN (login) + Manager PIN (overrides). Each independently hashed, tracked, lockable.
PIN Management Actions
Generate (4-digit), Reset (6-digit), Clear, Unlock, Set Custom — all via backend buttons or wizard dialog.
Advanced Discount Control
Per-User Max Discount
pos_max_discount (0–100%). Priority: Admin=100% → Manager≥50% → User setting → Level default.
3 Validation Modes
Cap (auto-reduce to max), Block (reject + require manager), Warn (allow with warning). Configurable per POS.
Manager Discount Override
When discount exceeds limit, manager can approve via PIN. Full validate_discount_with_override() flow.
Global + User Limits
max_global_discount on POS config + per-user pos_max_discount. User limit can't exceed config limit.
POS Config Security
Strict Terminal Assignment
Users can ONLY see/access POS terminals they're assigned to. _search(), search_read(), web_search_read() all enforced.
UI Visibility Controls
Toggle Payment, Customer, Discount, Price, Qty, Numpad, Delete buttons per config. 7 independent switches.
Operation PIN Requirements
12 sensitive operations (delete order, apply discount, refund, close session, cutting…) each configurable to require PIN.
Price Control Modes
4 modes: Allow All, No Increase, No Decrease, Fixed Only. Enforced at config level.
Manager Requirement Controls
Each operation can independently require manager PIN verification:
Manager for Discount
When discount exceeds user limit
Manager for Price
Price change attempts
Manager for Delete
Order/line deletion
Manager for Negative
Negative stock selling
Manager for Refund
Refund processing
Manager for Close
Session close/logout
POS Access Configuration
Configure access level (None → Admin), Active in POS toggle, Max Discount %, Allowed POS Terminals, and Custom Permissions switch. POS PIN & Manager PIN sections with state badges.
UI Visibility & Access Level Reference
Toggle Customer, Discount, Price, Numpad, Qty, Delete buttons per user. Quick Overview card shows PIN status at a glance. Full access level comparison table with ✅/❌ for every permission.
Granular Permission Matrix
Three permission groups: Order Operations (delete, refund, qty, negative), Price & Discount (price change, discounts, payments), Session Operations (open, close, negative stock). Plus Cutting Operations — send, edit, cancel, complete, reprint, with UI visibility toggles.
PIN Security & Login Tracking
Generate 4-digit or 6-digit PINs with instant notification. Security Status dashboard tracks Last POS Login, Failed PIN Attempts (locks at 5), Failed Manager PIN Attempts. Session Close settings: require Manager PIN, require PIN for Sensitive Operations.
POS Configuration — 7 Security Tabs
Every POS terminal has its own security configuration with 7 dedicated tabs: User Access, Discount & Price, UI Visibility, PIN Security, Manager Requirements, Stock Settings, and Order Settings.
Discount & Price Settings
Manager Override — allow manager to approve exceeding discounts, require manager for discount/price. Discount Settings — Maximum Global Discount %, Validation Mode (Auto-Cap / Block / Warn), Discount Account. Price Control — 4 modes: Allow All, No Increase, No Decrease, Fixed Only. Calculation Logic info panel explains priority rules.
UI Visibility Settings
Button Visibility — toggle Discount, Customer, Payment, Quantity, Price buttons per POS terminal. Other Elements — Delete Icon, Numpad on/off. Below: Cutting Settings section with full إعدادات القص configuration (General, Personnel, Stock, UI, Notifications, Data Loading tabs).
PIN Security Settings
Operation PIN — Require PIN to Delete Order, Delete Line, or Cutting operations. Session PIN — Require PIN to Open, Close, and Require Manager PIN for Close. PIN Settings — Enable PIN for selected operations + PIN Validation Duration (minutes) timer.
Manager Approval Settings
Operations Requiring Manager — toggle each independently: Negative Quantities, Delete Operations, Refunds. Warning banner: "When enabled, these operations require a manager to enter their PIN for approval."
Order Management Settings
Order Deletion — separate controls for deleting orders After Cutting vs Before Cutting, with visual status icons. Order Creation — Allow POS Orders toggle to enable/disable order creation entirely.
Stock Management Settings
Stock Location — Lot Location for lot-level stock tracking. Stock Control — Allow Negative Stock, Block Order on Negative Stock (prevent payment), Disable Selling More Than Roll Qty (fabric-specific limit).
5-Tier Access Level System
Each level defines defaults for 30+ permission flags. Custom overrides available per user.
None
Completely blocked. No POS access at all.
Basic Cashier
View + sell. Cannot modify prices or discount.
Advanced User
Standard cashier with discount & line delete.
Manager
Full operations except admin config.
Administrator
Unrestricted. Full system control.
Complete Permission Matrix
Every user has pos_use_custom_permissions = True by default.
When enabled, individual flags override level defaults.
Order Permissions
pos_allow_delete_order
pos_allow_delete_line
pos_allow_quantity_change
pos_allow_negative_qty
Price & Discount Permissions
pos_allow_discount
pos_allow_price_change
pos_max_discount
Session Permissions
pos_allow_open_session
pos_allow_close_session
pos_allow_payment_modification
pos_allow_refund
Cutting Permissions
pos_allow_cutting
pos_allow_cutting_cancel
pos_allow_cutting_edit
pos_allow_cutting_reprint
UI Visibility (per user)
pos_show_customer · pos_show_discount · pos_show_price
pos_show_qty · pos_show_numpad · pos_show_delete
pos_show_cutting_button · pos_show_cutting_status · pos_show_cutting_history
Stock & Security
pos_allow_negative_stock
pos_require_pin_for_operations
pos_require_pin_for_cutting
| Technical Name | ma_pos_base |
| Version | 18.0.1.0.0 |
| License | LGPL-3 |
| Website | xamltech.com |
| Author | xamltech |
| Availability | Odoo Online Only |
| Odoo Apps Deps | Point of Sale Inventory Invoicing Employees |
| Lines of Code | 12,500+ |
Python Models Extended
-
res.users— 30+ security fields, PIN methods -
pos.config— UI controls, discount validation, strict access -
pos.session— PIN open/close, field loader -
pos.sensitive.operation— 12 operation definitions
Frontend (OWL v2)
- SecurityService (global)
- ManagerPinPopup + OperationPinPopup
- Discount enforcement patches (3 layers)
- IndexedDB serialization safety fix
- Numpad, Orderline, Navbar patches
- Asset Verification Service
Can I use this with Odoo Online?
Is this the base for other POS modules?
ma_pos_base is the foundation. POS Cutting, POS Customization, and POS Stock all depend on it.How is the PIN stored securely?
odoo_pos_security_v2_{user_id}). Verification uses secrets.compare_digest for constant-time comparison.Can different users have different discount limits?
pos_max_discount (0–100%). Admins always get 100%, Managers minimum 50%. The system also respects the POS config global limit. When exceeded, the system can auto-cap, block, or warn based on your config.Do I get free support?
60 Days Free Support
For bugs, issues, or installation help.
We're Here to Help
Installation, configuration, or technical questions — reach out anytime.
Please log in to comment on this module