product_label_section_and_note_field
On an Odoo invoice line the Product column secretly edits two fields at once: the product_id many2one and the line description. The product_label_section_and_note_field widget is what stitches them together, and it also styles section, subsection and note lines.
August 24, 2026Updated August 24, 20265 min read
| Technical name | product_label_section_and_note_field |
|---|---|
| Field types | many2one |
| Views | list (inside invoice and order line tables), form |
| Module | account |
| Used in core | 3 occurrences across 3 modules: account invoice lines, purchase order lines and point_of_sale order lines |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0 |
| No-code setup | No. Applied via the widget attribute in view XML |
| Alternatives | section_and_note_text, many2one, so_line_field |
What the Product and Label field does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
show_label_warning | boolean | When true, the description label renders in warning orange whenever the line has a product but the label no longer contains the product name. Sections, subsections and notes are excluded from the check. New in 19.0, declared with a Studio visible label.(default: false)(since Odoo 19.0) |
no_open | boolean | Inherited from many2one. Removes the internal link to the product form from the readonly cell. |
no_create | boolean | Inherited from many2one. Disables product creation from the autocomplete entirely, hiding both quick create and the create and edit dialog. |
no_quick_create | boolean | Inherited from many2one. Keeps the create and edit dialog but removes the type-to-create shortcut. |
no_create_edit | boolean | Inherited from many2one. Removes the create and edit dialog but keeps quick create from typed text. |
search_threshold | integer | Inherited from many2one, new in 19.0. Minimum characters typed before the product search runs; unset means the search fires on focus.(since Odoo 19.0) |
placeholder_field | field name | Inherited from many2one, new in 19.0. A char field on the record whose value serves as the dynamic placeholder. Note the widget already forces the placeholder "Search a product" in its template, so this rarely shows.(since Odoo 19.0) |
can_scan_barcode | boolean | Inherited and undocumented: read only in the many2one extractProps, never declared in supportedOptions. Enables barcode scanning to fill the field on mobile. |
create_name_field | field name | Inherited and undocumented: read only in the many2one extractProps. Changes which field of the product receives the typed text on quick create. |
show_label_warning only fires on real product lines: sections, subsections and notes are excluded from the check, and so are lines that have no product at all.
Working examples
Readonly rules, the column merge, and the 19.0 rebuild
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Props system migration only on the development branch so far; see below. |
| Odoo 19.0 | Verified | Verified against the shipped source. Rebuilt on the product module base, adds show_label_warning and subsection styling. |
| Odoo 18.0 | Partial / changed | Introduced here as a self contained account module widget. No show_label_warning, no line_subsection. |
| Odoo 17.0 | Not available | Does not exist. Invoice lines used the section_and_note family with a separate product column. |
| Odoo 16.0 | Not available | Does not exist. |
Introduced in Odoo 18. Views migrated from 18 to 19 keep working unchanged; show_label_warning is simply unavailable on 18.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Editing the label keeps re-adding the product name | By design. The stored name field is product name plus label; the widget strips the product name for display and prepends it back on save. Edit only the description part. To fully control the stored text, write the name field directly with a server action or code. |
| The Description column disappeared from invoice lines | The o2m list renderer merges the name column into the Product column whenever both are active. Hide the Product column through the column optional toggle; the Description column then reappears as a standalone column. |
| Lines are editable even though the form looks readonly | The widget keeps product and label cells editable until the document is posted, canceled or locked; readonly styling alone does not freeze them. Post or lock the document, or add explicit readonly conditions on the fields if your custom flow needs earlier freezing. |
| show_label_warning does nothing on section or note lines | The check explicitly excludes sections, subsections and notes, and lines without a product. This is intended. The warning targets only real product lines whose label lost the product name. |
Product and Label field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
product_label_section_and_note_field | Invoice, bill and order lines mixing products, descriptions, sections and notes | Edits product_id and the line description together in one cell, with display_type styling |
| section_and_note_text | The description column in classic section and note tables | Text only; no product picker, removed on the development branch |
| many2one | A plain product column without label editing | Standard picker only; the description stays in its own column |
| so_line_field | Sale order line references on other documents | Tracks an edited flag on change instead of merging a description |
Frequently asked questions
Which models use product_label_section_and_note_field in core Odoo?+
What does the show_label_warning option do?+
Where is the line description actually stored?+
Can I use this widget on Odoo 17 or earlier?+
Invoice lines not behaving the way your team expects?
Merged product columns, disappearing descriptions and section styling are exactly where custom invoice layouts go wrong. We build and repair customized invoice and order line views, from column defaults per document type to fully custom line widgets, on Odoo 16 through 19.
Get your invoice views fixed