| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) • Point of Sale (point_of_sale) • Restaurant (pos_restaurant) • Inventory (stock) • Invoicing (account) |
| Lines of code | 2186 |
| Technical Name |
aminitech_pos_security_pro |
| License | OPL-1 |
| Website | https://aminitechsolutions.com |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) • Point of Sale (point_of_sale) • Restaurant (pos_restaurant) • Inventory (stock) • Invoicing (account) |
| Lines of code | 2186 |
| Technical Name |
aminitech_pos_security_pro |
| License | OPL-1 |
| Website | https://aminitechsolutions.com |
| Versions | 18.0 19.0 |
POS Security Pro
Stop revenue leakage at the till — without slowing the cashier. Six pre-built roles, granular approval gates across five permission categories, bilingual reason logging, forensic audit trail, auto-lock, and email alerts.
Everything you need, in one license
Cashier-level theft costs retail and hospitality 1–3 percent of gross revenue every year. POS Security Pro closes the loopholes — without slowing cashiers or annoying customers.
Stop Revenue Leakage
Close cashier-side gaps that cost retail and hospitality 1–3 percent of gross revenue annually.
Six Pre-built Roles
Cashier, Senior Cashier, Restaurant Waiter, Shift Supervisor, Supervisor, Manager — ready on day one.
Five Permission Categories
Approval Requirements, Button Restrictions, Menu Restrictions, Table Restrictions, Assigned Users — fully granular per role.
Forensic Audit Log
Every override captured with requester, approver, reason, old/new values, timestamp, session, and order reference.
Bilingual EN / FR
Eight reasons ship in English and French, slash-separated. Add unlimited custom reasons in any language without writing code.
Auto-Lock Timeout
Idle terminals return to PIN entry automatically. Optional supervisor PIN unlock for high-risk terminals.
Email Alerts
Owners notified the moment high-risk actions happen. Per-terminal recipients, action filters, and discount thresholds.
Native HR Integration
Roles, PINs, and max-discount caps live on hr.employee. Same place as badge ID and shift schedule — one source of truth.
One License, Unlimited
One license per database. Unlimited POS terminals and cashiers. Free lifetime updates on v18.0.x.
How each capability works
Eight shipping capabilities. All tested in live deployments. No betas, no roadmap promises.
Six roles, ready on day one
Install the module, assign a role to each employee, and you are done. Each role ships with a sensible permission profile based on real-world POS hierarchies — restaurant front-of-house, multi-outlet retail, supermarket lanes. All six roles are fully editable from the standard Odoo interface, with sequence ordering, max-discount caps per role, and an active flag.
- ✔Cashier (Restricted) — sales only, no approval authority
- ✔Senior Cashier — applies up to 10 percent discount, no approving others
- ✔Restaurant Waiter — order entry, no payment or discount access
- ✔Shift Supervisor — up to 100 percent approval, no cross-role approvals
- ✔Supervisor — approves others, up to 25 percent discount
- ✔Manager — full authority, approves others, 100 percent discount
Five categories, fully granular
Each role's behavior is configured across five permission tabs on the role form: Approval Requirements, Button Restrictions, Menu Restrictions, Table Restrictions (for restaurants), and Assigned Users. The Approval Requirements tab groups toggles into three sections — Order Actions, Price Actions, Cash Operations — and you decide which individual actions need a supervisor approval and which a cashier can perform alone.
- ✔Order Actions — Delete, Reduce Qty, Cancel, Refund, Split Bill, Transfer/Merge
- ✔Price Actions — Discount approval, Price Change approval
- ✔Cash Operations — Cash In approval, Cash Out approval
- ✔Button Restrictions — hide Numpad keys (Qty, Disc, Price, Plusminus, Backspace) and POS buttons (Customer, Refund, Payment)
- ✔Menu Restrictions — hide Orders menu, Close session menu, plus per-action approval flags
- ✔Table Restrictions — restaurant-only floor and table operations
Bilingual EN / FR, extendable to any language
When a cashier performs a sensitive action, they pick a reason from a pre-approved dropdown — no free-text typing that creates messy audit logs. Eight standard reasons ship in English and French, slash-separated for instant clarity. Add unlimited custom reasons in any language from the Odoo backend, no developer required. Per-reason "Require Notes" flag forces additional explanation when needed.
- ✔Customer Changed Mind / Client a changé d'avis
- ✔Out of Stock / Rupture de stock
- ✔Wrong Item Entered / Mauvais article saisi
- ✔Price Error / Erreur de prix
- ✔Defective Product / Produit défectueux
- ✔Customer Return / Retour client
- ✔Promotion Adjustment / Ajustement promotion
- ✔Other / Autre — with mandatory note
Forensic-grade, real-time
Every refund, discount, cancel order, and price change is logged with full context. Use list, kanban, calendar, or pivot view for instant insight. Compliant with internal audit and tax-authority documentation requirements across jurisdictions. Status pills — Approved (green) and Denied (red) — make scanning instant.
- ✔Created on — exact timestamp to the second
- ✔POS Session — links to the originating session (e.g. Restaurant/00002)
- ✔Action Type — Refund, Discount, Cancel Order, etc.
- ✔Status — Approved (green) / Denied (red)
- ✔Requested By + Approved By — both employee records
- ✔Order Reference + Product — direct links to the POS order
- ✔Reason — bilingual code from the catalog
Per-log investigation view
Open any approval log entry and see the entire context — Request Details, Product Details, Requested By, Approved By, and full reason note. Compliant with internal audit standards and tax-authority documentation requirements. Old Value vs New Value captured for every quantitative change.
- ✔Request Details — POS Session, Action Type, Status, Order Reference
- ✔Product Details — Product, Old Value, New Value
- ✔Requested By — employee record + Odoo user link
- ✔Approved By — approver employee + Odoo user link
- ✔Reason — bilingual code from catalog
- ✔Notes — free-text context from the cashier or approver
Native, no parallel database
Each employee's POS security role lives on their HR employee record under a dedicated "POS Security" tab. Approval PIN, Pos Can Approve flag, and Pos Max Discount sit alongside the assigned role. Below them, every restriction inherited from the role is displayed read-only so managers can audit per-cashier behavior at a glance — eight Button Restrictions and eight Menu/Approval Restrictions, all derived live from the role.
- ✔Security Role — dropdown from configured roles
- ✔Approval PIN — separate from POS login PIN
- ✔Pos Can Approve — overrides role-level approval authority
- ✔Pos Max Discount — per-employee cap, overrides role default
- ✔Current Restrictions (read-only) — every inherited restriction visible
- ✔Survives employee transfers between companies in multi-company setups
Idle terminals lock themselves
Configurable per POS terminal. Idle terminals auto-lock to PIN entry after the configured timeout — no more cashier walking away from an authenticated session. Optional supervisor PIN requirement to unlock adds a second factor on high-risk terminals. Native pos_hr unlock flow, zero added latency on routine sales.
- ✔Enable Auto-Lock — per-terminal toggle
- ✔Auto-Lock Timeout — seconds (default 300, configurable per terminal)
- ✔Supervisor PIN Required to Unlock — optional second factor
- ✔Native pos_hr PIN unlock flow — no extra modal layers
- ✔Zero latency on routine sales — lock check is client-side only
Owners notified instantly
Configure unlimited email recipients per POS terminal. Pick which actions trigger alerts (Refund, Discount, Cancel, Void) and an optional discount-percentage threshold to filter out routine activity. Alerts ship via Odoo's standard mail.template system — works with any SMTP server you have already configured. Owners get the alert with cashier name, action type, amount, reason, and a link to the approval log entry.
- ✔Enable Email Alerts — per-terminal toggle
- ✔Alert Recipients — unlimited email addresses
- ✔Discount Alert Threshold (percent) — filter out routine activity
- ✔Alert on Actions — Refund, Discount, Cancel, Void (multi-select)
- ✔HTML mail template with full branding support
- ✔Native mail.template — uses your existing SMTP configuration
90 days of free support included
Free email support for 90 days from purchase — installation, configuration, bug fixes, basic customization. Real humans, one business day response time. Free lifetime v18.0.x updates continue forever.
Real help, from real people
We answer every email personally. No bots, no escalation queues — just direct access to the team that built the module.
Email Support
One business day response time. Real humans answering real questions about installation, configuration, and customization.
reach@aminitechsolutions.com →Live Demo
Try every feature on our live demo server before you buy. Pre-configured with sample data and all features active.
See "Live Preview" button aboveDocumentation
Full installation guide, configuration walkthrough, and best-practices shipped in the module README.
Request the guide →Active development, predictable releases
- IMPListing rewrite using Bootstrap 4 utility classes for full marketplace CSS compatibility
- IMPSection-link navigation: Overview / Features / Support / Release Notes / FAQ
- IMPLive demo URL switched to demo.aminitechsolutions.com
- FIXCorrect PosStore JS import path for Odoo 18 (services/ → store/)
- FIXRemove harmful _load_pos_data_fields override that caused KeyError on use_pricelist during POS load
- NEWAuto-Lock timeout feature with native pos_hr PIN unlock
- NEWOptional supervisor PIN required to unlock
- NEWEmail alerts on approval actions with configurable thresholds
- NEWPer-terminal alert recipients and action-type filters (Refund, Discount, Cancel, Void)
- NEWDiscount alert threshold (percent) — filter routine activity
- NEWHTML mail template with full branding support
- IMPCashier-label clarity in approval log views
- INITInitial release for Odoo 18
- NEWSix pre-built security roles (Cashier through Manager)
- NEWFive permission categories per role (Approval, Button, Menu, Table, Users)
- NEWGranular Order, Price, and Cash Operation approval toggles
- NEWBilingual reason catalog (EN / FR, slash-separated)
- NEWReal-time approval log with full forensic context
- NEWNative HR employee integration with Approval PIN + max discount cap
- NEWMulti-company record-rule scoping
Frequently asked questions
Which Odoo versions are supported?
Will this conflict with my existing POS customizations?
Does the license cover multiple databases?
What happens after 90 days of free support?
Can I add custom approval reasons in my own language?
Does this require pos_hr to be installed?
Does it work for restaurants with table management?
Will it slow down the POS during high transaction volume?
How do email alerts work?
How does multi-company work?
Beyond this module
If you need more than what this module ships, our team can build it. Eight years of Odoo work across East Africa retail, hospitality, and manufacturing.
Custom Development
Bespoke Odoo modules built to your exact workflow. Quote on scope.
Odoo Implementation
End-to-end deployment, data migration, training, and go-live support.
Module Customization
Extend any AminiTech module to fit your specific business rules.
SLA Support
Priority response, phone support, monthly health checks. Per-database plans.
Production-grade Odoo apps
AminiTech Solutions builds comprehensive Odoo modules that ship only after running in real production environments. Comprehensive documentation, real support, no gotchas.
- 📧 reach@aminitechsolutions.com
- 📞 +254 746 883809
- 🌐 Live demo — see "Live Preview" button at top of page
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module