Monday, August 25, 2025
14 changes · saas-18.2
Enhancements to existing features
The scale certification screen now shows the Point of Sale version instead of the connected IoT device version. This avoids confusion and ensures the displayed certification information matches the software used at checkout.
Original PR description
We need to display the PoS Version, not the IoT version. Forward-Port-Of: odoo/enterprise#91682
Resolved issues and error corrections
The Timesheets settings help icon now points to the correct documentation page after a recent documentation restructuring. This prevents users from landing on a broken or outdated help page when looking for guidance about time off settings.
Original PR description
**Description:** - In a recent documentation commit, the overview section was removed from the timesheets path. commit: odoo/documentation@3bceee836fa8b8edfd8a35c20b21867354f6c078 **Steps to reproduce:** - In a `v18` runbot - open settings > Timesheets settings > under Time off - click on the info icon <img width="1905" height="944" alt="2025-08-21_18-25" src="https://github.com/user-attachments/assets/34ec76ed-46f7-4b08-8c23-10269e105b43" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223711
Code cleanup and technical improvements
This update replaces repeated logic in Accounting with a shared check for early payment discounts. It reduces maintenance effort and helps keep bank reconciliation behavior consistent with the main Odoo codebase.
Original PR description
Supersedes: - https://github.com/odoo/enterprise/pull/88374 (fix branch name to align with community PR) This is repeated code from what already exists in odoo community. OPW-4895365 See: [odoo/odoo#215615](https://github.com/odoo/odoo/pull/215615) Forward-Port-Of: odoo/enterprise#90210
Leads without a valid email address are now only sent for enrichment once. This prevents repeated error loops, reducing noise and avoiding unnecessary processing for records that cannot be enriched.
Original PR description
If a lead has no valid email, try to enrich it only once This will avoid infinite loop of errors of "Enrichment could not be done because…" Forward-Port-Of: odoo/odoo#223874
Installing the Belgium Accounting localization now continues even if a previously referenced demo account tag was deleted. This prevents a setup error and makes the installation process more reliable for users working with customized demo data.
Original PR description
Currently, installing the Belgium Accounting localization fails with an error, if the user has deleted referenced demo account tags. **Steps to reproduce:** - Install the Accounting app. - Delete the "Demo Capital Account" account tag. - Install the Belgium Accounting localization (`l10n_be`). **Error:** `ValueError - External ID not found in the system: account.demo_capital_account` At [1], if the `account.demo_capital_account` is not found, it raises an error if the external ID is missing. This commit prevents the error by explicitly passing `raise_if_not_found=False` and skipping the tag if not found. [1] - https://github.com/odoo/odoo/blob/71d1c9a4bef1c29485e3b0390713a9301ad6db4f/addons/l10n_be/demo/account_demo.py#L13-L19 sentry-6776341713 Forward-Port-Of: odoo/odoo#221227
The website header no longer enlarges the sign-in button when certain active link styles are selected. This keeps the header layout consistent after configuring options like outline or border bottom.
Original PR description
Before this commit, using the "outline" or "border bottom" options for the Link Style (active page link in the header) would make the sign in button bigger. This was due to the fact the selector was not precise enough and would also include the button. This commit improves the selector to avoid impacting the sign in button. Steps to reproduce: - Go to Edit mode - Click on the header - Set the Navbar > Links Style option to "Border Bottom" - Save - Log Out Forward-Port-Of: odoo/odoo#223441
The Time Off multi-employee wizard now opens with the correct navigation context. This prevents generated time off or allocation screens from appearing under an unrelated leave request, reducing confusion for HR users.
Original PR description
Task ID: 5004005 **Description of the issue this PR addresses:** When generating time off or allocations for multiple employees using the wizard, the resulting breadcrumb and navigation incorrectly inherit the active_id from the parent view (a specific leave request) appearing as a child of a specific leave record in the breadcrumb and URL.
The editor now clears its previous file selection before asking users to choose a file. This prevents a cancelled file picker from accidentally uploading and inserting the last selected file, avoiding unintended attachments in documents.
Original PR description
Currently, the upload local files service does not reset the file input it uses to handle file uploads. As a result, two consecutive uses of the `/file` command can produce undesirable side effects: Steps to reproduce: 1. Use the `/file` command 2. In the OS file picker, select a file and click on the "open" button. 3. Use the `/file` command 4. In the OS file picker, click on the "cancel" button => The system re-uploads the file loaded at step 2 and inserts a file block for that file in the editor. When clicking on the "cancel" button, we should not insert or upload any attachment. This commit fixes this issue by clearing the file input of the upload local file service before re-prompting the user to select a file. This should guarantee that we do not re-upload the previously selected file. Task-4989809 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Point of Sale restaurant test flow now waits for orders to finish syncing before it ends. This prevents timing-related failures in later automated checks and helps keep release validation more reliable.
Original PR description
### Issue: - In `test_14_pos_payment_sync`, the tour could end before the order was synced to the server, causing errors in later steps. ### Fix: - Added steps to wait until the sync is done before finishing the tour. Runbot Error: 113594, 181563 Task: 4974068 Forward-Port-Of: odoo/odoo#222581
This fixes a missed update so Saudi Arabia invoice reports use the correct rule for showing the QR code. It helps ensure invoices display required information consistently after the forward-port update.
Original PR description
In this commit: https://github.com/odoo/odoo/commit/fdb37c9aa3d2c6002b42e87ebd14afd280ebd03f We changed the condition to display the qr code, but the change was lost in the forward port task-5039596 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Unsplash image picker now handles repeated images returned in the same search results. This prevents crashes during image searches and lets users continue selecting images normally even when Unsplash sends duplicate entries.
Original PR description
This commit fixes an OwlError when we try to render the images received from Unsplash after a search. The issue is that Unsplash can send duplicate images in the same batch of images. When we render those in a `t-foreach` and use the image `id`s as the keys, we get a duplicate key error. This is fixed by expanding on the previous filtering code, which ignored duplicates over multiple batches. We now ignore duplicates within batches as well. At the time of writing, Unsplash is sending us duplicate images on a search for "Inventory". opw-5027032 Forward-Port-Of: odoo/odoo#223789
The barcode app now handles manufacturing orders without by-products when opening the scrap flow. This prevents an error screen and lets users scrap completed production orders reliably.
Original PR description
Issue ----- Trying to scrap a production through the barcode app gives the user a traceback. Steps to reproduce ----- - Have a done MO - Go to barcode and try to scrap it --> Traceback Cause ----- When preparing the context for the scrap window, we try to map the MO's byProducts. When there is no byProduct, we end up trying to apply a mapping on "nothing". ----- Ticket: opw-4792599 Forward-Port-Of: odoo/enterprise#90623
Gantt popover cards now show standard labels like Name, Start, and Stop in the user's selected language instead of always showing English. This improves usability for non-English users when viewing custom Gantt menus created through Studio.
Original PR description
Steps to Reproduce: - Change the language to something other than English. - Create a new menu in the Appointment module using Studio. - Link that menu with the existing model (Resource Time of Detail). - Save the changes and add the Gantt view - Save the changes and close Studio. - View this new menu in the Gantt view Issue: - When clicking onto the kanban popover card for any record, the labels will remain as "Name" , "Start" , and "Stop" in English, and it will not translate. Reason: - [1] changed the rendering of default kanban card templates from XML to JS. This changed the default template to be static. Fix: - Add a call to the translation core tool "_t" on the three labels upon their generation in _getKanbanViewParams(). This ensures that the arch template that is generated is translated correctly into the user's set language. [1] : b2e31239041e6b7850888a3ae070c3f8a40ea5ee [opw-4861899](https://www.odoo.com/odoo/my-tasks/4861899)
Helpdesk ticket portal pages no longer show an unrelated Timesheets breadcrumb when a ticket includes logged time. This keeps customer navigation clearer and avoids confusion when viewing support tickets online.
Original PR description
**Steps to reproduce:** 1. Install 'Helpdesk Sale Timesheet' and 'Website' modules. 2. Create a helpdesk ticket and add timesheets to it. 3. Go to the portal view of helpdesk tickets. **Issue:** If the ticket contains timesheets, the "Timesheets" breadcrumb appears in the portal ticket view. **Cause:** The reason the timesheet variable is used in the hr_timesheet portal template is because it makes the condition evaluate to true, which is why the breadcrumb for Timesheets is displayed. **Fix:** Renamed the loop variable in `t-foreach` to avoid shadowing the `timesheet` variable from the outer context. task-4744294 Forward-Port-Of: odoo/enterprise#85411