| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 109 |
| Technical Name |
pos_note_required |
| License | LGPL-3 |
| Website | https://www.ebitdasolutions.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 109 |
| Technical Name |
pos_note_required |
| License | LGPL-3 |
| Website | https://www.ebitdasolutions.com |
POS Note Required
Make Order Notes Compulsory in Odoo Point of Sale
No Order Goes Through Without a Note.
POS Note Required is a lightweight Odoo module that forces cashiers to enter a note on every Point of Sale order before payment can be validated. The check runs both in the POS frontend — blocking the Pay action with a clear alert dialog — and as a backend constraint on pos.order, so no order can slip through without meaningful context attached. It helps businesses improve order tracking, reduce missing instructions, and maintain better communication between cashiers and kitchen or management staff. The module is simple, fast, and seamlessly integrated into the standard Odoo POS workflow without affecting system performance.
KEY HIGHLIGHTS
Frontend Pay Block
The POS Pay button is intercepted before the payment screen opens. If no meaningful note exists on the order or any line, an alert dialog stops the cashier and explains exactly what is needed.
Backend Safety Constraint
A @api.constrains check on pos.order raises a ValidationError server-side if any non-draft, non-cancelled order is saved without a note — closing every bypass route.
Flexible Note Sources
A note is accepted from any of four places: the order's internal note, the general customer note, an individual order line note, or a line's customer note — giving cashiers full flexibility in how they annotate.
Fast-Validate Guard
The module also patches validateOrderFast — the shortcut used when a single payment method is pre-selected — so the note check fires on quick cashier flows too, not just the full payment screen.
Zero Configuration
Install and go. The module requires no settings page, no per-shop toggle, and no extra user rights. It depends only on point_of_sale and works on both Community and Enterprise editions.
Clean Native Integration
Built with Odoo's patch() utility and model inheritance — no JS overwrites, no XML template replacements. Fully compatible with standard POS addons and future Odoo upgrades.
POS NOTE Required - Configuration
To install this module, place its folder into your custom addons directory, restart your Odoo server, and then activate developer mode to update and install it from the Apps dashboard. Once installed, navigate to the Point of Sale settings to check the mandatory note checkbox and apply the enforcement rule to your chosen cash register.
POS Screen — Note Required Alert Dialog
When a cashier taps Pay without adding any note to the order, the module immediately shows a clear Note Required alert dialog. The payment screen never opens until a note is present — keeping the workflow clean and non-destructive.
Order-Level Note — Internal & Customer Note Fields
Cashiers can satisfy the note requirement at the order level using either the internal note field or the general customer note field. Any non-empty, non-whitespace value in either field is accepted as a valid note.
Order Line Note — Per-Line Annotation
The note can alternatively be added on an individual order line. Both the line's note and its customer note fields are checked. As soon as any line carries a meaningful note, the order is considered annotated and payment is unblocked.
Fast Validate — Quick Payment Guard
The module patches Odoo's validateOrderFast method as well, which is used when a single payment method shortcut is pre-configured. The same note check fires on the fast path — so there is no way to bypass the requirement through quick-pay flows.
Backend Constraint — Server-Side Validation
Beyond the POS UI, a @api.constrains decorator on the pos.order model enforces the note rule server-side. Any confirmed or paid order created or modified without a note triggers a ValidationError, making the rule impossible to bypass via the Odoo backend or API calls.
Frontend Pay Button Intercepted via PosStore Patch
Fast-Validate Shortcut Also Guarded
Clear AlertDialog Shown to Cashier on Missing Note
Backend @api.constrains Safety Net on pos.order
Note Accepted from Order Internal Note
Note Accepted from General Customer Note
Note Accepted from Any Order Line Note or Customer Note
Smart Note Parsing — Whitespace & Empty JSON Rejected
Draft & Cancelled Orders Exempt from Check
Zero Configuration — Works on Install
Compatible with Community & Enterprise Editions
Depends Only on point_of_sale — No Extra Dependencies
Release 19.0.1.0.0
Initial Release- Frontend interception of
PosStore.pay()— blocks payment if no note is present on the order or any order line - Frontend interception of
PosStore.validateOrderFast()— same note check on the quick-pay shortcut path - Clear
AlertDialogdisplayed to the cashier with a descriptive message when a note is missing - Backend
@api.constrainsonpos.ordercoveringstate,internal_note,general_customer_note, andlines - Smart note detection — whitespace-only strings, empty JSON arrays (
[]), and structured note objects with empty text blocks are all treated as missing - Draft and cancelled orders are explicitly exempt from the backend constraint
- Note is accepted from any of: order internal note, order general customer note, line note, or line customer note
Please log in to comment on this module