line_open_move_widget
A many2one field whose internal-link arrow does not open the record you expect, on purpose: line_open_move_widget routes analytic lines to the journal item's real business document.
August 25, 2026Updated August 25, 20266 min read
| Technical name | line_open_move_widget |
|---|---|
| Field types | many2one |
| Views | form, list |
| Module | account, installed with Invoicing or Accounting |
| Used in core | 2 occurrences in 1 module: move_line_id on the analytic line form and list |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. Applied in view XML; Studio has no toggle for it |
| Alternatives | open_move_widget, many2one, so_line_field |
What the line open move widget does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
no_create | boolean | Inherited from many2one. Blocks every creation path in the dropdown. Core sets it on both analytic usages so journal items cannot be created from analytic screens. |
no_quick_create | boolean | Inherited from many2one. Removes only the inline Create entry. |
no_create_edit | boolean | Inherited from many2one. Removes only the Create and Edit dialog entry. |
no_open | boolean | Inherited from many2one. Hides the internal-link arrow entirely, which also disables this widget's business-doc routing. |
search_threshold | number | Inherited from many2one. Minimum typed characters before the journal item search fires. |
placeholder_field | field name | Inherited from many2one. A char field on the record supplying a dynamic placeholder. |
no_open does not just hide the arrow, it removes the widget's whole point. With no_open the override never fires and you are left with a plain, arrow-less many2one. If you want to block navigation, use the standard widget instead and keep intent obvious in the XML.
Working examples
Three lines of override, three eras of API
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Only prop-system modernization on the development branch; behavior unchanged. Re-verified after launch. |
| Odoo 19.0 | Verified | Composition-API rewrite of the same behavior; verified against the shipped source. |
| Odoo 18.0 | Verified | Descriptor-style Many2OneField subclass, byte-identical to 17. |
| Odoo 17.0 | Verified | Same behavior on the id-name tuple record API. |
| Odoo 16.0 | Verified | Original class-registered version reading props.value; same click routing. |
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Arrow opens an invoice instead of the journal item | action_open_business_doc resolves the most specific document for the line. Expected; that is the widget's purpose. The raw item is reachable from the entry itself. |
| Click errors or opens nonsense on a custom field | The override sends the related id to a hardcoded account.move.line model; your field relates to something else. Only use the widget on account.move.line relations; otherwise use the plain many2one. |
| No arrow visible at all | no_open is set, or the field is empty, or the record is in a state where the m2o hides the link. Remove no_open and check the field has a value. |
| Users can create journal items from the analytic screen | A custom view dropped the no_create option core passes. Restore options="{'no_create': True}". |
| A JavaScript patch on the widget stopped working after upgrading to 19 | The class was rebuilt on the composition API; the old Many2OneField subclass no longer exists. Re-target the patch at the new component or its m2oProps getter. |
Line open move widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
line_open_move_widget | move_line_id fields on analytic and costing records | Standard editable many2one whose arrow opens the item's business document via a hardcoded account.move.line call |
| open_move_widget | Read-only entry numbers in item lists | Renders a char value as a link; no editing, routes through the current record instead of the related one |
| many2one | Any relation where the standard form link is correct | Identical editor, arrow opens the raw related form |
| so_line_field | Sale order line references outside sales screens | Another single-purpose m2o wrapper, tuned for sale line naming instead of navigation |
Frequently asked questions
What does line_open_move_widget change compared to a normal many2one?+
Where is it used in standard Odoo?+
Can I put line_open_move_widget on any many2one field?+
Which options does it support?+
Did the widget change in Odoo 19?+
Anything to prepare for Odoo 20?+
Analytic accounting that answers questions in one click?
Cost lines are only useful when the document behind them is one click away. We set up analytic plans, distribution models and drill-down-friendly screens on Odoo 16 through 19, tuned to how your controllers actually investigate numbers.
Upgrade my analytic setup