stock_rescheduling_popover
The red triangle next to a transfer's scheduled date is a widget: stock_rescheduling_popover reads a JSON field and lists the late upstream documents that put the date at risk.
| Technical name | stock_rescheduling_popover |
|---|---|
| Field types | char (holding JSON) |
| Views | list, form (transfers, manufacturing orders, sale order lines) |
| Module | stock, extended by usages in mrp and sale_stock |
| Used in core | 7 occurrences across stock, mrp, sale_stock, on json_popover fields of transfers, manufacturing orders and order lines |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. The widget is wired to server-computed JSON; there is no Studio path |
| Alternatives | popover_widget, actionable_errors, web_ribbon |
What the Rescheduling Popover does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
late_elements (JSON key) | array of {id, name, model} | The late upstream documents. Rendered as links that open each document's form view; without this key the popover never opens. |
delay_alert_date (JSON key) | string | The date shown after the list of late operations in the Planning Issue sentence. |
icon (JSON key) | string | Icon class for the trigger. The rescheduling subclass defaults to the warning triangle; the base widget defaults to fa-info-circle.(default: fa-exclamation-triangle) |
color (JSON key) | string | Color class of the trigger icon. Base widget default is text-primary.(default: text-danger) |
position (JSON key) | string | Popover placement relative to the icon, passed to the popover service.(default: top) |
popoverTemplate (JSON key) | string | Owl template rendering the popover body; the rescheduling flow passes stock.PopoverStockRescheduling. All other JSON keys become props of that template.(default: stock.popoverContent) |
msg / title (JSON keys) | string | Base-widget content keys: title renders as a heading, msg as plain text body when no custom template is given. The rescheduling template does not use msg. |
These are JSON keys, not view options. They live in the char field's value, which core computes server-side (json_popover). Anything you pass in options="{...}" on the field element is ignored by this widget. To change what the popover shows, change what the compute writes.
Working examples
Who does what: server JSON versus widget
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | Partial / changed | Not released. Default icons change to the new icon set (warning / info); logic unchanged. See below. |
| Odoo 19.0 | Verified | Verified against the shipped source and templates. |
| Odoo 18.0 | Verified | Byte-identical to 19.0 except the module pragma. |
| Odoo 17.0 | Verified | File present with the same widget and JSON contract. |
| Odoo 16.0 | Verified | File present; registered in the pre-descriptor component style. |
Upgrade note. The file is stable from 16.0 through 19.0 (the 18 to 19 diff is a module pragma only), so JSON produced by custom computes keeps working across those upgrades. The icon name convention is the thing to watch for Odoo 20, below.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The triangle shows but clicking does nothing | The JSON has no late_elements; the subclass gates the popup on that key. Expected for stale or partial data. Recompute the json_popover field, or use the base popover_widget for msg-only content. |
| No icon appears on a late transfer | The json_popover field is not in the view, or the compute produced an empty value because delay alerts are off. Check the field is in the view and that the delay alert propagation applies to the route involved. |
| Links in the popover open the wrong record | Custom template elements missing or duplicating the element-model and element-id attributes the click handler reads. Carry both attributes on every clickable element in a custom popoverTemplate. |
| Custom icon disappears after an upgrade | Explicit fa-* names in server-computed JSON while the client moved to a new icon set (a change visible on the Odoo 20 development branch). Update the icon names in your computes, or omit the icon key and inherit the defaults. |
| Popover shows raw JSON or nothing at all | The field value is not valid JSON, so the parse yields an empty object. Ensure the compute json.dumps a dict; the widget parses the char value with JSON.parse. |
Rescheduling Popover vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
stock_rescheduling_popover | Late-operation warnings on stock, MRP and sale documents | Popover lists late upstream documents as clickable links, gated on late_elements |
popover_widget | Generic informational popovers from JSON | Info styling, plain msg content, no record links |
| actionable_errors | Structured warnings with action buttons | Renders inline alert blocks with severity levels instead of an icon popover |
| web_ribbon | Whole-record status banners | Static corner ribbon, no click behavior or per-cause detail |
Frequently asked questions
What is the red triangle next to dates on Odoo transfers?+
Why does clicking the warning triangle sometimes do nothing?+
Does the popover reschedule anything?+
Can I configure this widget with view options?+
Can I reuse this popover pattern for my own warnings?+
Which documents show the rescheduling popover?+
Does the widget change in Odoo 20?+
Delay alerts firing after the customer already called?
Late-operation warnings are only useful if your routes, lead times and delay alert propagation are set up to fire them early. We configure Odoo supply chains end to end and build custom planning alerts on the same popover machinery core uses.
Book a free consultation