Tuesday, July 1, 2025
18 changes · saas-18.1
Resolved issues and error corrections
Invoices that are not posted or have no outstanding debit or credit details now display without an empty extra space beside the amounts. This removes a small visual glitch and makes invoice forms look cleaner for users.
Original PR description
Repro steps: Navigate to the form view of an invoice that is either 1. not posted 2. does not have outstanding debits/credits Problem spotted: next to the invoice amounts, a weird line and margin to the right can be seen Cause: The field invoice_outstanding_credits_debits_widget of an invoice may be invisible with this condition invisible="state != 'posted' or not invoice_has_outstanding" and in that case, it's containing group would still be visible (showing the aforementioned margin). Fix: This commit fixes this issue by moving the invisible condition to the group containing the field invoice_outstanding_credits_debits_widget instead of the condition being on the field itself. task-4882509 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215119
Error dialogs no longer show an internal request ID as if it were a business record ID. This reduces confusion when users or support teams investigate server action failures in debug mode.
Original PR description
Steps: - Enable debug mode - Go to server actions - Create a server action that crashes with `Execute code` - Example -> "a" (will crash because `a` is undefined) - Traceback will contains an invalid ID `Occured on odoo180 on model ir.actions.server and id 19 on 2025-06-30 09:20:48 GMT` This was an error and this ID is not linked with the model, it is the rpc id, so it should not be on the traceback. This commit remove this id to have something like this `Occured on odoo180 on model ir.actions.server on 2025-06-30 09:20:48 GMT` opw-4816514 Forward-Port-Of: odoo/odoo#216553
This fix restores payment logging so Stripe and general payment transaction entries include the relevant values, not just field names. It helps support and operations teams diagnose payment issues more effectively while preserving the existing protection for sensitive data.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Log Stripe payment values. Issue ----- Only the keys get logged. Cause ----- Commit 1a2573881281 fixed the logging of secret keys, but in doing so, only logs keys and no values. Solution -------- Use a dict comprehension to create a full dict to log. opw-4818301 Forward-Port-Of: odoo/odoo#216457 Forward-Port-Of: odoo/odoo#216303
This update fixes an unreliable counter in the email testing suite that could cause inconsistent automated test results. It helps keep quality checks stable so future changes can be validated with more confidence.
Original PR description
runbot-160897
This update addresses an intermittent issue where message editing or sending tests could fail because the message composer lost focus. It makes the composer behavior and related test interactions more reliable, reducing false failures in automated checks without changing normal user workflows.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/214626 Runbot error 181952 is hardly reproduce-able. Don't have a exact idea what causes the problem. These are theories of the causes: 1. insertText,…
Follow-up of https://github.com/odoo/odoo/pull/214626
Runbot error 181952 is hardly reproduce-able. Don't have a exact idea what causes the problem.
These are theories of the causes:
1. insertText, contains, triggerHotkey of mail helpers are not robust enough (lack simulation, not robust against CPU load / prone to race conditions).
2. focus in composer is lost non-deterministically
Previous attempts were thinking the root cause are mail test helpers and web test helpers would fix issue, but that's probably not the exact cause of issue. A more likely candidate is composer loosing focus and therefore pressing of keys do not make proper transition from message with composer to message without composer.
One likely cause of loosing focus is `processMessage` that reuses the old ref after asynchronous handling of message edition / post. This commit fixes by using the current ref of texarea.
Test helpers can still be prone to problems. That's why this commit this converts the most important LOCs to web test helpers. The user interactions are made with `contains().press()`, where the `contains()` enforces focus on the targeted element, giving more guarantee the composer is focused for proper press of key. `press("Control+Enter")` were not working because this passed "Control+Enter" instead of "Enter" as `ev.key`. This was fixed by using more primitive syntax `["Control", "Enter"]` which is better parsed for proper `ev` object of KeyboardEvent.
Runbot-error-227618The mail message composer now keeps a consistent height when it is empty in Chromium-based browsers. This prevents the input box from visibly jumping or resizing when users start typing, making the messaging experience smoother.
Original PR description
Before this commit, composer height was too small when it had no content. This lead to composer changing height when typing some characters which looks off. This bug is specific to Chromium browsers and seems to be new since Chrome 138.0. The code expected that textarea had unchanged scrollheight when textarea has height 0 and fits its content in at most 1 line, but this seems to have changed with Chrome 138.0. This commit fixes the issue by cheating when composer is empty: the fake textarea artificially adds a character so that the computation for height when empty works as if it has 1 character, thus the computed height is the same when there are few characters in composer. Forward-Port-Of: odoo/odoo#216743
This change reverses a previous update to restore a failing automated test related to creating sales order lines from projects. It helps keep the sales and project workflow validation stable, reducing the risk of future issues reaching users.
Original PR description
This reverts commit bde64f4dd19d30f807142fea6f04409de0696c54. runbot-error-226711 Forward-Port-Of: odoo/odoo#216542
This update prevents form views from crashing when binary file fields contain unexpected non-text data. It also avoids automatically showing certain technical binary fields in default forms, reducing accidental user-facing errors.
Original PR description
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#216565 Forward-Port-Of: odoo/odoo#213967
Portal document pages no longer show a broken chat window when portal chatter is present. The change prevents the conflicting chat component from appearing in that context, keeping the page experience clean and consistent for portal users.
Original PR description
When a chat window is open while a portal user accesses a document where portal-chatter is available, its styles break because ChatHub is not rendered inside the Shadow DOM where Chatter is. Since all required styles are within the Shadow DOM, this causes styling issues. This commit fixes the issue by disabling ChatHub in portal chatter. This commit also includes backport of https://github.com/odoo/odoo/pull/203703 Task-4645905
Odoo Studio now uses the field capabilities provided by the platform to decide whether fields can be grouped, sorted, or aggregated, instead of relying on rough assumptions. This helps users see more reliable options when configuring list, search, kanban, graph, pivot, and gantt views.
Original PR description
Before this commit we used some heuristics in studio to determine whther some field had some ability (groupable, sortable, aggregator) After this commit, we use the not so new tools given by https://github.com/odoo/odoo/commit/b177b058be1531c3d2af2b591c22591c19240d33 Note that we still rely on the field type, because even if possible, groupong by some fields doesn't make much sense (eg.: float) task-4879382 Forward-Port-Of: odoo/enterprise#88522
Resetting an invoice to draft now ensures any related posted deferred entries are cancelled as expected. This helps keep accounting records consistent and prevents reversed deferred entries from remaining active incorrectly.
Original PR description
When resetting an invoice to draft, its posted deferred entries should be cancelled. This is adding a test to the linked fix. Linked community PR: https://github.com/odoo/odoo/pull/216628 opw-4891975 Forward-Port-Of: odoo/enterprise#88992
The Partner Ledger partner filter now includes all companies, including companies that have a parent company. This helps users find and filter the correct business partners more reliably when reviewing accounting reports.
Original PR description
Steps to reproduce - create a company - add a contact to this company - go to its contact form and transform this contact from Individual to Company - go to the Partner Ledger - open Partner filtering dropdown list Current behavior - show company and individual with no parent Expected behavior - show individual with no parents and all the companies - Company with parent company seems to be the expected behavior since 2016. If there is one, the Parent company appear in the contact form as defined [there](https://github.com/odoo/odoo/blob/9b03d99fd0174bd67c8ea30e5fd2c26fb2ad2467/odoo/addons/base/views/res_partner_views.xml#L168) opw-4729020 Forward-Port-Of: odoo/enterprise#87017
The Journal Report now displays the account name in the Account column, making entries easier to identify and review. This helps finance users read journal details more clearly without needing to infer accounts from codes alone.
Original PR description
The purpose of this pr is to add account name in the Account column of the Journal Report. Before this code changes:  After this code changes:  OPW : 4702276 Forward-Port-Of: odoo/enterprise#86113
The Website Helpdesk help menu now shows only the helpdesk teams assigned to the visitor's current website. This prevents teams from other websites appearing in the wrong place, reducing customer confusion and routing requests to the correct team.
Original PR description
**Steps to Reproduce:** 1. Install the website_helpdesk module. 2. Create a Helpdesk Team A with 'Website Form' enabled, and set the website to 'My website' 3. Create another Helpdesk Team B with 'Website Form' enabled, and Set website to 'My website2' 4. Navigate to Website → Help menu on "My Website". **Observation:** - Both Helpdesk teams appear on "My Website", even though Team B is linked to "My Website 2". **Issue:** - The current domain filter only checks if the Website Form is enabled. - It doesn't restrict teams to the current website, so all teams are visible. https://github.com/odoo/enterprise/blob/b191f16abb5913893a228ccc4eedb8a2242a0298/website_helpdesk/controllers/main.py#L22 **Solution:** - Update the domain to filter on the website ID, to ensure only helpdesk teams related to the current website are shown. OPW-4673939 Forward-Port-Of: odoo/enterprise#88169
The employee documents button now counts only documents the user is allowed to access. This avoids showing misleading document totals and helps users see consistent, reliable information.
Original PR description
Previously the smartbutton showed the number of documents the user was a contact of, without checking if the user had access to such documents or not, resulting in sometimes different values Task: 4771754 Forward-Port-Of: odoo/enterprise#85156
This fix prevents an error when creating a new line while editing payslip details. Payroll users can update payslip lines through the wizard without running into an unexpected record creation issue.
Original PR description
In this PR we add edit_payslip_lines_wizard_id in the view to prevent a new line record creation error. Forward-Port-Of: odoo/enterprise#88923 Forward-Port-Of: odoo/enterprise#88033
This fix ensures payroll expense records point to the correct expense sheet information instead of the wrong payslip record type. It helps prevent incorrect links or processing issues when payroll and expenses are used together.
Original PR description
this commit fixes wrong reference to `hr.payslip`. `payslip_sheets` should be a recordset of `hr.expense.sheet` and not `hr.payslip`. Forward-Port-Of: odoo/enterprise#88994
This update corrects an internal automated test counter for enterprise email activity performance. It helps keep quality checks reliable without changing how users interact with the product.
Original PR description
Forward-Port-Of: odoo/enterprise#88942