Daily updates from Odoo
Friday, October 31, 2025
15 changes · master
Enhancements to existing features
The asset list view has been adjusted to show additional useful information while keeping some fields hidden by default. This gives users more flexibility to see relevant asset details without cluttering the standard view.
Original PR description
This PR adds some new fields to the assets list view and makes some fields `optional='hide'`. Task [link](https://www.odoo.com/odoo/project.task/5163529) task-5163529
VoIP users can now close error screens when the issue does not block their work. This makes it clearer that minor errors can be dismissed and helps reduce confusion during calls or softphone use.
Original PR description
When the error is non-blocking, a close button is now added to the error screen in order to indicate that the error can be removed. Task ID: [4891947](https://www.odoo.com/odoo/project/5778/tasks/4891947)
This update removes outdated invisible fields from several Odoo views across website, accounting, helpdesk, WhatsApp, and related modules. The change simplifies internal screen definitions and reduces maintenance overhead without changing day-to-day functionality for users.
Original PR description
Invisible field from views are useless since: see: https://github.com/odoo/odoo/commit/5639ed865c5a3b82bab25b0ecac28c68c02e93065639ed8 see: https://github.com/odoo/odoo/pull/137031
This update simplifies how website builder options are defined and shared across related builder components. It helps developers maintain website editing features more consistently, reducing future maintenance effort without changing the business-facing behavior.
Original PR description
The commit: 1. use static property to configure a builder option 2. introduce the concept of dependencies to access the plugin's shared in builder option 3. make a plugin context the same for Plugin,…
The commit:
1. use static property to configure a builder option
2. introduce the concept of dependencies to access the plugin's shared
in builder option
3. make a plugin context the same for Plugin, BuilderOption and
BuilderAction to have the same API in each class.
Before this commit, to define an option, we had to define a javascript
object that would contain the information of the option within the
`builder_options` resource.
```js
class MyPlugin extends Plugin {
resources: {
builder_options: [
{
selector: "div.selector",
template: "my.owlTemplate",
cleanForSave() {}
// ... other option props
}
]
}
}
// For a custom component
class MyPlugin extends Plugin {
resources: {
builder_options: [
{
selector: "div.selector",
template: MyCustomComponent,
cleanForSave() {}
// ... other option props
}
]
}
}
class MyCustomComponent extends BaseOptionComponent {
// ...
}
```
When building anything for the builder, there is 3 classes that are
important: `Plugin`, `BaseOptionComponent`, `BuilderAction`.
In practice, the option object defined in builder_options feels
strange. On the other hand, making the configuration of the option as
a static property of the component somehow feels simpler as everything
related to that option is defined in the same class.
```js
class MyPlugin extends Plugin {
resources: {
builder_options: [MyCustomComponent]
}
}
class MyCustomComponent extends BaseOptionComponent {
static template = "my.owlTemplate";
static selector = "div.selector";
static cleanForSave(context) {}
// ...
}
```
To have the same mental context in the 3 important class, they all
share the same API (`dependencies`, `dispatchTo`, `getResource`, ...)
(see `Editor.getPluginContext`)
To access a plugin shared method, it's now the same for `Plugin`,
`BuliderAction` and `BaseOptionComponent`:
```js
class MyCustomComponent extends BaseOptionComponent {
static selector = "mySelector";
static dependency = "myPlugin";
myMethod() {
this.dependencies.myPlugin.pluginMethod();
}
}
```
To access a resource, dispatch, ...:
```js
class MyCustomComponent extends BaseOptionComponent {
static selector = "mySelector";
myMethod() {
const resource = this.getResource('myResource');
}
}
```
Forward-Port-Of: odoo/enterprise#96515
Forward-Port-Of: odoo/enterprise#94102Payroll rule parameters now keep a visible history when key values or their start dates change. This helps payroll teams audit configuration changes more easily from the rule parameter record itself.
Original PR description
This commit adds native-style tracking for the fields `date_from` and `parameter_value` of the model `hr.rule.parameter.value` inside its parent model `hr.rule.parameter` that nests parameter value lines in its form view. For this purpose, a chatter was thus added to `hr.rule.parameter` form view. TaskID: 5176977
Resolved issues and error corrections
This fix prevents Swiss payroll issue checks from failing when payslip adjustments are evaluated automatically. Users will now only see the restriction when they explicitly open the adjustment wizard, keeping payroll validation flows more reliable.
Original PR description
Tests failing in l10n_ch_hr_payroll_account because since the ajustment of payslips have been moved to the issues, the action_adjust_payslip is run at the compute of the issues which raises for Switzerland. Instead, we should raise in the default_get of the wizard if we click on the button. Task: 5223242
This update corrects a small reference mistake that could trigger an error when the Indian payroll feature looked for the wrong employee group. It helps payroll-related screens and processes run reliably without unexpected access group failures.
Original PR description
Before this commit an error would trigger caused by a small typo where instead of referencing the hr_payroll module it referencd the hr module which did not define that group. The first appearance is odoo/enterprise#90795. task-5129283 Forward-Port-Of: odoo/enterprise#96000
Dimona-related employee fields are now shown only for Belgian employees instead of appearing for everyone. This keeps employee records cleaner and ensures country-specific payroll information is displayed only where relevant.
Original PR description
Before this commit, the fields about dimona were shown for all employees, now these fields will be displayed only for belgian employees. task-5148931 Forward-Port-Of: odoo/enterprise#96703
Opening a field service task from the map view now works without triggering an error. The fix updates time formatting so it respects local settings while avoiding seconds, improving reliability for field service teams using the map.
Original PR description
Steps: -------- - Install industry_fsm - Go to FSM app > Map Issue: -------- When opening the FSM task from the map menu, a traceback occurs. Cause: ---------- The removal of `shortTimeFormat`, as shown in the this commit. https://github.com/odoo/odoo/commit/062b14097033afc19252cf3b8bb1fc541f8c868d#diff-39c1e6808cb2412961c390a24d5e6737f2fca1ef85ba2c40e501114311f596c2L67 Fix: ---- In this commit, the time object is built to be able to format the time without any seconds and take into account the time format defined in localization. task-5220054 Forward-Port-Of: odoo/enterprise#98369
This fix improves validation around weekly available hours when an employee is created today but their work assignment started in a previous month. It helps ensure attendance planning shows correct availability in week views for this scenario.
Original PR description
Modified the test case to check the flow for when we create employee for the date = today and set him an occupation starting in the past month. task-4985887 Forward-Port-Of: odoo/enterprise#92023
The payslip screen no longer shows an export button that led users to a missing page. This prevents confusion and avoids a dead-end error when reviewing payroll records in debug mode.
Original PR description
Steps to reproduce: ------------------------- 1. Install `hr_payroll` module 2. Enable debug mode and click on Become Superuser 3. Go to All Payslips and open any payslip record 4. Click on the…
Steps to reproduce: ------------------------- 1. Install `hr_payroll` module 2. Enable debug mode and click on Become Superuser 3. Go to All Payslips and open any payslip record 4. Click on the Export Payslip button Observation: ------------------------- A 404 (Page Not Found) error appears when clicking the Export Payslip button Issue: ------------------------- The button triggers the route `/debug/payslip/<id>`, which was removed in the following commit https://github.com/odoo/enterprise/commit/57969bcaf876a13c36794adeb47e0da938e297ad#diff-0105b1a6a9e742e7eeaf7cc727745ebd3932177378d46332d4ca854f931b3359 The route was never reintroduced afterward, but the Export Payslip button remained in the view. As a result, clicking it leads to a 404 error Solution: ------------------------- 1. Temporarily bypass the `action_export_payslip` function. 2. Remove the Export Payslip button from the XML in the master forward port branch, as doing so does not impact any existing customizations relying on that button opw-5115946 Forward-Port-Of: odoo/enterprise#97361 Forward-Port-Of: odoo/enterprise#96359
The approval request print report now has cleaner formatting, with better label spacing and more consistent heading sizes. This makes printed or exported approval requests easier to read and more professional for users.
Original PR description
Steps to Reproduce: - Install approvals module. - Navigate to Approvals → My Approvals → My Requests → Print report. Issue: - The formatting of the report is not proper. Solution: - Fixed the report's QWeb template (approvals.report_aprroval_request_document). - changed col-2 to col-3 to give the labels more space and improve alignment with the field values - changed h5 to h6 for more consistent and appropriate font size throughout the document **before :** <img width="777" height="818" alt="image" src="https://github.com/user-attachments/assets/86cbaf50-191a-412b-9b8e-149442256819" /> **after :** <img width="829" height="623" alt="image" src="https://github.com/user-attachments/assets/da237a87-7a7b-45db-8347-d64e1e987469" /> Forward-Port-Of: odoo/enterprise#95609
This fixes an installation issue when the Mexican payroll module is installed by itself. The module now includes the required demo company data again, so its demo departments and related records can be created successfully.
Original PR description
In the pr #95221 the data from the demo company where no new fields were added was deleted. This decision was made to standardize the demo data in the smallest number of modules. However, the l10n_mx_hr_payroll module does not depend on any other l10n_mx module, as it does not need any of the information added by the other modules, but it does add information about departments and other items based on the company's demo data. This caused an error when installing this module alone, as it attempted to add this information to a company that did not exist. To fix this, the company information is also added as demo in this module, as it was before. I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#98404
This update makes an appointment test more dependable by matching how customer booking details are handled in the real booking flow. It reduces false test failures without changing the customer-facing appointment experience.
Original PR description
The test 'test_customer_event_description' was failing inconsistently due to a discrepancy in how the event description is generated. The test previously relied on the base calendar model's logic,…
The test 'test_customer_event_description' was failing inconsistently due to a discrepancy in how the event description is generated. The test previously relied on the base calendar model's logic, which automatically creates a description by selecting the first partner associated with the event (excluding the organizer) based on default record ordering. This selected partner may not always be the actual person who booked the appointment. However, when a user books through the front-end, the controller uses specific logic to build the description, correctly identifying the booker and bypassing the model's default behavior. This difference caused the test to occasionally choose the wrong partner for the description, resulting in unpredictable failures. This commit aligns the test more closely with the actual booking behavior seen by users. It now explicitly prepares the event description using the designated booker's details and prevents the base model logic from interfering. This ensures the test is reliable and accurately validates the description content. A potential future improvement would involve refactoring the controller's description logic into the model layer for better testability, as the current test mimics the controller logic, which could diverge over time. Task-5207757 Forward-Port-Of: odoo/enterprise#98221
Users importing Indian e-invoice IRN JSON files can now complete the process even when they do not have access to certain company settings. This prevents an unnecessary permission error and helps invoice imports proceed smoothly for affected users.
Original PR description
When importing an IRN JSON as an invoice, users without sufficient access rights to `res.company` fields encountered an access error on `l10n_in_edi_production_env`. This commit uses `sudo()` to safely read the company’s EDI environment configuration without requiring extra permissions. Before this PR: Import failed with error: `You do not have enough rights to access the field 'l10n_in_edi_production_env' on Companies (res.company)` After this PR: Import proceeds successfully for users without `res.company` read rights. Forward-Port-Of: odoo/enterprise#98528