Skip to main content
iVentureTeam

sol_text

The description cell on a quotation line. It behaves like the shared section and note text field everywhere except on a combo line, where it deliberately drops to a single line input.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated September 8, 20266 min read
Technical namesol_text
Field typestext, char
Viewslist, form
Also registered aslist.sol_text for the list view variant
Modulesale, the Sales app
Used in core1 occurrence, the description column on sale order lines in sale
VersionsOdoo 19.0
No-code setupNo. It is a cell widget tied to the sale order line model
Alternativessection_and_note_text, text, char, sol_o2m

What the order line description does

The description column on a quotation line does three jobs. On a product line it holds the product's description, which is often several lines. On a section or note row it holds the section title or the note text, and the row has no product at all. And since Odoo 19, on a combo line it holds the combo's label.

The first two are handled by the shared section and note text cell that invoices and purchase orders also use. This widget adds the third: when the line is a combo, it renders a single line input instead of the multi-line one.

That is the entire difference. Everything else, including how section and note rows are detected and rendered, comes from the shared cell it extends.

What this means for your team

The distinction matters because a combo header is not a description. It is a short label naming the bundle, and giving it a growing multi-line box invites people to write a paragraph there, which then renders awkwardly on the quotation the customer sees.

It is a small example of a broader principle in document line design: the same column can mean different things on different row types, and the interface should reflect that rather than offering the widest possible editor everywhere. Odoo does the same thing for sections and notes; combos are simply a third case.

Working examples

The core usage

<field name="name" widget="sol_text" optional="show"/>

Inside the order lines list, alongside the product picker. The list variant is selected automatically by the view type.

The two registrations

# both point at the same behavior
sol_text        # used outside a list
list.sol_text   # used inside a list view

Odoo resolves the prefixed name first when the field is inside a list, which is how the cell gets list-appropriate rendering.

The shared cell instead

<field name="name" widget="section_and_note_text"/>

What invoice and purchase lines use. Identical except that a combo line would get the multi-line editor.

One getter, two registrations

The implementation is a single getter on each of two classes. The getter asks which component should render the cell: if the row's product type is a combo, it returns the single line text component, otherwise it defers to the parent's answer, which already handles section rows, note rows and ordinary product lines.

Two classes exist because the shared cell itself has two variants, a general one and a list one, and each has to be extended separately. They are registered under the plain name and the list-prefixed name respectively, which is Odoo's mechanism for giving a widget different behavior inside a list without changing the name used in the view.

Because the decision is made in a getter, it is re-evaluated on every render. Changing a line's product from an ordinary product to a combo therefore switches the editor immediately, with no reload.

The Odoo 20 development branch retires this widget. The description column moves to a new widget with a different name, living in its own file, and no registration under the old name remains. A view still naming it will fall back to the plain text field, losing both the combo behavior and the section and note handling, which is a more visible regression than most renames.

Version compatibility

VersionStatusNotes
Odoo 20.0Not availableNot released. No registration under this name; the column moves to a differently named widget.
Odoo 19.0VerifiedFirst version, shipped with combo products. Verified against the shipped source.
Odoo 18.0Not availableWidget does not exist. The column used the shared section and note text cell.
Odoo 17.0Not availableWidget does not exist.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. The widget is new in Odoo 19 with combo products. Coming from Odoo 18 there is nothing to migrate, since order lines used the shared cell. Going to Odoo 20 there is: the name disappears, so any custom order line view naming it has to be updated or the column loses its section and note handling entirely.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The development branch is unstable and this may still change; we re-verify the page after release.

The widget is gone. There is no registration under this name on the development branch, and the core sale order view has moved the description column to a new widget in its own file, passing the partner through context.

Plan for the rename. Because the fallback for an unknown widget name is the field's plain type widget, a view left unchanged would render the description as an ordinary text box, losing the section and note behavior as well as the combo handling. Search custom order line views for this name before upgrading.

Common problems and fixes

SymptomCause and fix
A combo line offers a multi-line descriptionThe field is not using this widget, or the line's product type is not a combo. Check the widget attribute on the column and the product's type.
Section rows render as ordinary textThe column is using the plain text widget instead of this one or the shared cell. Set widget="sol_text" on sale order lines, or the shared cell elsewhere.
The editor does not change when I switch the productSomething is caching the component choice, which is normally re-evaluated on each render. Reload the form; the decision itself is a getter with no caching.
Options are ignoredThe widget declares none of its own and the shared cell has no extractor. Nothing to configure here.
The column loses its behavior after upgrading to Odoo 20The name is no longer registered on the development branch. Update custom views to the replacement widget name.
Missing widget errorThe sale module is not installed in that database. Install Sales, or use the shared section and note text cell.

Order line description vs the alternatives

WidgetBest forKey difference
sol_textThe description column on sale order lines, including combosSwitches to a single line input on combo rows while keeping section and note handling everywhere else
section_and_note_textThe same column on invoices and purchase ordersNo combo case; a combo row would get the multi-line editor
textA plain multi-line fieldNo awareness of section or note rows at all
charA single line valueAlways single line, whatever the row type
sol_o2mThe list this cell lives inThe list widget rather than a cell

Outside sale order lines, the shared section and note text cell is the right choice and is what invoices and purchase orders use. A plain text widget is correct only where the column has no section or note rows in it. And if you are building a document list of your own, extend the shared cell rather than the plain text field, so section rows keep working.

Frequently asked questions

What does sol_text change?+
One thing. On a line whose product is a combo it renders a single line input instead of the multi-line description editor. Everywhere else it behaves exactly like the shared section and note text cell.
Why is it registered twice?+
The shared cell it extends has a general variant and a list variant, so both are extended and registered, one under the plain name and one under a list-prefixed name. Odoo picks the prefixed one inside a list view.
Can I configure the combo behavior?+
No. The field it reads, the value it compares against and the component it switches to are all written into the source.
Does it still handle sections and notes?+
Yes, entirely through the shared cell it extends. That is why replacing it with a plain text widget breaks more than the combo case.
What happens in Odoo 20?+
The name disappears. The description column moves to a new widget in its own file, and a view still naming this one falls back to the plain text field, losing section and note handling too.

Quotation lines your customers can actually read

Descriptions, sections, optional items and combos all land on the same printed page, and the layout decisions are made in the backend. We tune Odoo Sales documents end to end on versions 16 through 19.

Book a free consultation

How this page was produced

The component-switching getter, the combo test and the two registrations were read from sale_order_line_field.js on the Odoo 19.0 branch, with the inherited behavior read from the shared section and note text cell in the account module. The usage comes from sale/views/sale_order_views.xml. The removal was verified by searching the public development branch for any registration under this name and by reading the replacement in the updated core view. Spotted an error? Tell us and we will correct the page.