Tuesday, April 21, 2026
10 changes · saas-18.4
Resolved issues and error corrections
Website editors can now translate links on button blocks that are dragged from the sidebar. This fixes a gap where those button links could not be edited in translation mode, improving multilingual website editing reliability.
Original PR description
Before this commit, links on `Button` inner snippets dropped from the sidebar (not through powerbox) were never translatable. `o_translate_inline` was only added in link insert flows or when already present in snippet template, not when dropping inner button snippets. As a result, dropped button anchors were missing `o_translate_inline` and were filtered out from translatable inline links. Steps to reproduce: - Enter edit mode. - Drag and drop a `Button` inner snippet. - Save. - Switch to translation mode. - Try to edit the button link: it cannot be edited. This commit adds handling on snippet drop to tag dropped anchors with `o_translate_inline`. task-5943645
Fixed an issue in Attendance kiosk mode where searching for an employee after selecting a department could show an error instead of results. This keeps manual employee identification working reliably for users managing attendance check-ins.
Original PR description
**Steps to Reproduce:**
1. Install `hr_attendance` module with demo data.
2. Go to Attendances > Kiosk Mode > Identify Manually.
3. Select any department.
4. Try searching for an employee.
**Error:**
`ValueError - not enough values to unpack (expected 3, got 1)`
**Cause:**
The `employees_infos()` controller assumes that every item in the domain is a valid triplet (field, operator, value). However, the domain may also contain logical operators ('&'), which are not triplets. And then trying to unpack such entries leads to a ValueError.
**Fix:**
Add a validation to ensure the condition is a proper triplet before unpacking. Non-conforming entries (logical operators) are skipped.
sentry-7401444075
opw-6113268
Forward-Port-Of: odoo/odoo#258825Point of Sale preparation receipts now show the selected variant attribute when a variant is ordered as part of a combo. This helps kitchen or preparation staff identify the exact product choice instead of seeing only the base product name.
Original PR description
Before this commit, the preparation printer did not display the attribute value for an instant variant added inside a combo choice. This occurred because the attribute value was not properly set on the variant order line. Steps to reproduce: * Create a PoS product with multiple variants. * Create a combo product with a choice containing the variants. * Configure a preparation printer. * Open a PoS session and order the combo. * The printer displays only the base product name. opw-5949132 Forward-Port-Of: odoo/odoo#256981
Access error messages now identify the actual rule blocking access to archived records instead of incorrectly suggesting that all rules failed or that the issue is company-related. This helps users and support teams understand permission problems more clearly and resolve them faster.
Original PR description
When accessing an archived record directly, if access is prevented by a record rule other than a multi-company global rule, the error message incorrectly reports that all rules are failing, suggesting a company issue even though it is not the actual cause. The problem is that when access is denied, the diagnostic method `_get_failing` is used to determine which rules are failing. This method performs several count queries with different rule domains. However, `active_test` is True by default, excluding archived records from the count, causing the rule evaluation to miss some records and incorrectly mark rules as failing. With this commit, `_get_failing` evaluates rules with `active_test=False`, ensuring that only actually failing rules are reported. Forward-Port-Of: odoo/odoo#259592 Forward-Port-Of: odoo/odoo#259344
The Philippine localization now classifies the 12% input tax under the standard VAT 12% group instead of the capital purchases group. This helps ensure SLSP tax reporting uses the correct category for compliance and avoids misclassification in reports.
Original PR description
In this commit: - We change the group of tax '12% I', from 'Capital 12%' to 'VAT 12%' task-6092566 Forward-Port-Of: odoo/odoo#259956 Forward-Port-Of: odoo/odoo#259145
Attachments uploaded to cloud storage now keep the file type that was originally provided instead of having it automatically guessed again. This helps prevent incorrect file handling or display issues after files are moved to cloud storage.
Original PR description
When uploading an attachment to cloud storage via `_post_add_create(cloud_storage=True)`, the attachment's original `mimetype` is guessed even if we specify it. With this commit we explicitly preserve given mimetype Discovered during task-5153790 Forward-Port-Of: odoo/odoo#257979
This update fixes an unstable automated test for the web editor's link popover. It makes the test better match real user behavior, reducing false failures in validation without changing the customer-facing editing experience.
Original PR description
The popover opening is triggered through click, but there is a selectionchange handler on click that checks if the selection is outside of the link and, if it is, closes the popover. In this case, the click method didn't set the selection inside the link properly because of the presence of \ufeff around the link. The test actually passes by mistake when the runbot was fast, but failed when the runbot was slow, as the selectionchange handler had the time to execute and close the popover. This commit forces the selection to be inside the link after calling click, to be closer to what actually happens when a user click on a link, as opposed to a programmatic click. runbot-161423 Forward-Port-Of: odoo/odoo#259688
This change adjusts an internal automated test for the HTML editor so it behaves more consistently. It helps reduce false failures in the testing pipeline, supporting smoother releases without changing what users see in the product.
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#259731 Forward-Port-Of: odoo/odoo#259544
This fix prevents an internal automated test from failing when a required security group belongs to a module that has not yet been confirmed as installed. It helps keep e-invoicing quality checks stable without changing day-to-day user behavior.
Original PR description
The `get_default_groups` call happens during super.setUpClass(), therefore we have not checked (yet) if the module in which the security group is in is installed, and we end up with an Exception. task-none Forward-Port-Of: odoo/odoo#260230
This fixes a web interface issue where close or discard buttons without internal names could close a view without telling the system which action happened. Business workflows that rely on knowing whether a user closed or discarded an action can now respond correctly and consistently.
Original PR description
View buttons with no name cause onClosed to be called without any parameters even if special=true or dismiss=true. This commit fixes that which allows to know if a close/discard button caused the action onClosed callback. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260301