Thursday, August 27, 2026
14 changes · saas-19.1
Resolved issues and error corrections
Payment XML files now use uppercase character encoding labels to meet stricter bank validation requirements. This helps avoid warnings or rejections from providers such as SIX in Switzerland, improving reliability of SEPA and ISO 20022 payment exports.
Original PR description
The W3C recommendations for XML state that the encoding defined for an XML document should not be case-sensitive. However, some banking providers (SIX for Switzerland) are stricter and may throw warnings or errors if upper-case is not used. https://www.w3.org/TR/2008/REC-xml-20081126/#NT-EncodingDecl opw-4948708 Forward-Port-Of: odoo/enterprise#128301 Forward-Port-Of: odoo/enterprise#125807
When users drill into accounting report figures, they can now view the related journal items using all available views, such as pivot, graph, kanban, and list. This makes financial analysis more flexible and avoids forcing users into a single list-only view.
Original PR description
Problem: When auditing reports, the audit cell action was only showing the journal items in the list view, and not enabling other view modes (pivot, graph, kanban). Steps to reproduce: 1. Go to Accounting > Reporting > Balance Sheet 2. Click on any cell with a number in the report 3. Notice how the journal items are only shown in the list view, and you cannot switch to other view modes. Cause: The action was hardcoded to only show the list view. opw-6403704 Forward-Port-Of: odoo/enterprise#129214 Forward-Port-Of: odoo/enterprise#128563
This fixes an intermittent failure in mail mention suggestion tests by ensuring the test waits for the correct suggestion-list rendering. It improves confidence in automated checks without changing user-facing mail behavior.
Original PR description
Before this commit, the test "select @ mention from the suggestion list being filtered" could fail on runbot, on the check that follows the first "@": Failed to find 2 of ".o-mail-Composer-suggestion" (Timeout of 10 seconds). Found 0 instead. This happens because the test holds a render open on ImStatus, a component the member list renders as well as the composer. The composer tells the server that the user is typing, the bus sends the status back, and the member list re-renders its ImStatus with another class. The hold catches that render, the one that also brings the suggestions on screen. This commit gives the children of NavigableList an inNavigableList environment flag, and holds the render only on an ImStatus that has it. https://runbot.odoo.com/odoo/error/946282 Forward-Port-Of: odoo/odoo#284484
Unsaved translation text now stays in place when a user drags the translation popup. This prevents users from losing newly entered translations during normal dialog movement, reducing rework and frustration.
Original PR description
Step to reproduce: - have atleast two language and install sale - open any product, hover over product, and click on Translation button - Enter a value for one of language - drag the dialog Observation: - we lose the data, we just entered and fallback to original data Cause: - Inputs used `t-att-value="term.value"`, bound to original data. Since this content is passed to Dialog via slot, it is rendered/patched as part of Dialog's render cycle, - Dragging updates Dialog's state, triggering a patch that re-evaluated the slotted template and reset input values (which comes from `term.value`) Fix: - bind value to `updatedTerms[term.id] ?? term.value` so edits survive patches triggered by the parent Dialog opw-6431521 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#283514
This fix prevents attendance records from being incorrectly disconnected from unrelated work entries when early or batch-created attendances span UTC day boundaries. It helps keep employee attendance and work entry data accurate for payroll and HR reporting.
Original PR description
When an early attendance starts on the previous UTC day, the cleanup uses full UTC days as boundaries. This can include an unrelated work entry and remove its attendance link. Use the generated work entries as cleanup boundaries so only entries that can overlap the new entries are considered. opw-6412221 Forward-Port-Of: odoo/enterprise#129209 Forward-Port-Of: odoo/enterprise#127040
The Turkish reporting journal form now places the return from sales account field in the correct position. This prevents account labels and values from appearing under the wrong captions, reducing confusion during journal setup.
Original PR description
The journal form renders `default_account_id` as six standalone labels followed by two `nolabel="1"` fields, one for bank, cash and credit journals and one for sale, purchase and general ones. The xpath matched the first of those two fields, so the return from sales account was inserted between them. Its own label then landed in the middle of the label run, shifting the group grid: both labels rendered side by side with their values underneath, each next to the wrong caption. Anchor on the second field instead, so the new field follows the whole label and field run. Task-6438412 Forward-Port-Of: odoo/enterprise#128083
This fixes a rare website caching issue that could cause pages to fail when an expired cached page was refreshed. The update makes refreshed cached pages behave consistently, improving reliability for visitors without changing normal website behavior.
Original PR description
**Problem:** Normally, the cached response for an HTTP request will be 'flattened', meaning the QWEB template is force-rendered and stored as `response.response[0]`. However, when the cached response is too old, a new cache value is set which is not flattened. This is inconsistent with the value normally returned by `_get_response_cached()` which will cause a traceback when accessing `response.response[0]`. This issue is rarely reproducible because `flatten()` is usually called on the response later (outside `_get_response()`), and because the returned response points to the same object as in the cache, the cache gets flattened as well. **Solution:** When the cached response is too old, flatten the new response before caching it. opw-6382359 Forward-Port-Of: odoo/odoo#277590
Reinstalling the Project app with demo data after using Sales no longer causes an error. The demo setup now avoids reconfirming sales orders that are already confirmed or cancelled, making demo database setup more reliable.
Original PR description
### **Steps to reproduce:** - Install the sale_management and project modules with demo data. - Uninstall the project. - Try to install it again. ### **Issue:** When we installed the sales and project applications with the demo data and then tried to reinstall the project application, it was throwing a traceback. ### **Cause:** In the sale_project module, there was a file for demo data, 'sale_project_demo.xml', which tried to confirm the SO that had already been confirmed the first time; that's why getting the traceback. ### **Fix:** Need to check that the sale order is not in cancel or sale state; otherwise, it will fail. Task-6347927
This update replaces an older loop style with the preferred clearer wording in a few core server files. It helps keep automated quality checks passing and supports maintainability, with no expected change for users or business workflows.
Original PR description
Ruff checks on runbot flagged `while 1:` Preferred syntax is to use `while True` [UP048](https://docs.astral.sh/ruff/rules/while-one) runbot-945983 Forward-Port-Of: odoo/odoo#284490 Forward-Port-Of: odoo/odoo#283962
The Japanese localization now uses the correct wording for domestic and overseas fiscal positions. This avoids misleading labels for businesses configuring Japanese accounting and improves clarity in setup screens.
Original PR description
Japanese translation "海外取引先" for domestic was clearly wrong.
Also fixed the misspelling ("Oversea" -> "Overseas") and removed the unnecessary "Customer" context from the name.
@qrtl
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#284608The French e-invoicing module now shows a clearer message when a credit note cannot be sent during EDI document generation. This helps users understand what went wrong and reduces confusion when working with French electronic invoicing in demo mode.
Original PR description
Steps to reproduce: - Install `l10n_fr_pdp` module > Switch to `FR Company` - Activate `French e-invoicing` (Demo mode) - Create a New `Credit Note` with `FR Customer` > Send Issue: The system currently displays a confusing error message during EDI document generation. We are making the error message clearer and more user-friendly. opw-6412521 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#284189
Users can now update rental start or end dates on a sales order even if they do not have direct access to planning entries. The related planning schedule is still updated automatically, reducing errors and avoiding unnecessary workarounds.
Original PR description
This commit prevents a potential access error, if a user changes the rental start date and/or end date of a sale order without the access rights to the 'planning.slot' model. In this case, we want the write to be executed and changes repercuted to the associated slots. Forward-Port-Of: odoo/enterprise#128365
A small configuration mistake prevented two accounting report templates from being individually protected against deletion. This fix corrects the list so both reports are properly safeguarded, reducing the risk of accidental removal.
Original PR description
On `ir.actions.report` we want to block the unlinking of specific reports in odoo. However, when the list was created a comma was missed between `action_account_original_vendor_bill` and `account_invoice_without_payment` which means we were actually protecting against people unlinking `action_account_original_vendor_billaccount_invoice_without_payment`. Adding in that comma will allow these two records to be properly protected. task-none Forward-Port-Of: odoo/odoo#283323
Submitting expenses for multiple companies no longer creates duplicate email notifications. This keeps expense communication cleaner and helps employees and approvers avoid confusion from repeated messages.
Original PR description
Fix a small issue resulting in mail duplication when submitting expenses from multiple companies that appeared in the infamous 704a5a19 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 Forward-Port-Of: odoo/odoo#283013