Thursday, July 3, 2025
21 changes · saas-18.3
Resolved issues and error corrections
A website shop test was corrected so it first turns on the pricelist option before checking price comparisons. This prevents false test failures and helps ensure shoppers can see and choose from the expected price lists when that feature is enabled.
Original PR description
Before this commit, the `compare_list_price_price_list_display` tour failed due to a missing feature flag. The user was unable to select a pricelist as only one was available. This commit enables the pricelist feature before the tour, ensuring that the drop-down selector displays all the configured pricelists. runbot-162702
This fixes an issue where manufacturing orders created in batches could receive an incorrect finished date. The calculation now uses each order's own expected work order duration, improving scheduling accuracy for batch-created production orders.
Original PR description
If you create mrp.production in batch, date_finished is wrong. Note: it probably works as is in standard flow because always used on a single record (ex: form view) but it might break custom code. opw-4629270 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#216550
Product option pills on eCommerce product pages now display correctly on iPhones and iPads. This removes an unwanted gap before option names, improving the shopping experience for mobile customers.
Original PR description
Before this commit, the pills attributes on a eCommerce product page on iOS has misaligned text That was caused by an iOS inconstancy with 'appearance: none;' A 'position: aboslute !important;' was added to force hiding the input like in saas-18.4 Expected:  Issue:  ## Steps to reproduce: - Add a product with attributes in eCommerce - Set the Attribute's Display Type to Pills - Go to the eCommerce product's page - Open the page on iPhone or iPad (using BrowserStack) - The selection for the attributes have a space before option's name opw-4854158 Forward-Port-Of: odoo/odoo#215520
This fixes an issue where identity confirmation did not work properly for users signing in with passkeys. The required password context is now included in the passkey flow, restoring a smooth verification experience without changing saved user data.
Original PR description
26f982cd26deb5e8a971617d8c1d6d4e840eaee3 introduced the idea of passing the password in the context instead of saving it to the database. However it forgot to add the password for webauthn flows, so this is a simple correction.
Printed invoices using the boxed layout no longer show unwanted vertical lines when the totals move onto a second page. This improves the professional appearance of customer invoices without changing invoice data or workflow.
Original PR description
Before this commit, a print invoice that's on 2 pages with a boxed template left 2 vertical lines on the page bottom A negative margin top in applied that push the table top to the first page I…
Before this commit, a print invoice that's on 2 pages with a boxed template left 2 vertical lines on the page bottom A negative margin top in applied that push the table top to the first page I change the layout of `report_invoice_document` to avoid a negative margin. The negative margin-top to `total` was there to move the float div higher to compensate the ´table` margin-bottom. I remove the `table` margin-bottom and replace that by a `payment term` margin-top. The margin were collapsed for `total` and `payment term` so I had to add an overflow-hidden on the parent div. ## Before :  ## After :  ## Steps to reproduce : - Change the document layout to a boxed one in the Settings - Create products with long descriptions (example can be found in the linked ticket) - Create an invoice with the products - Print the invoice (the total should be on the second page top) - The vertical lines should be there opw-4841652 Forward-Port-Of: odoo/odoo#215778
Product descriptions for suggested accessories in the shopping cart now display cleanly without spilling outside their layout. This keeps the cart easier to read and makes suggested product lines visually consistent with regular cart items.
Original PR description
This PR fixes an issue about products description overflowing in the context of the suggested accessories in the cart UI. | saas-18.3 | This PR | |--------|--------| |  |  | Prior to this PR, a `text-truncate` was applied on the element but the flex layout was preventing the element to truncate correctly. To fix this issue, we set `.o_description_line` to this element, which will apply the same styling as the regular cart line, making it more consistent. task-4915440 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes incorrect nightly counter checks in the Events and core user areas. It helps keep automated monitoring accurate, reducing false alarms during routine validation.
Original PR description
Not sure where to extra queries come from ... bleurg. runbot-181961
Fixed an issue that could prevent the online shop page from loading after the search box was disabled or re-enabled in the backend. This ensures website managers can change that setting without disrupting the customer shopping experience.
Original PR description
**Before this PR:** - Toggling the active field of the search box view from the backend caused a traceback on the shop page when loading the frontend. **After this commit:** - The shop page now loads correctly even when the search box view is deactivated or reactivated via the backend. The toggling behavior works as expected without raising errors. **opw - 4918722**
This fixes an unstable automated test counter in the email testing area. It helps keep validation results reliable, reducing false failures in the release process without changing customer-facing behavior.
Original PR description
runbot-160897 Forward-Port-Of: odoo/odoo#216819 Forward-Port-Of: odoo/odoo#216782
Portal users will no longer see broken chat window styling when viewing documents with a portal chatter. The chat hub is disabled in that portal context so the page remains visually consistent and easier to use.
Original PR description
When a chat window is open while a portal user accesses a document where portal-chatter is available, its styles break because ChatHub is not rendered inside the Shadow DOM where Chatter is. Since all required styles are within the Shadow DOM, this causes styling issues. This commit fixes the issue by disabling ChatHub in portal chatter. This commit also includes backport of https://github.com/odoo/odoo/pull/203703 Task-4645905 Forward-Port-Of: odoo/odoo#216997 Forward-Port-Of: odoo/odoo#204325
Canceled drag-and-drop actions in Documents now remove the temporary preview card instead of leaving it on screen. This prevents visual clutter and improves reliability, especially in automated tests where repeated canceled actions could cause cards to pile up.
Original PR description
Before this commit, when aborting a drag & drop sequence in documents views, the temporary card "ghost" was not removed from the DOM, and stayed in place. This was most noticable in tests, where multiple cards would pile up on the screen. This commit, adds a cleanup for each added card, to ensure that they are properly disposed of.
The Knowledge article comment box no longer shows both a paper-plane send icon and the Log button at the same time. This prevents confusion for users when posting comments and keeps the comment workflow clearer.
Original PR description
Steps to reproduce =============== 1. Go to knowledge. 2. Open any article with write access. 2. Open the comment composer for any text of article. --> Two buttons are shown to post a comment. (Paper-plane and `Log` button) From [Commit], the condition to show the paper plane was modified, which will be always evaluated to `true` for the knowledge comment composer. After this commit, we will explicitly make that condition false for knowledge comment composer. Task-4866473 [Commit]: https://github.com/odoo/odoo/commit/9ba04f2a28f4d2b1adeb04628383d4730b5e72b6
Odoo Studio now uses the platform's official field settings to decide whether fields can be grouped, sorted, or aggregated in views. This reduces incorrect options appearing in Studio and helps users configure reports and views more consistently.
Original PR description
Before this commit we used some heuristics in studio to determine whther some field had some ability (groupable, sortable, aggregator) After this commit, we use the not so new tools given by https://github.com/odoo/odoo/commit/b177b058be1531c3d2af2b591c22591c19240d33 Note that we still rely on the field type, because even if possible, groupong by some fields doesn't make much sense (eg.: float) task-4879382 Forward-Port-Of: odoo/enterprise#89202 Forward-Port-Of: odoo/enterprise#88522
Fixes an issue where adding a rental product with variants to a renewed subscription could crash the product selection flow. The change checks that rental dates are actually present before using them, preventing interruptions for rental subscription users.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Create a rental product with multiple variants; 2. create a subscription order via the Rental app; 3. add the rental product; 4. confirm & invoice the subscription; 5. renew the subscription; 6. add the rental product to the renewal. Issue ----- > `Uncaught Promise > value.setZone is not a function` Cause ----- Commit 76526bdb3835 implemented the `_getAdditionalDialogProps` method for using OWL in the product configurator. In our flow, it simply checks whether the order is a rental order, and if so, it attempts to serialize its rental dates. Issue is that rental dates are not a required field as long as the order hasn't been confirmed yet, causing the traceback. Solution -------- Instead of checking whether it is a rental order, verify that the order has rental dates before attempting to serialize them. opw-4898437 Forward-Port-Of: odoo/enterprise#89016 Forward-Port-Of: odoo/enterprise#88629
The salary configurator no longer shows Belgium-specific minimum wage warnings for employees in other countries. This prevents irrelevant alerts when Belgian payroll features are installed alongside other localizations, making salary setup clearer for non-Belgian companies.
Original PR description
The warning for a basic wage below minimum level appears for non Belgian employees, such as L10N_US, because the L10N_BE was installed. The logic for the warning has been limited to be applied only on Belgian companies. Task #4907771 Forward-Port-Of: odoo/enterprise#88939
The barcode receipt screen now avoids overlapping column headings when users process partial receipts on very small displays. This makes the incomplete transfer dialog easier to read in languages with longer translations, such as French, without reducing usability on desktop screens.
Original PR description
Issue ----- When processing partial receipts on small resolution screens, the incomplete transfer window has an overlap of its headers for translations with long terms. Steps to reproduce ----- - Set…
Issue ----- When processing partial receipts on small resolution screens, the incomplete transfer window has an overlap of its headers for translations with long terms. Steps to reproduce ----- - Set DB language to French - On Inventory>Configuration>Operation Types, configure the operation type "receipts" to create backorders on "Ask" - Create an incoming transfer - Open barcode on a low resolution screen (eg 340x400px) - Open the transfer in barcode - Process part of the quantity - Validate the partial transfer --> The "Terminé /" & "A faire" column headers overlap Cause ----- The resolution is not wide enough to fit the headers without word break. However breaking words isn't a suitable solution either as it makes headers unreadable. For example, "Terminé /" & "A faire" would read as "Term A " " iné fair" " / e " Given that the 2 columns are semantically related, we can merge their headers together without losing readability. Visual comparison ----- Low resolution before (left) & after the fix (right).  Desktop display is a bit affected but still readable.  ----- Ticket: opw-4715939 Forward-Port-Of: odoo/enterprise#87177
Resetting an invoice to draft now ensures related posted deferred entries are cancelled as expected, even when audit trail protections apply. This helps keep accounting records consistent and prevents incorrect deferred revenue or expense entries from remaining active after an invoice is reversed.
Original PR description
When resetting an invoice to draft, its posted deferred entries should be cancelled. This is adding a test to the linked fix. Linked community PR: https://github.com/odoo/odoo/pull/216628 opw-4891975 Forward-Port-Of: odoo/enterprise#89182 Forward-Port-Of: odoo/enterprise#88992
EasyPost shipping labels now include the related delivery reference, making it easier to match carrier shipments with the correct Odoo delivery. This helps users reconcile shipments between Odoo and the carrier dashboard without manual guesswork.
Original PR description
Issue ----- When using the Easypost delivery service, we don't pass the move reference to the carrier. This makes it hard for the user to match the deliveries found on the carrier dashboard with the…
Issue ----- When using the Easypost delivery service, we don't pass the move reference to the carrier. This makes it hard for the user to match the deliveries found on the carrier dashboard with the corresponding Odoo move. Steps to reproduce ----- - Set an Easypost delivery method up - Create a sale - Add delivery product & get a rate - Confirm the sale - Go to the linked delivery & confirm it --> The printed label has no reference field Discussion ----- As per EasyPost: > The reference field within the shipment body is used for transmissions of electronic data between the shipper and EasyPost, and typically does not get expressed anywhere on the physical label. To get data to the label, you need to leverage the "print_custom" fields outlined in the options section of the shipment. See also https://docs.easypost.com/docs/shipments/options Visual comparison ----- DPD UK labels, before and after the change:  USPS labels, before and after the change:  ----- Ticket: opw-4681615 Forward-Port-Of: odoo/enterprise#88941
Helpdesk email discussions now handle recipients more accurately in automated mail gateway tests. This helps ensure external recipients and message authors are included correctly while avoiding accidental use of internal aliases as external contacts.
Original PR description
See community PR for more details. Task- Forward-Port-Of: odoo/enterprise#88900
Miscellaneous changes
When we get an access error due to multi-company rules, odoo will try to set the appropriate company in the company switcher. If any company has branches, these will also be set. However, currently, if we have multiple branches and we try to access a record that belongs to any branch but the last one, we get a traceback. Steps to reproduce: 1. Create 2 branches of a company 2. Create an employee in the first branch (copy the link to employee) 3. Uncheck the branches in the company selector
Original PR description
When we get an access error due to multi-company rules, odoo will try to set the appropriate company in the company switcher. If any company has branches, these will also be set. However, currently, if we have multiple branches and we try to access a record that belongs to any branch but the last one, we get a traceback. Steps to reproduce: 1. Create 2 branches of a company 2. Create an employee in the first branch (copy the link to employee) 3. Uncheck the branches in the company selector 4. Try to access the employee created in step 2 via a link > Traceback This is because we are trying to access an index that is out of range of `allowedCompanies`. To fix this, we use `find()` to find the appropriate company by its id. opw-4846979 Forward-Port-Of: odoo/odoo#215554
Before this commit, there was a traceback error when importing Winbooks having a different sign on the balance in company currency and foreign currency. There was a frozendict error in the `import_wizard/_import_move()`. ### Steps to reproduce: - Choose a Belgium company - Import a Winbooks file having a different sign on the balance in company currency and foreign currency - Adapt account in Chart of Account if needed - The traceback should be triggered What happens is that the record
Original PR description
Before this commit, there was a traceback error when importing Winbooks having a different sign on the balance in company currency and foreign currency. There was a frozendict error in the `import_wizard/_import_move()`. ### Steps to reproduce: - Choose a Belgium company - Import a Winbooks file having a different sign on the balance in company currency and foreign currency - Adapt account in Chart of Account if needed - The traceback should be triggered What happens is that the record where added to a list, then the app tries to change `'CURRAMOUNT'` value to 0. But it was a frozendict item, so it create an error. I replace the record added to the list with a copy version that can be mutated. opw-4794471 Forward-Port-Of: odoo/enterprise#87484