qty_at_date_widget
The little chart icon on Odoo sale order lines is qty_at_date_widget: a stock-aware view widget that turns red when the line will not be fulfilled on time and opens the availability popover with a jump into the forecast report.
August 26, 2026Updated August 26, 20266 min read
| Technical name | qty_at_date_widget |
|---|---|
| Views | form, list (view widget, |
| Module | sale_stock (installed when Sales and Inventory coexist) |
| Used in core | 2 occurrences in sale_stock: the order line list and the line form dialog |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. It ships preconfigured on sale order lines; Studio cannot add or tune it |
| Alternatives | forecast_widget, stock_rescheduling_popover, sol_product_many2one |
What the availability widget does
What this means for your team
Working examples
The 19 dual-unit rows, and one dead read
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | Verified | Not released. sale_stock version continues; a lighter sibling appears in sale. See below. |
| Odoo 19.0 | Verified | Verified against the shipped source. Adds dual-unit popover rows and the product-expiry label patch. |
| Odoo 18.0 | Verified | Same verdict; fixed the forecast context key to warehouse_id. |
| Odoo 17.0 | Verified | Same widget; the popover's forecast button targets the renamed forecast action. |
| Odoo 16.0 | Verified | Same concept, pointing at the old replenishment action, with a legacy twin file still shipped. |
Upgrade note. Nothing view-side changes across 16 to 19. JavaScript patches need review at each step: the 17 action rename, the 18 warehouse_id context key, and 19's switch to relational .id access plus the new UoM fetch path all touch popular patch points.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| No icon on some order lines | display_qty_widget computed false, typically for services, non-storable products or delivered lines. Expected behavior; the widget hides itself whenever the server says there is nothing to forecast. |
| Icon is red but the popover numbers look sufficient | On confirmed orders lateness alone triggers red: incoming stock arrives after the promised date. Check forecast_expected_date against the line's scheduled date; reschedule or expedite the supply. |
| A quotation line with no stock is not red | Make-to-order lines are exempt on quotations by design; their supply is created at confirmation. No action needed; the line is re-judged once the order is confirmed. |
| Widget shows nothing on a custom line view | The element was copied to a model that is not sale.order.line, so the ten dependencies cannot resolve. Keep it on sale order lines; other models need their own widget and computes. |
| Converted unit rows are missing in the popover | The second line only renders when the line's unit differs from the product's base unit. Expected; identical units mean nothing to convert. |
| Forecast button opens an unfiltered report | The context carries the line's product and move ids; stale moves or a missing warehouse loosen the filter. Verify the line has generated its moves and the warehouse is set on the order. |
Availability widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
qty_at_date_widget | Per-line delivery risk on sale orders, at a glance | Client-side verdict over ten server-computed fields, with a scoped forecast jump |
| forecast_widget | The same risk verdict on stock move lines | A field widget on moves comparing forecast against the move date, badge styled |
| stock_rescheduling_popover | Reschedule warnings on deliveries after confirmation | Driven by a JSON field listing the documents that force a date change |
| sol_product_many2one | The product picker on the same order lines | A relational field widget; complements rather than replaces the availability icon |
Frequently asked questions
When does the qty_at_date_widget icon turn red?+
Why is there no icon on my service or consumable lines?+
What do Forecasted Stock and Available mean in the popover?+
Why do some popovers show a second, smaller quantity line?+
What does the product expiry module change here?+
Does the widget work without the Inventory app?+
Are your sales promises backed by your stock reality?
Availability logic like this widget only pays off when lead times, MTO routes and safety stock are configured to match how you actually supply. We tune Odoo sales and inventory flows end to end so the red icon means what your team thinks it means.
Get your sale-to-stock flow reviewed