forecast_widget
The green Available, orange Exp date and red Not Available pills on Odoo transfer lines are one widget reading five fields you cannot see. Here is exactly how forecast_widget decides which badge you get.
August 24, 2026Updated August 24, 20266 min read
| Technical name | forecast_widget |
|---|---|
| Field types | float (inherits the float descriptor; core uses it on forecast_availability) |
| Views | list (operation lines inside transfer forms) |
| Module | stock (Inventory) |
| Used in core | 3 occurrences across 3 modules: stock, mrp, repair |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. Core applies it on transfer and production views; Studio does not offer it |
| Alternatives | float, progressbar, stock_rescheduling_popover |
What the Forecast badge does
What this means for your team
Working examples
No fieldDependencies: the view must carry the data
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Provisional: development branch removes the unsaved-line click guard and the stored state; badge logic unchanged. Re-verified after release. |
| Odoo 19.0 | Verified | Verified against the shipped source. Adds the is_storable click gate; drops the side quantity formatting. |
| Odoo 18.0 | Partial / changed | Same badge logic; click works on any saved line (no is_storable gate); formats quantity internally. |
| Odoo 17.0 | Partial / changed | Same badge logic; reads reserved_availability instead of quantity. |
| Odoo 16.0 | Partial / changed | Same badge logic and reserved_availability read; resId taken from data.id. |
Upgrade note. The widget name and badge behavior are stable from 16.0 through 19.0, so views survive an Odoo migration untouched. Custom views built before 19.0 should add is_storable to the line fields when upgrading, or the report click-through dies silently on every line.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Clicking the badge does nothing | The line is unsaved, or the product is not storable (19.0), or is_storable is not loaded in the view. Save the transfer first; for custom views, add is_storable as an invisible column. |
| Every line shows Not Available despite stock | product_qty or forecast_expected_date is missing from the view, so the comparison runs against undefined. Add the missing fields as invisible columns, as the core views do. |
| Badge missing on receipts | Core hides the column when picking_type_code is not internal or outgoing. Expected behavior; incoming goods have no availability question. |
| Orange badge treated as a problem by users | Exp plus a date means the line will be covered by that date; only red means late or unfulfilled. Train the distinction; red Exp specifically means the expected date breaks the deadline. |
| Setting digits or other float options changes nothing | The badge template never renders the number, so all inherited float options are inert. Show the raw field separately if you need the quantity visible. |
Forecast badge vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
forecast_widget | Per-line availability verdicts on transfers and manufacturing orders | Renders a colored verdict badge plus report click-through instead of the number |
| float | Showing the actual forecast quantity | Prints the number, no color logic, no click-through |
| progressbar | Visualizing partial progress toward a quantity | Continuous bar instead of a three-state verdict |
| stock_rescheduling_popover | Explaining late chains on a move | Popover with links to the blocking documents, JSON-driven |
Frequently asked questions
What do the forecast_widget badge colors mean?+
Why does clicking the forecast badge do nothing?+
Which fields does forecast_widget need in the view?+
Can forecast_widget show the actual forecast number?+
Where does the badge click lead?+
Does forecast_widget change in Odoo 20?+
Deliveries stuck in red?
When half a delivery's lines show Not Available, the fix lives in routes, reordering rules and lead times, not in the badge. We tune Odoo inventory forecasting and replenishment for warehouses on Odoo 16 through 19, from MTO chains to buffer stock policies.
Get my forecast sorted