Wednesday, September 10, 2025
13 changes · saas-18.3
Resolved issues and error corrections
This update improves Odoo's internal Hoot testing framework by making test runs faster, clearer, and easier to diagnose. It is limited to unit test infrastructure, reducing risk to normal product behavior while helping developers catch issues more efficiently.
Original PR description
## Pull Request HOOT (PRHOOT) 36 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Enterprise: https://github.com/odoo/enterprise/pull/93167 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225598 Forward-Port-Of: odoo/odoo#221367
Italian delivery transport documents now show each line total using the same amount as the related sale order. This prevents small rounding differences when discounts or taxes affect the sale price, improving consistency for printed delivery documents.
Original PR description
#### Issue: In the DDT Report, the value displayed on each line is the rounded value of one unit multiplied by the number of unit. Therefore, the amount on a line differ from the real value. ####…
#### Issue: In the DDT Report, the value displayed on each line is the rounded value of one unit multiplied by the number of unit. Therefore, the amount on a line differ from the real value. #### Step to reproduce: - in an Italian company - create a sale order with a product - confirm it - go to delivery - validate the delivery - print #### Current behavior: On the DDT report, the value of each line is the rounded value of one unit multiplied by the number of unit. #### Expected behavior: On the DDT report, the value of each line should be the same as in the sale order. #### Cause of the issue: The value of a line was miscalculated based on the rounded price of a unit. #### Solution: This error occurs when a calculation is applied to the sale price, such as a tax or a discount. This applies for deliveries coming from sale orders. These calculations are included in the `price_total` field of the corresponding line in the SO. opw-5012921 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes Discuss command palette tests more stable by ensuring the interface is ready before simulated clicks happen. It also corrects a search mock and an incomplete test, reducing false failures in automated validation without changing customer-facing functionality.
Original PR description
Before this commit, clicking on some elements of the command palette would not trigger the associated event, this was probably caused by clicking on outdated owl fragments which cannot trigger events while being destroyed. This commit fixes this issue by making sure that the interface is in a stable configuration before clicking. The commit also fixes the mock of `discuss/search` ( for https://github.com/odoo/enterprise/pull/94075 ) and a test that was incomplete and relied on the incorrect implementation https://runbot.odoo.com/odoo/runbot.build.error/112148 Forward-Port-Of: odoo/odoo#225844
Updating the memo on an accounting payment now also updates the reference on its linked journal entry. This keeps payment records consistent and avoids confusion when reviewing or reconciling accounting entries.
Original PR description
Issue: In previous versions, the memo field of account payments and ref field of account move were related Now that payments do not required to have generated account move's when the memo is updated the ref remains unchanged. Purpose of this PR: To update the account move ref when the payment memo is updated. Steps to Reproduce on Runbot: install accounting go to bank account and assign outstanding accounts for manual payment methods create a payment -- a related account move should be created update the memo on the payment -- the ref on the related account move is unchanged. opw-4989260 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223459
This fix makes automated WhatsApp command palette tests wait for the interface to settle before interacting with it. It reduces false test failures, helping keep releases and maintenance work moving smoothly without changing user-facing behavior.
Original PR description
Before this commit, clicking on some elements of the command palette would not trigger the associated event, this was probably caused by clicking on outdated owl fragments which cannot trigger events while being destroyed. This commit fixes this issue by making sure that the interface is in a stable configuration before clicking. https://runbot.odoo.com/odoo/runbot.build.error/112148 Forward-Port-Of: odoo/enterprise#94075
The Swiss financial reports now show previous-year unallocated earnings with the correct amount. The balance sheet also distinguishes retained and allocated current-year earnings, helping businesses read profit and loss carryforward figures more accurately.
Original PR description
Before this commit, `Previous Year unallocated profit and loss` was showing wrong amount. With this commit, we adapt this line (change period of one of its expression) and we add two new lines to reflect the actual year earnings, retained and allocated. Steps, with fresh db: - 1 invoice confirmed in the past year for 1000 - Create the carryforward move (1000 debit for 999 account, and 1000 credit for 2979 account) - Go to balance sheet, set date as 'End of last fiscal year' -> See 'Previous Years Unallocated Earnings` showing -1000 opw-4054341 Forward-Port-Of: odoo/enterprise#91281
The Belgian salary configurator now prevents employees from combining a fuel card benefit with a reimbursed private bike option. When private bike reimbursement is active and above zero, fuel card values are automatically cleared and disabled to keep salary choices compliant and consistent.
Original PR description
The Belgian salary configurator allows employees to declare a private bike cost. When the "Private Bike" option is checked and its reimbursement value is greater than zero, the fuel card inputs must be reset to 0 and disabled. task-5062963 Forward-Port-Of: odoo/enterprise#94063 Forward-Port-Of: odoo/enterprise#93884
Belgian payroll work entry UCM codes now preserve spaces so they can meet the required three-character format. This prevents valid codes such as “PR ” from being shortened incorrectly when users edit payroll settings.
Original PR description
#### Issue: - UCM work entry code should be 3 characters long and allow spaces to get this length #### Step to reproduce: - In a Belgian company - Go to Payroll > Settings > Work Entry Types > New - Add a name - Add a Payroll Code - In the `Country` field fill Belgium - In the field `UCM Code` enter "PR " - Select another field - Select `UCM Code` again #### Current behavior: - The field `UCM Code` was updated to "PR" #### Expected behavior: - The field should stay to "PR " #### Solution: - Don't trim the field and add a spaces if needed opw-5014372 Forward-Port-Of: odoo/enterprise#92838
This fix makes an automated barcode picking test wait for the page to finish loading before the browser closes. It helps prevent false test failures, improving confidence in release validation without changing day-to-day user workflows.
Original PR description
In this commit we fix the tour test_open_picking_dont_override_assigned_user. At the end of tour, we don't wait until kanban is fully rendered. If the browser is closed before this view is rendered, the error onWillStart: "Component is destroyed" can occurs error-runbot-id~190611
The message shown when no bank transactions are found now appears with proper formatting instead of showing raw HTML text. This improves clarity for users fetching transactions or changing filters in bank reconciliation.
Original PR description
Before this commit : - The help message shown when no transactions were fetched by the 'Fetch Transactions' button in the 'Bank' journal contained raw html tags, as markup was not getting applied. - Also, removing a filter (without reloading) and applying another filter that resulted in no matches, the same issue occurred. After this commit: - The help message is now consistently rendered with markup applied. task-4942234
This fix prevents Uruguayan electronic invoices from failing when an invoice line has no product or description. If no item name is available, the system now safely uses a placeholder so the CFE document can still be created.
Original PR description
This pull request makes a minor adjustment to the logic for extracting item names and descriptions in the `_l10n_uy_edi_get_line_nom_and_desc` method. The change ensures that the presence of `aml.name` (the line description) is checked directly, rather than relying on the truthiness of the entire `aml` object. Before this PR, if the aml of an invoice only have the `account_id` field filled and no `product_id`, the `_l10n_uy_edi_get_line_nom_and_desc` will raise an error message like `TypeError: 'bool' object is not subscriptable` when trying to create de CFE document. <img width="1254" height="828" alt="image" src="https://github.com/user-attachments/assets/eaadad4c-46c3-4e3b-be52-9fcd146f2c22" /> <img width="1526" height="795" alt="image" src="https://github.com/user-attachments/assets/1b831f41-9774-4ed5-9a9d-9777ee0633e9" /> With this fix, we ensure there is a name to grab or the '-' will be send instead. Forward-Port-Of: odoo/enterprise#93838
The Documents kanban view no longer shows an unnecessary second scrollbar. This makes browsing documents smoother and reduces visual clutter for users working in that view.
Original PR description
This commit fix the useless double scroll bar in kanban view. Task-4844661 Forward-Port-Of: odoo/enterprise#90548
The dashboard publish setting now changes only when users interact with the checkbox or its label. This prevents accidental reversals when clicking elsewhere in the dashboard header, making publishing behavior more predictable.
Original PR description
**Steps to reproduce:** - Open a dashboard in edit mode. - Click the “Publish” toggle to change its state. - Click elsewhere on the header (outside the toggle). → The publish state flips back unexpectedly. **Before this PR:** The wrapper container (.o_sp_publish_dashboard) had a click handler, causing clicks on the header to re-toggle the publish state. The CheckBox was rendered with a no-op onChange, so both elements competed for control. **After this PR:** Interaction is handled exclusively by the CheckBox component. toggleDashboardPublished is bound directly to its onChange. Clicking the label text now correctly toggles the checkbox and publish state. Container clicks outside the checkbox no longer affect the state. Task: [5062368](https://www.odoo.com/odoo/project/2328/tasks/5062368) Forward-Port-Of: odoo/enterprise#94061