Daily updates from Odoo
Wednesday, April 22, 2026
16 changes · master
Enhancements to existing features
The French reporting export screen now allows longer text lines to wrap instead of being cut off. This makes export information easier to read and reduces confusion for users reviewing async export details.
Original PR description
Improves the UI by allowing the text lines to wrap and fully be visible. No task ID
The accounting reports setup screen no longer shows an informational warning about reports using custom handlers. This reduces clutter for users who customize reports and removes a message that is no longer considered useful.
Original PR description
Before this commit: - We had one info banner with the message indicating that the report is using a custom handler, so a change in the parameters used for computation could lead to errors. After this commit: - Now, we are removing this info banner from the report form view, because there is no need for this banner anymore, as if the user wants to customize the reports, they'll do it anyway. Task-6037421
The settings text for the Invoicing Switch Threshold now explains that all entries created by Invoicing before the threshold date are ignored, not just invoices. This helps users better understand what data is excluded and reduces confusion during accounting setup.
Original PR description
The previous "Invoicing Switch Threshold" explanation was misleading as it said only invoices prior to the threshold date is not taken into account. The explanation is updated to state that all entries created by Invoicing before the threshold date will be ignored. task-5940144 Forward-Port-Of: odoo/enterprise#113635
Resolved issues and error corrections
Approval request reports now still translate correctly when no contact is selected. If the contact language is unavailable, the report uses the request owner’s language or the system default, ensuring users receive printed approvals in the expected language.
Original PR description
Steps to reproduce: ------------------ 1. Install Approvals. 2. Select an approval type from Approvals > Configuration and ensure the 'Contact' field is not required. 3. Install a second language (e.g., Arabic) and switch the user's language. 4. Create a new approval request with this approval type and set user as the request owner. 5. Try to print the approval request. Current behavior: ----------------- The report is only translated when partner is present because it translates using `partner_id.lang`. Since the partner is not required in all cases, `lang` can evaluate to False when it is missing, causing the report to bypass translations. Expected behavior: ------------------ The report should fall back to the request owner's language or the system's default language if the partner is not available. opw-6010222 Forward-Port-Of: odoo/enterprise#112476
The UAE financial audit report test data was updated to match the latest account codes from the new chart of accounts. This keeps automated checks aligned with the current accounting setup and helps avoid false test failures.
Original PR description
in the odoo PR we changed a lot of the account codes. in this pr we are just fixing a test where the csv was still comparing old account codes in the CSV task-5455978
This fix makes an age-related Belgian payroll test use a fixed date so results no longer change as time passes. It prevents intermittent nightly build failures and improves confidence in payroll validation checks without changing customer-facing payroll behavior.
Original PR description
The test was failing intermittently in nightly builds that run at a date in the next year (e.g.: 2027-04-20). The issue was that the student's age is calculated at runtime using : - When the student is age 19 (2026): min wage = 2057.87 < 2100 → PASS - When the student is age 20 (2027): min wage = 2136.84 > 2100 → FAIL task-6144986 Runbot error: https://runbot.odoo.com/odoo/runbot.build.error/242589
The accounting reports return name now shows the correct calendar year for date ranges that start near the beginning of January. This prevents confusing labels such as showing January 2022 for a return that actually starts in January 2023.
Original PR description
Steps to reproduce: - Create a return from Jan 2023 to April 2023 -> the dates displayed in the name will be Jan 2022 - Apr 2023 The display is incorrect because we used the wrong date format, and therefore switch from using YYYY to yyyy as the first one is the ISO standard year and the second the calendar year. They might differ on the result here because 01 Jan 2023 falls on a Sunday, but ISO week starts on Monday, so it took the previous year (2022) Forward-Port-Of: odoo/enterprise#114428
The deduplication screen now correctly hides the discard button when users are viewing records that have already been discarded. This avoids confusion and prevents users from trying to discard records again, including when only some records in a duplicate group are discarded.
Original PR description
Ensure the discard button is hidden in the deduplication view when displaying discarded records, including cases where only part of a duplicate group is discarded and shown through the archive/discarded filter. task-6124494
Signed files added from a project or task now automatically select the project's configured Documents folder instead of defaulting to My Drive. This keeps signed project paperwork organized in the same place as other project attachments and reduces manual filing.
Original PR description
Steps to Reproduce --- - Request a signature from a project task or project and complete the signing process. - In the chatter, click "Add to Documents" on the signed attachment. Issue --- Signed documents attached to projects or tasks default to "My Drive" when added to Documents, instead of using the project's configured Documents folder. Current Behaviour --- - Regular task/project attachments correctly preselect the project Documents folder. - Signed attachments fall back to "My Drive". Expected Behaviour --- Signed documents linked to projects or tasks should preselect the project's Documents folder, consistent with regular attachments. Fix --- Extend get_documents_operation_add_destination to handle sign.request attachments linked to project.task or project.project, resolving to the corresponding project Documents folder. task - 5226770 Forward-Port-Of: odoo/enterprise#105600
Restarting an IoT box no longer resets a printer subtype that a user manually selected. This prevents unwanted configuration changes and keeps device settings aligned with business preferences.
Original PR description
Steps to reproduce: 1. Connect a printer to the IoT box and pair with a DB 2. Manually change the subtype of the printer in the DB 3. Restart the IoT box so it resends its devices. **Expected behaviour**: Subtype remains as the user-set value. **Actual behaviour**: Subtype is reset to the original value. To fix this issue, we simply remove any check for subtype in the device updating condition. Now, a device will only reset if its type changes. Forward-Port-Of: odoo/enterprise#114416
The W-2 report CSV export no longer fails when the End Date field is left blank. In that case, the file name now uses the current year, allowing payroll users to generate the report successfully.
Original PR description
Currently, an error occurs when user tries to create a csv for w2 form with no end date defined. Steps to replicate: - Install `l10n_us_hr_payroll`. - Open Payroll > Reporting > W2 Report. - Click…
Currently, an error occurs when user tries to create a csv for w2 form with no end date defined.
Steps to replicate:
- Install `l10n_us_hr_payroll`.
- Open Payroll > Reporting > W2 Report.
- Click `New` > Remove value from `End Date` and click Generate.
Error:
```
File '/home/odoo/odoo19/enterprise/l10n_us_hr_payroll/models/l10n_us_w2.py', line 249, in action_generate_csv
self.csv_filename = f'form_w2_{self.date_end.year or date.today().year}.csv'
^^^^^^^^^^^^^^^^^^
AttributeError: 'bool' object has no attribute 'year'
```
Cause:
- As the user did not give any value for `End Date`, False was passed and when the execution flow reached [here] `self.end_date` is False and attempting to access `self.end_date.year` results in this error.
Solution:
- If we do not receive the `self.end_date` while generating the CSV, we will use the current year to generate the CSV file name.
[here]: https://github.com/odoo/enterprise/blob/01be8d6e9384bcb340559847d529b4887e073519/l10n_us_hr_payroll/models/l10n_us_w2.py#L248
No ID
Forward-Port-Of: odoo/enterprise#114363
Forward-Port-Of: odoo/enterprise#113408Rental planning now correctly applies calendar leave entries that are not tied to a specific resource to all resources. This helps prevent availability and scheduling errors when company-wide unavailable periods are configured.
Original PR description
Before this commit, any `Resource Calendar Leave` created with no `Resource` related to it was ignored, while it should have been applied to all `Resources`. This commit makes sure that any `Resource Calendar Leave` with no related `Resource` is applied to all `Resources` as intended. task-5798796 Forward-Port-Of: odoo/enterprise#114274 Forward-Port-Of: odoo/enterprise#112575
Self-ordering now loads only the point-of-sale configuration and session information it actually needs. This reduces unnecessary data handling, helping the self-ordering experience run more efficiently without changing how users interact with it.
Original PR description
This commit optimizes pos_config and pos_session data loading by only loading the fields required for self-ordering. X-original-commit: ce78609b368e541a70c17141ee5b51543c73c1d0 Forward-Port-Of: odoo/enterprise#113801 Forward-Port-Of: odoo/enterprise#113661
The employee form in Swiss payroll now shows the contract template button with styling that matches the surrounding interface. This removes visual inconsistency and makes the form look more polished for users.
Original PR description
Fix contract template button styling: remove incorrect classes and align font-size and border with the surrounding UI task-6068488 Forward-Port-Of: odoo/enterprise#112113
This update stabilizes the geolocation service tests used by Field Service planning. It reduces unnecessary test work so the checks run consistently and no longer fail at random, which helps keep development and releases more reliable.
Original PR description
This commit fixes the undeterministic test failures for the geolocation service. We reduce the [workload](https://github.com/odoo/enterprise/blob/master/planning_field_service/static/src/services/field_service_geolocation_service.js#L26) of the `startWatch` method by mocking the `has_group` calls. Forward-Port-Of: odoo/enterprise#114572
This change updates several internal counters used by mail and related performance checks so they match the expected system state. It helps ensure automated checks stay reliable and prevents incorrect error handling when rendering content with a missing field.
Original PR description
> > Update various (main mail-related) counters according to runbot state. Forward-Port-Of: odoo/enterprise#114603