Skip to main content
iVentureTeam

sales_team_progressbar

A kanban progress bar that turns into a call to action when there is nothing to measure. Odoo 20 removes it, and the kanban progress bar variant it was built on goes with it.

September 18, 2026Updated September 18, 20264 min read
Technical namesales_team_progressbar
Field typesinteger, float
Viewskanban
Modulesale, installed with Sales
Used in core0 uses in Odoo 19 Community or Enterprise. Removed in Odoo 20.
VersionsOdoo 19.0
No-code setupNo. There is no Studio entry for this widget.
Alternativesprogressbar, statinfo, percentpie

What the sales_team_progressbar widget does

A progress bar with no maximum is meaningless, so rather than render an empty bar this widget renders a way to fix the problem. It tracks whether the target exists:

useEffect(() => {
    this.state.isInvoicingTargetDefined = this.props.record.data[this.props.maxValueField];
});

and when it does not, offers a link that opens the record:

async defineInvoicingTarget() {
    const { resId, resModel } = this.props.record;
    const action = await this.orm.call(resModel, "get_formview_action", [[resId]]);
    this.actionService.doAction(action);
}

The source comment states the intent plainly: show a progress bar when an invoicing target is defined, or a link redirecting to the record's form view otherwise.

What this means for your team

This is a small piece of interface design worth stealing regardless of the widget's fate. An empty metric on a dashboard usually means a missing configuration, and most interfaces respond by showing a zero. A zero looks like bad performance. A link that says the target is not set tells the truth and offers the fix in one click.

If your sales dashboards show zeros that are really missing configuration, that pattern is worth reproducing whether or not you ever used this particular widget.

Working examples

On a sales team kanban card in Odoo 19:

<field name="invoiced" widget="sales_team_progressbar"
       options="{'max_value': 'invoiced_target'}"/>

In Odoo 20 there is no registration to resolve and the field renders with its default widget.

Removed alongside the widget it was built on

This removal is part of a larger change to progress bars in Odoo 20, and understanding that is more useful than the single fact.

Three things happened at once. This widget's registration disappeared. So did kanban.progressbar, the view variant it extended, which is notable because most kanban. registrations were renamed to card. rather than deleted; this one has no card. successor at all. And the surviving base progressbar widget lost four of its five options, keeping only max_value and dropping editable, edit_max_value, current_value and overflow_class.

Taken together that is a deliberate simplification of progress bars rather than an incidental cleanup. The kanban-specific rendering is gone and the remaining widget is far less configurable.

Practically, if you used this widget you are not just replacing it, you are also losing the options you would most likely have reached for while rebuilding the same effect. current_value in particular let you display one field while measuring another, which is exactly the sort of thing a custom sales dashboard relies on.

Version compatibility

VersionStatusNotes
Odoo 19.0VerifiedVerified against the shipped 19.0 source.
Odoo 20.0Not availableRemoved, along with the kanban.progressbar variant it extended.

Present in Odoo 19, removed in Odoo 20 along with its parent variant.

What is changing in Odoo 20

Removed. The registration is absent from the 20.0 branch, as is kanban.progressbar, the variant this widget extended. Unusually for Odoo 20, that kanban variant has no card. replacement, where the other thirteen kanban. registrations were renamed rather than dropped.

The base progressbar widget survives but is much reduced: of its five Odoo 19 options only max_value remains. It is still editable, but that is now driven by the field's readonly state rather than by an option.

Rebuilding the empty-state behavior on Odoo 20 means a custom widget. There is no configuration that reproduces it.

Common problems and fixes

SymptomCause and fix
The widget stopped resolving after upgrading to Odoo 20The registration was removed, as was kanban.progressbar. Use the base progressbar widget, or build a custom one if you need the empty-state prompt.
A bar renders empty instead of showing a linkThe base progressbar has no empty-state behavior; only this widget did. Set the target, or reproduce the prompt in a custom widget.
progressbar options such as editable stopped working in Odoo 20The base widget kept only max_value; four options were removed. Editability now follows the field's readonly state. The other three have no replacement.

Sales_team_progressbar widget vs the alternatives

WidgetBest forKey difference
sales_team_progressbarA sales team progress bar that prompts when no target is setReplaces the empty bar with a link to fix it, and does not exist in Odoo 20
progressbarA progress bar in any supported versionNo empty-state prompt, and only max_value survives in Odoo 20
statinfoA headline number on a smart buttonClicks through to a filtered list and survives Odoo 20 intact
percentpieA proportion shown graphicallyA pie rather than a bar, with no target prompt

The base progressbar is the fallback, accepting that a missing target renders as an empty bar rather than a prompt. For a single headline number with a click-through, statinfo on a smart button is the more common pattern and survives Odoo 20 intact, having gained a hide_trailing_zeros option rather than lost anything.

Frequently asked questions

Was sales_team_progressbar removed in Odoo 20?+
Yes, and so was kanban.progressbar, the variant it extended. Unusually, that kanban variant has no card. successor, where the other kanban registrations in Odoo 20 were renamed rather than deleted.
What did sales_team_progressbar do differently?+
When no invoicing target was set it rendered a link instead of an empty bar. Clicking it called get_formview_action and opened the record so the user could set the target on the spot.
What replaces it in Odoo 20?+
Nothing directly. The base progressbar widget survives but kept only max_value of its five options and has no empty-state behavior, so reproducing the prompt requires a custom widget.

Dashboards showing zeros that are really blanks?

An unset target and a missed target look identical on most Odoo dashboards, and one of them gets someone a difficult meeting. We build sales reporting that distinguishes missing configuration from bad performance.

Talk to an Odoo consultant

How this page was produced

Verified by reading addons/sale/static/src/js/sale_progressbar_field.js on the 19.0 branch of a local clone of the official Odoo repository, with the target check and the redirect quoted above and the intent taken from the file's own comment. The removal, the absence of kanban.progressbar and the option losses on the base widget all come from a registry diff between the 19.0 and 20.0 branches. Corrections welcome via our contact page.