Friday, October 24, 2025
11 changes · saas-18.3
Resolved issues and error corrections
Spanish point-of-sale receipts now display the company’s state name instead of empty brackets. This avoids confusing or incomplete receipt information when simplified invoices are issued.
Original PR description
**Steps to reproduce:** - Set a spanish company, set the state - Set the "Simplified Invoice" journal in the settings - Go to PoS and make a purchase - On the receipt, empty brackets are shown where the state should be **Why the fix:** Before this commit, we checked that the company had a state set, and if it had, we displayed *state_id[1]* between brackets. Even if the state_id existed, this is not the correct structure for the state_id, so *state_id[1]* did not exist, and we displayed only the brackets. We now display the correct state name, still between brackets. opw-5098212 Forward-Port-Of: odoo/odoo#232689 Forward-Port-Of: odoo/odoo#230141
Website table bookings now correctly copy the customer's phone number into the appointment. This helps staff see the right contact details for reservations without changing the underlying customer record.
Original PR description
Task: [#5005216](https://www.odoo.com/odoo/project/1737/tasks/5005216) --- The phone number field was not being populated correctly when booking a table from the website. It is now properly filled using the phone number of the `res.partner` associated with the appointment. The field remains unlinked to the partner, as it is just a copy.
The Field Service “To Schedule” view now excludes tasks that are already done or cancelled. This helps teams focus only on work that still needs scheduling or assignment, reducing clutter and confusion.
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
A website blog automated check no longer depends on the English name for October. This prevents the check from failing when the website uses another language, helping keep multilingual blog features reliably tested.
Original PR description
Before this commit the blog_tags_with_date tour tried to select the October option by label. In other locales the month label differs and the tour could not find it, so the tour aborted at that step. Steps to reproduce: - Change the website language to one where October has another name. - Run the blog_tags_with_date preview tour. The tour now selects the first month option by index, independent of labels. runbot-233321 Forward-Port-Of: odoo/odoo#232610
The web test runner now handles cases where users click Run before all test assets have finished loading. This prevents an early-click crash in manual test mode and makes internal testing more reliable.
Original PR description
Before this commit, in manual mode, "Run" could be clicked before the assets finished loading (and so, before the test runner was properly "ready"). This caused a crash because it tried to resolve a promise that did not exist yet. Steps to reproduce: - Go to test URL (manual) - Click "Run" as soon as the button is visible (probably via a script to make sure the click is fast enough) This commit fixes that by adding failsafes around that promise, effecitvely allowing to click "Run" early on. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232789
This change corrects how fixed taxes are calculated when an accounting line has a negative price, such as a refund or reversal. It helps ensure totals remain accurate in accounting workflows and reduces the risk of incorrect tax amounts in bank statement scenarios.
Original PR description
opw-5128767
This update makes an automated website image test independent from demo data, reducing false failures in the testing pipeline. It helps keep releases stable by ensuring test results reflect real issues rather than differences in sample data.
Original PR description
runbot-162894 Forward-Port-Of: odoo/odoo#213962
Fixed an issue that could prevent invoice previews from opening when a website page included map content. The invoice preview now selects the correct preview area, avoiding errors for accounting users.
Original PR description
Support the possibility of multiple iframes being present on the invoice preview page. Steps to reproduce ----- 1. Add a map block to the nav bar of the website. 2. Go to accounting and find an invoice. 3. Click preview and receive a traceback. Cause ----- The use of querySelector works if there is only one iframe element, but map blocks are also iframe elements so adding one with the website editor can cause the wrong iframe to be selected with querySelector. Solution ----- The iframe element that needs to be selected already has an id, so updating querySelector to getElementById resolves the issue. opw-ticket 5170640 Forward-Port-Of: odoo/odoo#232754
This fix prevents chat and live chat screens from failing when a channel member is loaded without full contact details. Users will see the existing "unnamed" fallback instead of experiencing an error, keeping conversations accessible in affected flows.
Original PR description
Sometimes, channel members are received without their partner/guest because it's not important in the flow. However, some part of the JS code assume the persona is always set, resulting in errors. This PR guards access to persona when computing the member name, a fallback to "unnamed" is already in place. task-5184408 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
Users whose contact record is linked to multiple user accounts can now create spreadsheets from the Documents app without hitting an error. This prevents a blocking crash in a specific contact setup, keeping document spreadsheet creation reliable for affected users.
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 Forward-Port-Of: odoo/enterprise#97767
The Barcode app now rounds the quantity shown on the fulfill button, preventing confusing long decimal values from appearing when processing receipts with decimal quantities. This makes inventory receipt handling clearer and avoids display-only precision errors for users.
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 Forward-Port-Of: odoo/enterprise#97475