open_match_line_widget
A cell whose only job is to open the matching line it sits on. Model and method are both written into the widget, which makes it precise and completely non-portable.
August 27, 2026Updated August 28, 20264 min read
| Technical name | open_match_line_widget |
|---|---|
| Field types | any |
| Views | list, form |
| Module | purchase, the Purchase app |
| Used in core | 1 occurrence, the bill matching screen in purchase |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0 |
| No-code setup | No. The model and method it calls are fixed in the source |
| Alternatives | many2one, open_move_widget, line_open_move_widget |
What the match line opener does
What this means for your team
Working examples
Letting the server choose the destination
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Byte-identical to Odoo 19 on the development branch. |
| Odoo 19.0 | Verified | Verified against the shipped source. Byte-identical to Odoo 18. |
| Odoo 18.0 | Verified | First version, with the bill matching screen. |
| Odoo 17.0 | Not available | Widget does not exist. |
| Odoo 16.0 | Not available | Widget does not exist. |
Upgrade note. The widget arrived in Odoo 18 with the bill matching screen and is unchanged in Odoo 19, so nothing needs attention on upgrade.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Nothing opens | The server method returned no action for that row. Check the matching record; the destination is decided server side. |
| An error about the wrong model | The widget was used outside the matching screen, and the model is hardcoded. Use it only there, or copy the widget with your own model and method. |
| Options are ignored | The registration has no extractor. Nothing to configure here. |
| The row saves before opening | The action button mechanism saves the edited row first. Expected, and usually what you want on a matching screen. |
| The control renders on an odd column | The widget ignores the field it is placed on. Place it on whichever column should carry the control. |
| Missing widget error | The purchase module is not installed in that database. Install Purchase, or use an ordinary row button. |
Match line opener vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
open_match_line_widget | Opening a bill match line from its row | Calls a hardcoded server method and lets the server choose the destination |
| many2one | Opening a related record | A link from a real relation, with no server call |
| open_move_widget | Opening a journal entry from a line | The accounting equivalent, with its own hardcoded target |
| line_open_move_widget | Opening a move line's document | Another single-purpose opener in the same family |
Frequently asked questions
What does the control open?+
Can I use it on another model?+
Does it take options?+
Why does the row save when I use it?+
Could a plain button do the same?+
Bill matching that takes seconds, not sessions
Three-way matching, tolerances and the screens that surface exceptions decide how much of accounts payable is manual. We configure Odoo Purchase and Accounting to match automatically where it safely can.
Book a free consultation