Skip to main content
iVentureTeam

mrp_remaining_days_unformatted

The remaining days widget with its badge taken off. Same relative dates, plain text, because a manufacturing list already has enough color in it.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated August 27, 20264 min read
Technical namemrp_remaining_days_unformatted
Field typesdate, datetime
Viewslist, form
Modulemrp, the Manufacturing app
Used in coreDeadline columns in the Manufacturing views
VersionsOdoo 20.0, Odoo 19.0
No-code setupNo. It is set in view XML and depends on module-specific data
Alternativesremaining_days, date, formatted_date, daterange

What the remaining days, plain does

Odoo's remaining days widget turns a date into a phrase: today, tomorrow, in five days, three days ago. It also wraps that phrase in a colored badge whose color depends on how close or overdue the date is.

On most screens the badge is the point. On a manufacturing list it is one signal too many, because the rows already carry state coloring, priority markers and availability indicators, and another colored pill makes the whole thing harder to scan.

This widget is the same relative wording without the badge. It changes the template and nothing else, so the phrasing, the thresholds and the language handling all come from the widget it extends.

What this means for your team

Visual noise on an operational list is a real cost. A planner scanning fifty manufacturing orders is looking for exceptions, and exceptions only stand out when the baseline is quiet. Removing a badge that repeats information already carried by the row's own state is a small change that makes the important color mean something again.

The practical note is the rename ahead. The behavior survives into the next version under a different name, so this is an upgrade task rather than a feature loss, but a view left unchanged will fall back to the plain date and lose the relative wording entirely.

Supported options in Odoo 19

The widget declares its own display name and supported types rather than spreading the parent's descriptor, which means it does not inherit the parent's options. Read from mrp_remaining_days_unformatted_field.js, Odoo 19.0.

OptionTypeWhat it does
the parent's optionsnot inheritedThe descriptor declares its own display name and supported types rather than spreading the remaining days descriptor, so the parent's declared options are not available here.(since Odoo 19.0)

Not spreading the parent descriptor has a consequence. Anything the remaining days widget declares as an option is not declared here, so tooling will not offer it and the extractor does not read it. The component's own behavior is inherited; the descriptor's is not.

Working examples

The usual usage

<field name="date_deadline"
       widget="mrp_remaining_days_unformatted"/>

Relative wording, no badge.

The badged version

<field name="date_deadline" widget="remaining_days"/>

The parent widget, with the colored badge that this one removes.

The plain date

<field name="date_deadline"/>

What a view falls back to if the widget name stops resolving.

Six lines, and one descriptor it deliberately does not spread

The file is six meaningful lines: a subclass that changes the template, and a descriptor that names the component, gives it a display name and declares two supported types.

The interesting part is what the descriptor does not do. It does not spread the parent's descriptor, so the parent's declared options are not inherited. That is a small difference with a real effect: an option that works on the badged widget is not declared here, and the extractor built for it does not run.

Everything about the relative wording itself, including how far ahead or behind a date has to be for each phrase, belongs to the component being extended, so the two widgets always agree on the words even when they disagree on the styling.

The rename on the development branch keeps the behavior and moves it under a name describing relative dates rather than remaining days, which reads as part of a wider tidy-up of that family.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. Same behavior under a relative-date name on the development branch.
Odoo 19.0VerifiedFirst version. Verified against the shipped source.
Odoo 18.0Not availableWidget does not exist.
Odoo 17.0Not availableWidget does not exist.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. The widget is new in Odoo 19. Coming from Odoo 18 there is nothing to migrate. Going forward there is: the name changes on the development branch, and because an unknown widget name falls back to the field's type, a view left unchanged loses the relative wording.

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 this page after the release.

The widget is renamed. On the development branch it lives under a relative-date name in a file of the same shape, with the same behavior. Search custom manufacturing views for the current name before upgrading, because the fallback is a plain date rather than an error.

Common problems and fixes

SymptomCause and fix
The badge is missingIntended. Removing it is the entire purpose of this widget. Use the remaining days widget if the badge is wanted.
An option that works on remaining days does nothingThe descriptor does not spread the parent's, so its options are not declared or extracted. Use the parent widget if you need that option.
The wording differs from another screenIt should not; the phrasing is inherited from the same component. Check whether the other screen uses a plain date field.
The column shows a plain date after upgradingThe widget is renamed on the development branch and the old name no longer resolves. Update the view to the new widget name.
It will not attach to my fieldTwo date types are declared as supported. Point it at a date or datetime field.
Missing widget errorThe manufacturing module is not installed in that database. Install Manufacturing, or use the remaining days widget.

Remaining days, plain vs the alternatives

WidgetBest forKey difference
mrp_remaining_days_unformattedDeadlines on lists that already carry plenty of colorThe remaining days wording with the badge removed, and the parent's options not inherited
remaining_daysDeadlines where a colored badge helpsKeeps the badge and its declared options
dateExact datesNo relative wording at all
formatted_dateA specific date formatFormatting rather than relative phrasing
daterangeA start and end pairTwo dates rather than one deadline

Use the badged remaining days widget wherever the color carries information the row does not already show. Use a plain date field where the exact date matters more than how far away it is, which on a purchase or invoice list it usually does.

Frequently asked questions

How does it differ from the remaining days widget?+
Only the template. The relative wording, the thresholds and the language handling are inherited; the colored badge is removed.
Why remove the badge?+
Manufacturing lists already carry state coloring and other markers, so a second colored pill competes with the signals that matter.
Do the parent's options work here?+
No. The descriptor declares its own display name and supported types rather than spreading the parent's, so its options are neither declared nor extracted.
What happens in Odoo 20?+
It is renamed to a relative-date name with the same behavior. A view left unchanged falls back to a plain date, losing the relative wording.
Which field types does it accept?+
Dates and datetimes, as declared in its own descriptor.

Planning screens where the exceptions actually stand out

Color, badges and priority markers all compete for the same attention, and a busy list ends up saying nothing. We tune Odoo planning and manufacturing views so the signal survives, on versions 16 through 19.

Book a free consultation

How this page was produced

The template substitution, the descriptor that declares its own display name and supported types without spreading the parent's, and the inherited relative wording were read from mrp_remaining_days_unformatted_field.js on the Odoo 19.0 branch. The rename was verified by locating the replacement file and registration on the public development branch. Spotted an error? Tell us and we will correct the page.