Tuesday, July 1, 2025
17 changes · saas-18.2
Resolved issues and error corrections
This fixes a visual issue on invoice forms where an empty placeholder could leave an odd line and extra spacing beside invoice amounts. The invoice page now hides that whole area when it is not relevant, making the layout cleaner for draft invoices or invoices without outstanding credits or debits.
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
Users can now middle-click links or actions to open them separately without triggering cleanup on the page they are currently using. This prevents unsaved or in-progress work on the current screen from being unnecessarily affected.
Original PR description
Before this commit, when middle clicking the clearUncommittedChanges (and subsequently the beforeLeave) were executed on the current controller. This is an issue, as we are not leaving the current controller. Now, the clearUncommittedChanges is not called when middle clicking. Note that, this is already the behaviour if the target is "new". Forward-Port-Of: odoo/odoo#216549
Error popups no longer show an internal request ID as if it were a business record ID. This avoids confusion when users or support teams review crash details 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
Payment logging now records the expected payment details instead of only listing field names. This helps support teams diagnose Stripe payment issues more effectively while keeping sensitive values protected.
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 fix stops website visitors from seeing an error message when they use Chrome with browser extensions such as MetaMask but do not have the push-to-talk extension installed. It improves the browsing experience by quietly handling the missing extension instead of showing a disruptive traceback.
Original PR description
Scenario: - install website, im_livechat, Metamask external extension - go to any page on the website with chrome Result: a traceback is shown on all pages with no stacktrace and the message "Could not establish connection. Receiving end does not exist.". Issue: the error happen if the push to talk extension is not installed in the pttExtensionHookService. Because of metamask extension, "window.chrome.runtime" is not undefined (if metamask is uninstalled, "the window.chrome.runtime" is undefined). So when metamask (or another extension that cause window.chrome.runtime to be defined) is installed, we get an error shown because the promise rejection is not handled. Fix: handle the unhandled promise error. opw-4874027 Forward-Port-Of: odoo/odoo#216258 Forward-Port-Of: odoo/odoo#216132
The Expenses app no longer shows two New buttons in the Kanban view on small screens, reducing confusion for users creating expenses. The upload control was also placed next to its related button in list and Kanban views for a more consistent experience.
Original PR description
This commit avoids a duplicated "New" button definition and being displayed in the Expenses Kanban view on small screen. It also moves the hidden input used for upload next to the button calling it in both List and Kanban views (for coherence). Steps to reproduce (in small screen): - Open Expenses app => double "New" button : one displayed, one in the dropdown --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update reorganizes how Point of Sale handles changes to item quantities, making it easier to support country-specific fiscal requirements. In particular, it enables Belgian fiscal integrations to allow negative quantity lines where needed, with minimal impact on regular POS users.
Original PR description
- Extract some orderline quantity change logic to be overided inside `pos_blackbox_be` to allow negative quantity orderlines. task-id: 4771749 This is a FW of the following PR (https://github.com/odoo/odoo/pull/209282) enterprise PR: https://github.com/odoo/enterprise/pull/88906 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a failing Point of Sale configuration test by moving coverage for an enterprise-only tax journal setting out of the community codebase. It helps keep automated validation reliable for the saas-18.2 release without changing day-to-day user behavior.
Original PR description
this commit fixes the test for the account_tax_periodicity_journal_id field in the res.config.settings model, which was failing due to an assertion error cause it is not in the community version of Odoo 18.2. but it is in the saas-18.2 version enterprise version of Odoo 18.2. refer to this [commit](https://github.com/odoo/odoo/commit/8d841025ecb0b62719fa92236696c0e3421ca270) build_error-227602
This change restores a previous version of an automated check related to creating project sales order lines. It helps keep the sales project workflow validation stable and reduces false errors in the testing pipeline.
Original PR description
This reverts commit bde64f4dd19d30f807142fea6f04409de0696c54. runbot-error-226711 Forward-Port-Of: odoo/odoo#216542
The Employee kanban view no longer shows two delete buttons when the Timesheets app is installed. This reduces confusion for HR users and keeps the employee card actions consistent.
Original PR description
Description of the issue/feature this PR addresses: In this PR, we removed the duplicated delete button from the hr employee kanban view when the timesheet app is installed. Root Cause: We missed to inherit the hr employee kanban view within the hr timehseet. Current behavior before PR:  Desired behavior after PR is merged:  Related task: 4843996 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a visual issue where the message composer could appear too short when empty and then jump in size once users started typing. The change keeps the composer height consistent in affected Chromium-based browsers, making message entry feel 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
The Partner Ledger partner filter now includes all companies, including those linked under another company. This prevents users from missing relevant company records when filtering 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
This fixes an internal payroll expense reference so expense sheets are treated as expense sheets rather than payslips. It helps prevent incorrect payroll-expense processing and reduces the risk of errors when linking employee expenses to payroll.
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
The employee document smart button now counts only documents the user is allowed to access. This prevents misleading totals and makes the displayed count match what users can actually open.
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
The payroll payslip line editing screen now includes a required link needed when adding new lines. This prevents errors during payslip adjustments and helps payroll teams complete corrections without interruption.
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
Corrected demo payroll data so it uses a Belgium-specific time off type. This prevents access errors when opening employee records in the Belgium payroll accounting test environment.
Original PR description
This commit fixes an issue in the demo data. A time off allocation was done using a time off type that is not in Belgium. This caused access error when trying to access the employee. This commit fixes the issue by changing the time off type to a belgian one. task-4896664 Forward-Port-Of: odoo/enterprise#88604
The Journal Report now shows the account name in the Account column, making entries easier to identify and review. This fixes a display issue that previously left users with less context when analyzing journal lines.
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