Wednesday, April 22, 2026
19 changes · saas-19.3
Enhancements to existing features
This update improves how work entry source values are merged in the HR work entry process. It helps ensure work entry data is combined more reliably, reducing the risk of inconsistencies in payroll-related records.
Original PR description
Task: 6119891 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Moves Analysis report now shows the date of each stock move directly in the list view, instead of hiding it behind debug mode. This makes it easier for users to review movement timing and understand inventory activity at a glance.
Original PR description
The date of the move is a basic and important information. Show it on the 'Moves Analysis' report list view, previously was only displayed in debug mode. task-5380628 Forward-Port-Of: odoo/odoo#254999
The website editor now uses a lightweight SVG placeholder for the video snippet preview instead of relying on a video file. This reduces ongoing maintenance and makes the preview more reliable over time.
Original PR description
Prior to this PR, the `s_video` inner snippet was using a video as placeholder, which implied maintenance to ensure the video is always available. To avoid maintenance and ensuring long term effectiveness, we replace this video with a `SVG` placeholder, similarly to what has been done for the `s_image`. task-5441285 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260042
The help text for the Invoicing Switch Threshold has been updated to be more precise. It now clearly explains that all entries created by invoicing before the threshold date are ignored, avoiding confusion for users setting up the switch.
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
This change restores the expected workflow when submitting the French tax filing package. It ensures the normal processing step still runs, preventing a test failure and keeping the report status updated correctly.
Original PR description
When merging the sending of the liasse fiscale, super() wasn't called anymore in action_submit and led to an assertError in test_state_progression() test
```
FAIL: Subtest TestAccountReturn.test_state_progression (return_type=account.return.type(186,))
Traceback (most recent call last):
File "/data/build/enterprise/account_reports/tests/test_account_returns.py", line 2087, in test_state_progression
self.assertEqual(account_return.state, 'paid')
AssertionError: False != 'paid'
```
runbot-275061Miscellaneous changes
This pull request updates the saas-19.3 release branch with release-related maintenance changes. It helps keep the versioning and release information aligned for the current delivery cycle.
This change makes an age-based payroll warning test use a fixed point in time instead of the current date. It prevents random failures in nightly builds and keeps test results consistent over time.
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
This update corrects several internal query counters used by automated performance tests, especially in mail-related areas. It helps the test suite reflect the real system behavior more accurately, improving confidence in performance reporting and preventing misleading results.
Original PR description
Update various (main mail-related) counters according to runbot state. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change fixes unstable automated tests around the field service geolocation feature. It reduces unnecessary test work so the test suite runs more reliably without affecting day-to-day user behavior.
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.
There were some translation overrides for `fr_BE` and `fr_CA` that were incorrect or unnecessary. We are deleting these files so they use the correct translations in `fr` instead. In the `nl_BE` translation, we are fixing a menu item so it is shorter, but still correct. task-5921458 Forward-Port-Of: odoo/enterprise#114373 Forward-Port-Of: odoo/enterprise#106998
Original PR description
There were some translation overrides for `fr_BE` and `fr_CA` that were incorrect or unnecessary. We are deleting these files so they use the correct translations in `fr` instead. In the `nl_BE` translation, we are fixing a menu item so it is shorter, but still correct. task-5921458 Forward-Port-Of: odoo/enterprise#114373 Forward-Port-Of: odoo/enterprise#106998
This change updates an internal compatibility check for the lxml library so Odoo correctly recognizes when an older workaround is no longer needed. It helps keep the system aligned with the latest lxml release behavior, reducing the risk of unnecessary patches being applied.
Original PR description
Whitelisting of ARIA attributes is now part of the milestone for LXML 6.1. This commit updates monkey patch's obsolescence detection accordingly. Forward-Port-Of: odoo/odoo#258910
This change fixes an unreliable automated test in the HTML editor, making test results more consistent. It helps ensure future builds are less likely to fail randomly, improving confidence in the editor’s quality without changing the user experience.
Original PR description
My last desperate fix attempt did not fix the issue so here is yet another desperate fix attempt. I have seen issues related to the use of `setContent` just to set the selection in the past so I hope it might be that. It's the only noticeable change between this test and the others, be it icon tests or color selector ones. runbot-242333 Forward-Port-Of: odoo/odoo#259978 Forward-Port-Of: odoo/odoo#259544
The call menu now includes the Picture-in-Picture option, making it faster to keep a call visible while moving to another conversation. The menu also fixes the appearance of Fullscreen and Picture-in-Picture so these options display normally instead of looking faded.
Original PR description
Before this commit, Call Menu did not have the "Picture-in-Picture" action. This is unfortunate because this is one of the most valuable action to have it available there, as a frequent usage of…
Before this commit, Call Menu did not have the "Picture-in-Picture" action. This is unfortunate because this is one of the most valuable action to have it available there, as a frequent usage of Discuss is to join a call, switch to another conversation or chatter, and then wanting to keep an overlay of the call. Without the "Picture-in-Picture" in Call Menu, this forces user to access the Discuss conversation again and then click on "Picture-in-Picture" there, when clicking on the call menu would be faster. This commit adds the "Picture-in-Picture" action in the call menu to ease using this feature. Also fixes an issue where "Fullscreen" and "Picture-in-Picture" actions have reduced opacity in the Call Menu. This comes from opacity hover effect that should be limited to their inline visual in the Call view but was mistakenly also present in the dropdown. Before / After <img width="440" height="369" alt="Screenshot 2026-04-17 at 14 15 58" src="https://github.com/user-attachments/assets/2accb779-28f5-4930-a101-db5e52b029b7" /> Forward-Port-Of: odoo/odoo#260512 Forward-Port-Of: odoo/odoo#259866
This change makes an automated test for the editor’s power buttons more reliable on slower systems. It avoids false failures caused by timing differences, so test results are more stable without changing the product behavior.
Original PR description
Waiting for a full animation frame is too dangerous. In the general case, an animation frame happens every 16ms, in which case the power buttons haven't been updated yet since they have a debouncing timeout of 30ms. However, when the runbot is slow, more than 30ms may very well have elapsed between two animation frames. When that is the case, the power buttons are displayed and the test fails. This commit changes the forced awaiting of an animation frame to a waiting pased on the time passed. In the general case, an animation frame will have happened in 20ms, so the test will still catch a regression. When the runbot is slow however, more time might have passed, but not necessarily an animation frame, so the power buttons should still be invisible, making this test more reliable. runbot-242466 Forward-Port-Of: odoo/odoo#259854 Forward-Port-Of: odoo/odoo#259654
When a subcontractor resupply picking is created through a stock-triggered route, it now correctly displays the originating purchase order. This makes it easier for users to trace the supply flow and understand which order the picking belongs to.
Original PR description
### Steps to reproduce: - In the settings enable: Subcontracting, Multi-Step Routes - Inventory > Configuration > Warehouse Management > Routes - Edit the 'Resupply Subcontractor on Order' route,…
### Steps to reproduce: - In the settings enable: Subcontracting, Multi-Step Routes - Inventory > Configuration > Warehouse Management > Routes - Edit the 'Resupply Subcontractor on Order' route, rules supply method to: Take from stock, if unavailable, trigger another rule (mtso) - Create a subcontracted bom For a product P with a component COMP - Create and confirm a PO for 1 unit of P with your subcontractor - Use the Resupply smart button to access the resupply picking #### > The resupply picking does not refer to the source PO ### Cause of the issue: The link is currently computed based on `move_dest_ids` which are only set for mto moves. However, moves created from mtso rules are `make_to_stock`. ### Fix: Since 19.0 2713876dbc70d3984e584a9037a2206dcda4e84a, we can rely on references to rebuild the link between the resupply picking and the source PO even in mtso. Note that this will also add the source PO link to each other picking of the reference. opw-6079680 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256689
This fix ensures return documents show the correct year in their date range labels. It prevents cases where a January 2023 date was incorrectly displayed as January 2022, which could cause confusion when reviewing reports or records.
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
This update fixes a small wording mistake in website and mass mailing text snippets, changing “am” to “pm” where needed. It helps ensure opening hours and related customer-facing content are accurate and less confusing.
Original PR description
am to pm Forward-Port-Of: odoo/odoo#260577
This update fixes a typo and improves the visual styling in the VoIP dashboard used with spreadsheets. It does not change how the feature works, but it helps make the interface clearer and more polished for users.
Original PR description
task-6132220 Forward-Port-Of: odoo/enterprise#114324
This pull request updates the Enterprise branch for the 19.3 release line. It is mainly a release-management change to keep the codebase aligned with the latest approved version and support ongoing maintenance.