Monday, June 2, 2025
18 changes · saas-18.3
Resolved issues and error corrections
This update makes an automated accounting test more stable by avoiding a changing field identifier and waiting for the amount field to be ready. It helps reduce false build failures, improving confidence in release validation without changing user-facing behavior.
Original PR description
The `account_accountant_tour` test was failing at the step that attempts to set an amount, due to the selector `input[id=amount_0]` not being found within the timeout. The root cause was that the selector used an ID (`amount_0`) which is dynamically generated and can change across test runs . To resolve this, the selector was replaced with a more stable one: `div[name=amount] input`, which targets the same field but does not rely on dynamic IDs. Additionally, a no-op wait step was introduced immediately before this interaction to ensure the DOM has fully rendered the input element before the test proceeds. build_error-220890
This fixes an error that could occur when searching or grouping documents by last access date with empty values. The change helps prevent unexpected failures in the Documents app and keeps document filtering more reliable.
Original PR description
…n values. A small error was been made in https://github.com/odoo/enterprise/pull/76079 (`_search_last_access_date_group`): the SQL string contains a %s without an argument, resulting in a "TypeError: not enough arguments for format string." Fix it. A test will be added later to the master branch in a later PR that found the issue https://github.com/odoo/odoo/pull/133224. https://github.com/odoo/odoo/pull/212115
This fixes filtering on the restaurant kitchen preparation screen, including clearing filters and selecting time filters. Staff can now rely on the display controls to show the right preparation items without confusion.
Original PR description
Steps to reproduce: ==== - Install pos_restaurant - Open kitchen display > preparation screen - Open Sidebar > click any item > click Clear All Filters OR click any time Issue: ==== - Filters are not working as expected Cause: ==== - setTime function is not defined and preparationDisplay written instead of prepDisplay Fix: ==== - Defined the setTime function and replace preparationDisplay with prepDisplay --- task-4759803
Closing an AI agent chat box no longer causes an error when the chat has not been linked to a conversation. This prevents an unexpected crash and gives users a smoother experience in the AI module.
Original PR description
The system will crash because `AIAgent.close_chat()` requires a `channel_id`, and if `component.thread?.id` is undefined, it results in a missing argument error.
**Steps to Produce:-**
1. Install the `AI` module.
2. Navigate to the AI module. If an agent is already present, click on it. Otherwise, create a new agent.
3. Click on the agent to open the chat box.
4. Close the chat.
**Error:-**
`TypeError: AIAgent.close_chat() missing 1 required positional argument: 'channel_id'`
**Solution:-**
- Check that `component.thread.id` is present before calling
`AIAgent.close_chat`.
**Sentry : 6388425767**Fixes an issue where grouping account records by placeholder code could fail with an error. This helps users view and analyze accounting data more reliably in grouped lists and reports.
Original PR description
The web client considers the `account.account.placeholder_code` field to be groupable since there is an implementation inside _field_to_sql. However, grouping by this field results in a NotImplementedError because the search method doesn't implement equality. Equality is necessary because since the '__extra_domain' returned from `formatted_read_group` contains a leaf, such as `('placeholder_code', '=', ...)`.
Add the equality implementation to the search method. A test will be added later to the master branch in a later PR that found the issue https://github.com/odoo/odoo/pull/133224.
https://github.com/odoo/enterprise/pull/86626This fixes an issue in the website shop onboarding tour so users can complete the guided setup as expected. It helps new or configuring users follow the intended flow without getting blocked or confused.
This fixes failing Sales test checks when Odoo is built with only selected apps enabled. It helps keep automated validation reliable without changing the Sales experience for users.
Original PR description
runbot_error-161629 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
## opw-4812933 feedback > When attachments were exported from Studio Export, they got exported in descending order by id (from highest id to lowest id). This caused a problem during import: if an attachment referred to an earlier one using a "Resource ID" (meaning it depended on a previously created attachment), the dependent attachment would try to import before the one it needed. This led to an error because the referenced attachment didn't exist yet. ## found issue The exported data
Original PR description
## opw-4812933 feedback > When attachments were exported from Studio Export, they got exported in descending order by id (from highest id to lowest id). This caused a problem during import: if an attachment referred to an earlier one using a "Resource ID" (meaning it depended on a previously created attachment), the dependent attachment would try to import before the one it needed. This led to an error because the referenced attachment didn't exist yet. ## found issue The exported data is sorted to ensure import order is correct, but for inter-record dependencies on a same model many2one_reference fields are not taken into account. This PR fixes that. Also while analyzing this issue another small issue was spotted regarding base.automation.url field. See commits. Forward-Port-Of: odoo/enterprise#86407 Forward-Port-Of: odoo/enterprise#86204
The `all_l10n` standalone test started to fail on 2025-06-01 when installing `l10n_in_hr_payroll`. A first attempt was made to blacklist the module in the test itself. This attemps failed as the module is auto_install on `hr_payroll` and most of `l10n_hr*` modules depend on `hr_payroll`. Forward-Port-Of: odoo/enterprise#86758
Original PR description
The `all_l10n` standalone test started to fail on 2025-06-01 when installing `l10n_in_hr_payroll`. A first attempt was made to blacklist the module in the test itself. This attemps failed as the module is auto_install on `hr_payroll` and most of `l10n_hr*` modules depend on `hr_payroll`. Forward-Port-Of: odoo/enterprise#86758
The "Fetch from CodaBox" link displayed on the accounting dashboard had no gap between it and the button at the left of it, and wasn't aligned horizontaly with the other buttons next to it making it look out of place. It is now displayed as a link button, which solve both problems. task-4671468 Purpose The fetch from CodaBox is too sticky to the upload button  After this commit :  After this commit :  Forward-Port-Of: odoo/enterprise#84858
Fix qty_delivered when a rental order is processed through the PoS. This commit ensure that the PoS qty_delivered computation is done after the other calculation Steps to reproduce: ------------------- * Make a rental for 1 product * Open the sale order in PoS * Pay for the rental > Observation: The qty_delivered is set to 2 instead of 1 on the rental Why the fix: ------------ When the order is a rental processed through the PoS, we recompute the rental qty and add the PoS quantity
Original PR description
Fix qty_delivered when a rental order is processed through the PoS. This commit ensure that the PoS qty_delivered computation is done after the other calculation Steps to reproduce: ------------------- * Make a rental for 1 product * Open the sale order in PoS * Pay for the rental > Observation: The qty_delivered is set to 2 instead of 1 on the rental Why the fix: ------------ When the order is a rental processed through the PoS, we recompute the rental qty and add the PoS quantity to make sure that the value is correct. The computation is actually just the fusion of the PoS and rental _compute_qty_delivered methods. opw-4582505 Forward-Port-Of: odoo/enterprise#86266 Forward-Port-Of: odoo/enterprise#84768
Needed internally where the cart is not always in the company of the website. Forward-Port-Of: odoo/enterprise#86236
Original PR description
Needed internally where the cart is not always in the company of the website. Forward-Port-Of: odoo/enterprise#86236
How to reproduce: - Install document in v17.0 with demo data - In the kanban view, upload an image in Marketing folder - The image is displayed as thumbnail in the kanban card - Upgrade to saas-17.4 - Open Document and go to marketing folder There is no thumbnail for the uploaded image. In v17, _compute_thumbnail_status write a False status when the thumbnail is updated because when it is trigerred the attachment is not yet created. So the thumbnail is present but its status is inco
Original PR description
How to reproduce: - Install document in v17.0 with demo data - In the kanban view, upload an image in Marketing folder - The image is displayed as thumbnail in the kanban card - Upgrade to saas-17.4…
How to reproduce: - Install document in v17.0 with demo data - In the kanban view, upload an image in Marketing folder - The image is displayed as thumbnail in the kanban card - Upgrade to saas-17.4 - Open Document and go to marketing folder There is no thumbnail for the uploaded image. In v17, _compute_thumbnail_status write a False status when the thumbnail is updated because when it is trigerred the attachment is not yet created. So the thumbnail is present but its status is incorrect. It works in v17 because the status is ignored by the view for images but in v17.4, the status is not ignored and the thumbnail is then not displayed. This temporary fix allows already migrated user to see thumbnail (as the view could not be modified in stable without an upgrade). We force the status of the thumbnail to "present" when there is no status for a thumbnail of an image which should cover the case where the status was not updated after the thumbnail creation. We have chosen this solution as the thumbnail will be updated in the upgrade and the URL returns anyway a placeholder image if the image is not present. We modify some tests to check that the patch is applied. As the kanban test data includes an image with a False status, the patch turns automatically the status to "present". So instead of having the generic mime type thumbnail, we get the actual thumbnail of the image. We change the assertions accordingly to test the new behavior and test the generic mime type thumbnail in the pdf case of the test "document inspector: document preview". Task-4642866 Forward-Port-Of: odoo/enterprise#85751 Forward-Port-Of: odoo/enterprise#81558
Update on the filterExchangeRate function. The text input allowed users to enter non-numeric characters, which led to float conversion errors during processing. Now we parse the string into a float, catch errors and notify the user that the number was not valid. It also enables the user to use the thousands and decimal separators based on the language of the user. opw-4788246 Forward-Port-Of: odoo/enterprise#85857
Original PR description
Update on the filterExchangeRate function. The text input allowed users to enter non-numeric characters, which led to float conversion errors during processing. Now we parse the string into a float, catch errors and notify the user that the number was not valid. It also enables the user to use the thousands and decimal separators based on the language of the user. opw-4788246 Forward-Port-Of: odoo/enterprise#85857
<b>Steps to produce :</b> 1) Install 10n_de_reports and switch to the German company 2) Create a journal entry from accounting with a credit and debit 3) Now update the credit and debit to a different value. 4) Post the journal 5) Go to "Accounting / Reporting / Audit Reports / General Ledger" 6) Download "DATEV DATA (ZIP)" and check "EXTF_accounting_entries.csv" <b>Issue:</b> The line for the created journal entry has a price_total of the previous balance even after updating the
Original PR description
<b>Steps to produce :</b> 1) Install 10n_de_reports and switch to the German company 2) Create a journal entry from accounting with a credit and debit 3) Now update the credit and debit to a…
<b>Steps to produce :</b> 1) Install 10n_de_reports and switch to the German company 2) Create a journal entry from accounting with a credit and debit 3) Now update the credit and debit to a different value. 4) Post the journal 5) Go to "Accounting / Reporting / Audit Reports / General Ledger" 6) Download "DATEV DATA (ZIP)" and check "EXTF_accounting_entries.csv" <b>Issue:</b> The line for the created journal entry has a price_total of the previous balance even after updating the credit and debit values. <b>Cause:</b> When the user updates the 'debit' and 'credit' values for an `aml`, The `price_totals` value remains unchanged as it is not dependent on `balance`. So, it will show the previous value in the report line because we are taking the abs(aml.price_total) from the report data. <b>Solution:</b> We can add an extra check of the move type so that it will fall back to the else block, where the line_amount will take a value by calculating taxes from `aml.tax_ids.compute_all`. opw-4707567 Forward-Port-Of: odoo/enterprise#83777
In this commit, we have addressed a crucial issue related to translation. We discovered that certain key terms in our application were not properly marked for translation, resulting in a lack of support for different languages. To rectify this, we have implemented the necessary changes to make these terms translatable. By doing so, we have successfully resolved the language compatibility problem and improved the overall internationalization of our application. This commit ensures that all terms
Original PR description
In this commit, we have addressed a crucial issue related to translation. We discovered that certain key terms in our application were not properly marked for translation, resulting in a lack of support for different languages. To rectify this, we have implemented the necessary changes to make these terms translatable. By doing so, we have successfully resolved the language compatibility problem and improved the overall internationalization of our application. This commit ensures that all terms, previously overlooked or untranslatable, are now fully accessible for translation, enhancing the localization experience for our users across the globe. task:3358438 Forward-Port-Of: odoo/enterprise#86240 Forward-Port-Of: odoo/enterprise#43574
Since we only update the fiscal positions for newly created taxes, there is nothing to update in the mapping when nothing will be created. upg-2769042 Forward-Port-Of: odoo/odoo#207700
Original PR description
Since we only update the fiscal positions for newly created taxes, there is nothing to update in the mapping when nothing will be created. upg-2769042 Forward-Port-Of: odoo/odoo#207700
- Updated UK localization template handling to avoid automatic recreation of accounts, taxes, and fiscal positions when upgrading. - Added `force_create = "0"` parameter to `try_loading` to ensure that existing configurations are retained and no new records are created unless explicitly required. - Fixed a similar issue for all impacted localizations, following the discussion in the previous task (https://www.odoo.com/odoo/project/967/tasks/4556250). task-4712602 Description of the issue
Original PR description
- Updated UK localization template handling to avoid automatic recreation of accounts, taxes, and fiscal positions when upgrading. - Added `force_create = "0"` parameter to `try_loading` to ensure that existing configurations are retained and no new records are created unless explicitly required. - Fixed a similar issue for all impacted localizations, following the discussion in the previous task (https://www.odoo.com/odoo/project/967/tasks/4556250). task-4712602 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#205211