Friday, October 24, 2025
22 changes · 18.0
Enhancements to existing features
This update improves how Odoo reports and cleans up failures when automated browser-based tests cannot start Chrome. It makes test infrastructure issues more visible to maintainers and helps avoid leftover browser processes or temporary files on test machines.
Original PR description
If we can't find the devtools port file after 10 seconds we skip the test, however - this is an invisible error because the runbot does not surface skipped tests, so this specific variant should also…
If we can't find the devtools port file after 10 seconds we skip the test, however - this is an invisible error because the runbot does not surface skipped tests, so this specific variant should also have a warning (also the skip from not finding a chrome executable) - if chrome started but got stuck before it managed to create the port file we don't `stop` the chromebrowser as it never finished starting, however this means we leave a chrome running in the void a `user_data_dir` littering the machine / vm's tempdir So improve the handling of that bit. Also have chrome write its stderr to a file (in the `user_data_dir`) so we can log that out in case it contains useful information as to why chrome didn't finish booting. While at it backport the spawn changes from #206574 for consistency and simplicity: we don't need to test the platform for every single tour and the indirection makes updating the `Popen` parameters unnecessary complicated. Forward-Port-Of: odoo/odoo#232633 Forward-Port-Of: odoo/odoo#232612
Stock synchronization logs for Amazon sales now include the related account ID. This helps support teams trace customer issues more quickly and understand stock sync problems with better context.
Original PR description
Based on feedback from the support team, additional information has been added to the stock sync logging messages. This enhancement includes the account ID for better traceability and to help the team understand customer issues more effectively. Forward-Port-Of: odoo/enterprise#97940
Resolved issues and error corrections
This fix prevents an accounting process from failing when it encounters an empty value where a number is expected. It helps users continue their workflow without seeing an unexpected ValueError.
Original PR description
Description of the issue/feature this PR addresses: ValueError: invalid literal for int() with base 10: '' Current behavior before PR: ValueError: invalid literal for int() with base 10: '' Desired behavior after PR is merged: not giving valueerror --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Documentation and clarification updates
This pull request adds Harold Campo's signed Contributor License Agreement record. It supports Odoo's contribution compliance process and has no impact on product features or users.
Original PR description
Add CLA for Harold Campo Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: 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
This update fixes an issue in Odoo's Spreadsheet app. It helps users work with spreadsheets more reliably, reducing disruption when using spreadsheet-related views or documents.
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
This update adjusts spreadsheet-related testing assets to correct the reported FRGI testing issue. It helps keep spreadsheet behavior reliable and reduces the risk of test-related regressions affecting future changes.
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
Spreadsheets without a custom thumbnail now show a spreadsheet-specific default image instead of a generic placeholder. This makes document previews clearer and helps users identify spreadsheet files more easily.
Original PR description
## Description Before this fix, when a spreadsheet had no thumbnail, the system displayed the generic web placeholder image (`web/static/img/placeholder.png`). This PR updates the logic to display a more relevant default image specific to spreadsheets (`/spreadsheet/static/img/spreadsheet.svg`) when no thumbnail is available. Task: [4963284](https://www.odoo.com/odoo/project/2328/tasks/4963284)
This update makes automated checks for the two-factor authentication setup flow more dependable by replacing fragile timing-based steps with clearer confirmation points. It reduces intermittent test failures under load, helping teams validate security-related workflows with fewer false alarms.
Original PR description
- Remove timing-sensitive check on modal closed, wait for the row to be deselected instead (this assumes the list view has been reloaded and can be interacted with again, whereas the security check modal is closed before we actually run the action) (?). - Replace odd and somewhat brittle `run()` functions by equivalent (or better) triggers, with or without ~~you~~ clicks. - Replace a few waits on modals closed by waits on the corresponding notification appearing, this is likely more reliable. Locally this looks to be making the totp tours a *lot* more reliable under load, hopefully this also works on runbot: this aims to solve a jumble of uncommon non-deterministic errors: - https://runbot.odoo.com/odoo/error/161302 - https://runbot.odoo.com/odoo/error/107908 - https://runbot.odoo.com/odoo/error/161302 - https://runbot.odoo.com/odoo/error/233265 - https://runbot.odoo.com/odoo/error/233513
The French FEC import now uses a valid debit account when handling rounding differences. This prevents import issues caused by a chart of accounts change where the previous account code became a grouping account instead of a usable account.
Original PR description
This commit:https://github.com/odoo/odoo/commit/0ebf80b613d229ef5fb07ea97d406496f9df6254 change the COA of french localisation and the account 6850 was change to be an account group instead. This commit will change the debit account code used to put an existing one instead. no task-id Forward-Port-Of: odoo/enterprise#96972
The Field Service “To Schedule” view now excludes tasks that are already done or cancelled. This keeps teams focused on work that still needs scheduling or assignment and avoids confusion from completed or closed tasks appearing in the list.
Original PR description
**steps to reproduce:** Go to field service Go to all tasks > to schedule **issue:** The To Schedule filter was also displaying tasks in cancelled or done state, whereas it should only show open tasks that need to be scheduled or assigned. **cause:** The filter domain did not exclude cancelled/done state, causing closed tasks to appear in the filtered view. **fix:** Updated the filter domain to exclude cancelled/done state, to ensure only open tasks are shown under the To Schedule filter. task-5138590 Forward-Port-Of: odoo/enterprise#96600
This fixes an issue where users could accidentally clear a drawn signature while still in the middle of drawing, yet the document would still allow signing. The signature flow now avoids that accidental clearing so users cannot submit a blank signature by mistake.
Original PR description
To reproduce: ============= - upload a doc, add a signature field, sign now, open the signature wizard - go in draw mode - draw something - erase - draw something, keep the click on and go outside the box - press enter, this will remove the content - release the click --> box is blank and "sign" and "sign all" buttons are available and can sign the doc. Problem: ======== when clearing while drawing, the listner for mousedown is still active and when releasing the click outside the box, it triggers the mouseup event which makes `isEmpty=false` and enables the sign button. Solution: ========= don't allow clearing while drawing. opw-5071981 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix keeps Colombian DIAN electronic invoices aligned with local reporting requirements after a related platform change. It removes an extra tax currency field from the DIAN XML because tax amounts are already reported in Colombian pesos and currency conversion details are covered elsewhere.
Original PR description
In the related community PR we added the `TaxCurrencyCode` node for the (generic) UBL format. To avoid modifying the DIAN XML generation we remove this node / information here. In DIAN all the tax information is given in COP anyway and there are the `SourceCurrencyCode` and `TargetCurrencyCode` to cover all the currency information. task-4885680
Fixed an issue where internal users clicking "View Product" from a product email were sent to the general shop page instead of the product’s internal page. This ensures staff with the right access land in the correct place, while public and portal users continue to use the website product page.
Original PR description
### Issue: Mail action redirects only to shop page, even though the user has internal access to the product page. #### To reproduce: 1- Create a db with website_sale installed. 2- Create a product and publish it. 3- In the product page chatter, send a message to an internal user 4- In received email, click on `View Product` button 5- As you see the shop page opens This is reproduced after #202555 Inside `_get_access_action`, if the product is published, we are returning `website_url`. We can add a check to do that only if user is portal or public. opw-5155281
Users whose contact record is linked to multiple user accounts can now create spreadsheets from the Documents app without hitting an error. This prevents an unexpected blockage in the normal document creation flow for organizations with merged or shared contact records.
Original PR description
Before this commit: 1. connect with a user, the partner_id of which is linked to multiple users via the user_ids field (this can be done by manually setting it, or by merging contacts, for example) 2. go to the Documents app, click new, then spreadsheet --> expected singleton Traceback opw-5133850
The Cambodian localization data was corrected so tax names are no longer duplicated. This prevents errors when companies manually install the Cambodian chart of accounts, making setup more reliable.
Original PR description
Fixes an issue where some taxes in the Cambodian package have the same name, leading to errors when manually installing the chart template. Interestingly enough, the constraints does not trigger on the demo data company. Task [link](https://www.odoo.com/odoo/project.task/5194444) task-5194444
Point of Sale users now see a clear message when searching orders with an unsupported long tracking number instead of encountering a system traceback. This prevents confusion and makes the limitation easier to understand when using the Orders search.
Original PR description
**Steps to reproduce:** - Go to PoS>Orders - Search by Order Number and input at least 4 characters - A traceback will appear **Why the fix:** In 18.0, we do not support long search for the…
**Steps to reproduce:** - Go to PoS>Orders - Search by Order Number and input at least 4 characters - A traceback will appear **Why the fix:** In 18.0, we do not support long search for the tracking_number, as it is not how we search for it. The way it works now is that depending on the length of the input, we search one way or another. If the input is 1 or 2 digits long, we search for those in the tracking number. If it's 3, we search for the last 2 digits in the tracking number, but the first input digit will be to search for the session_id. This is why we do not support inputs longer than 3 digits. To prevent this, we introduce a friendlier userError, as to inform the user that this is not possible, instead of a full traceback. This error was introduced when the function was changed in 36b5842 as a fallback was not implemented if the input was longer than 3 characters. The way we search for the tracking number is different in later versions, so the bug and the function itself are not there anymore. opw-5142216
This change makes an internal website module test independent from demo data, reducing false failures in automated checks. It helps keep the release validation process more stable without changing customer-facing behavior.
Original PR description
runbot-162894 Forward-Port-Of: odoo/odoo#213962
This fix prevents Odoo from incorrectly showing a timezone mismatch warning when a user's computer and profile are both set to the same timezone with a 30- or 45-minute offset. It reduces confusion for users in regions with non-hour timezone offsets by only showing the warning when there is a real mismatch.
Original PR description
**Steps to reproduce** - Set your machine timezone to one ending in :30 or :45 - Open your user preferences and chose the same timezone Issue: the timezone mismatch icon is displayed. **Cause** `.toFixed(0)` rounds to the nearest integer. **Change** Always round down the hour part. opw-5123025 Forward-Port-Of: odoo/odoo#230274
The Barcode app now rounds decimal quantities shown on the fulfillment button, avoiding confusing long decimal values during receipt processing. This makes scan counts easier for warehouse users to read and reduces display-only confusion without changing inventory quantities.
Original PR description
**Issue** In the Barcode application, floating-point values may display excessive decimals. **Steps to reproduce** - Open the Inventory app. - Create a receipt with a decimal quantity (e.g. 10.54)…
**Issue** In the Barcode application, floating-point values may display excessive decimals. **Steps to reproduce** - Open the Inventory app. - Create a receipt with a decimal quantity (e.g. 10.54) and mark it as To Do. - Open the Barcode app, open the corresponding receipt, and click the Edit button. - Increment the number of scans several times until you notice too many decimal digits (if you choose 10.54, you can test with 3). **Cause** A floating-point precision error occurs in the getter [`quantityToFulfill`](https://github.com/odoo/enterprise/blob/4b08734124c3bc84f7d95d170b39e9909e20d66b/stock_barcode/static/src/widgets/digipad.js#L55C9-L55C50), which is rendered directly [in XML templates](https://github.com/odoo/enterprise/blob/e8063141b33a9a8aa51d1ce94a66af313b2c1c89/stock_barcode/static/src/widgets/digipad.xml#L20C25-L21C89) without rounding. **Solution** Round the displayed value in the `quantityToFulfill` getter in the same manner than in [barcode_model](https://github.com/odoo/enterprise/blob/d4e5b69c7ea87fba3f2a5204ed6939b97879e4a8/stock_barcode/static/src/models/barcode_model.js#L99-L103). opw-5039796
Fixed an issue where German e-invoice files could show “Invoice Address” as part of the customer name when an invoice address had no contact name. The generated electronic invoice now uses the main commercial partner name instead, keeping XML invoice data consistent with the PDF invoice.
Original PR description
**Steps to reproduce:** - Install Contacts, Accounting and l10n_de - Switch to a German company (e.g. DE Company) - Go to Contacts - Create a German contact with "XRechnung CIUS" as electronic format…
**Steps to reproduce:** - Install Contacts, Accounting and l10n_de - Switch to a German company (e.g. DE Company) - Go to Contacts - Create a German contact with "XRechnung CIUS" as electronic format - For this contact, create an "Invoice Address" without "Contact Name" - Create an invoice with the invoice address as customer - Confirm the invoice - Generate "XRechnung" via "Send & Print" button **Issue:** In the generated ULB XML and in factur-x.xml file embedded in the PDF, the customer name contains the mention "Invoice Address", which doesn't appear on the PDF of the invoice. **Cause:** The used invoice address has no name, so its "display_name" is build from the name of the parent contact and the type of the child contact (i.e. Invoice Address). **Solution:** Only use "display_name" of a contact if "name" is set. Otherwise fall back on "display_name" of the commercial partner. opw-5159291 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The contributor license records were updated to add Yannick Payot as an authorized Acsone contributor. This helps keep Odoo's contribution records complete and supports proper legal tracking for future submissions.
Original PR description
Let's get a third entry in the CLA on acsone behalf :smile: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request records Harold Campo's signed Contributor License Agreement. It is an administrative legal update that enables contributions to be accepted under Odoo's contribution process, with no product or user-facing changes.
Original PR description
Add CLA for Harold Campo Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: 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#232604