| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Point of Sale (point_of_sale) • Invoicing (account) |
| Lines of code | 2504 |
| Technical Name |
aminitech_pos_stock_restriction |
| License | OPL-1 |
| Website | https://aminitechsolutions.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Point of Sale (point_of_sale) • Invoicing (account) |
| Lines of code | 2504 |
| Technical Name |
aminitech_pos_stock_restriction |
| License | OPL-1 |
| Website | https://aminitechsolutions.com |
POS Stock Pro
Real-time inventory control for Odoo Point of Sale — live tier-coloured stock badges on every product card, instant websocket push when backend stock changes, multi-location preview at the cashier, manager-PIN override on oversell, and a forensic stockout shortfall ledger that drives your reorder priorities.
Backend stock change → POS badge update, via Odoo websocket bus.
Shortfall outcomes captured: Approved, Cancelled, PIN-Failed, Gate-Disabled.
Configuration sections: Display, Restriction, Override + Audit, Real-Time Sync, Reorder Email.
Stop oversells before they cost you the customer
Out-of-stock at the till means an unhappy customer, a refund, and a lost sale. POS Stock Pro shows the cashier the real stock in real time, blocks the sale if it would oversell, and lets a manager approve an exception by PIN — every approval and every blocked attempt is logged forever.
Live tier-coloured badges
Every product card on the cashier screen shows the on-hand quantity, coloured green / yellow / orange / red by configurable tiers. Single-colour mode is also available.
Real-time push, no polling delay
When any backend stock movement (inventory adjustment, purchase receipt, internal transfer) commits, the POS badge updates within one second over Odoo’s native websocket bus. Polling fallback at 5s if websocket unavailable.
Manager override + immutable audit
Cashier blocked? A supervisor approves the oversell with their PIN (integrates with AminiTech POS Security Pro), the sale proceeds, and the override is logged with cashier, manager, qty short, value at stake, and reason. The audit table is write-once.
Every capability, end-to-end
Tier-coloured stock badges
Every product card on the POS shows the real, on-hand quantity at this shop’s stock location. Colours follow your thresholds: above the High tier is green, between High and Low is yellow, between Low and the minimum floor is orange, at or below the floor is red.
- Position the badge on any corner of the card.
- Single-colour mode for shops that prefer one brand colour.
- Optional Stock Health pill in the navbar — click to see every product currently below threshold.
Real-time WebSocket bus push
When stock moves on the backend — manual quantity update, purchase receipt, internal transfer, stock.move _action_done, anything — the badge on every connected POS updates within ~1 second. We hook the four canonical mutation paths on stock.quant so nothing slips through.
- Three refresh modes: Real-Time + Polling Fallback (recommended), Polling Only, Real-Time Only.
- Configurable polling interval (default 5 s) for shops without websocket support.
- In-Settings status banner shows whether the websocket worker is reachable — admins instantly know which mode is active.
Multi-location preview tooltip
Hover any product badge and a small popover lists the on-hand quantity at every other internal location. Cashier sees “0 here, 12 at Warehouse” and offers the customer a transfer or pickup instead of refusing the sale.
- Lazy-fetched (only on hover, no upfront cost).
- Cached for 60 s per product to keep the cashier responsive.
- Excludes the current POS location automatically — only the “elsewhere” quantities are listed.
Manager override with supervisor PIN
When the gate blocks a sale at Pay(), the cashier sees a Manager Stock Override dialog showing the product, requested quantity, available, and the shortfall. A supervisor enters their PIN (numeric, server-side verified). Approval mints a one-shot token that the order carries to the backend, where _validate_stock_availability consumes it. No PIN means no override — the gate stays closed.
- Reason is mandatory on every approved override — not optional, not a checkbox.
- Works standalone using Odoo’s POS Manager group, or integrated with AminiTech POS Security Pro for in-line PIN entry without a user switch.
- Sister-module detection is runtime: zero coupling, zero imports, no dependency.
Per-product and per-category opt-outs
Real shops have products where overselling is fine — gift cards, deposits, services, custom orders that get sourced. Tag a category once or flip a flag on a single product and those items bypass the gate entirely, while everything else stays gated.
- Per-product: a Bypass Stock Gate checkbox lives in its own section on the Point of Sale tab of the product form.
- Per-category: pick the categories to enforce on (empty = enforce on every storable product).
- Client and server agree on scope — bypassed products complete the sale silently with no audit row.
Stock Shortfall Report — an honest reorder signal
Every blocked attempt and every approved override lands in an immutable audit ledger. List, graph, and pivot views aggregate the quantity short and the list-price×shortfall value at stake. Treat it as a directional reorder-priority signal — not a precise lost-revenue number — and the high-shortfall items naturally rise to the top of your buying list.
List view — every approved override + every blocked attempt + reason.
Graph view — value at stake by product or by period.
Pivot view — reorder-priority list groupable by product, period, manager.
Drill into any row — the cashier, manager, product, qty req/avail, shortfall, list price, value at stake, override token, and consumed flag.
Five tightly-scoped settings sections
No global on/off switch — every behaviour is per-POS-config so different shops on the same Odoo can have different gates, badges, polling intervals, and reorder triggers.
Display + Restriction + bus-health banner.
Override + Audit + Real-Time Sync + Reorder Email.
90 days free, real engineers, real answers
Buy this module and your first 90 days of support are included. We answer in business hours (East Africa Time), usually within the same day, often within an hour. Bug fixes for the v18 line are free for life of the version.
Email: reach@aminitechsolutions.com
Web: aminitechsolutions.com
Typical first reply <4 business hours.
Active development, predictable releases
v18.0.2.2.0 — Request Transfer
From the multi-location tooltip, click a row to spawn a draft internal transfer back-office. Cashier turns a stockout into a save: “We’ll bring it from Warehouse, pickup in 2 hours.”
v18.0.2.3.0 — Demand-aware reorder
Reorder email digest gains a Stock Shortfall column — reorder threshold breaches AND demand-shortfall hits roll up in one daily email to your buyer.
v18.0.3.x — Forecast-driven badges
Use Odoo’s replenishment forecast to colour the badge by days-of-cover, not just current quantity. “Green” means “you have enough until restock”.
Frequently asked questions
Does it work on Odoo Community?
Yes. Works on both Community and Enterprise. No Enterprise-only modules required.
Do I need POS Security Pro for the manager PIN to work?
No. POS Stock Pro works standalone — any logged-in user with the POS Manager access right can approve an override. If you also install POS Security Pro, the override dialog auto-detects it and adds a Supervisor dropdown + PIN field so you can approve in-place without a user switch. Zero coupling.
What if my hosting doesn’t have websocket?
The module degrades gracefully to a 5-second polling refresh. Badges stay accurate; they just aren’t instantaneous. The Settings page shows a live status banner so admins always know which mode is active.
Will it slow my POS down?
No. The bus push is event-driven, the polling fallback only fetches changed quantities, and the multi-location tooltip lazy-fetches only on hover with a 60s cache.
Can I bypass the gate for some products?
Yes — two ways. Per-category: tick a list of categories that the gate applies to (the rest bypass). Per-product: a Bypass Stock Gate flag on the product form. Both client and server agree on scope; raw-RPC attempts to bypass also fail because the server runs the same filter.
Can it allow negative stock when I really need to?
Yes. A top-level Allow Negative Stock toggle disables the gate entirely if your inventory model intentionally permits it.
Is the audit log truly immutable?
Yes. The pos.stock.override.log model has perm_write=0 and perm_unlink=0 for every group, including admin. Approval and block events are recorded server-side and cannot be edited or deleted from the UI.
Multi-company?
Yes. Configuration is per-pos.config, audit rows carry the company, and record rules scope visibility correctly.
The complete POS real-time inventory toolkit
If you searched for any of these, this module is built for you:
POS Stock Restriction · POS Out of Stock · POS Stock Gate · Real-Time POS Inventory · POS Stock Badge · POS Negative Stock Block · POS Oversell Block · POS Manager Override · POS Override Audit Log · POS Stock Shortfall Report · POS Stock Location Lock · Per-Category Stock Gate · Per-Product Stock Opt-Out · Tiered Stock Color Badges · POS Low-Stock Toast · Reorder Threshold Email Alert · Storable Product Restriction · Multi-Location POS Stock · Point of Sale Inventory Control · Real-Time Stock Push · Odoo POS Websocket Stock · POS Supervisor PIN Override · POS Stock Audit Trail · Demand Shortfall Signal
Beyond this module
POS Stock Pro is part of the AminiTech product family. The modules below pair naturally for shops that need more.
AminiTech POS Security Pro
Role-based cashier restrictions, supervisor approval for refunds / voids / large discounts, forensic audit log, auto-lock timeout, email alerts. When installed alongside POS Stock Pro, the supervisor PIN dialog appears in-line on stock overrides too — zero configuration.
View POS Security Pro →AminiTech POS Order Notification (KDS)
Real-time kitchen acknowledgement, escalation, sound alerts, print-failure recovery for any Odoo POS — restaurant, bar, retail. Free module.
View Order Notification →Production-grade Odoo apps, built in East Africa, used worldwide
POS Stock Pro is built and maintained by AminiTech Solutions. We use these modules in our own customers’ daily operations; you get the same code, the same support response, the same upgrade cadence.
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