Saturday, September 26, 2026
3 changes · master
Resolved issues and error corrections
The livechat panel styling has been adjusted to align with Odoo's frost design, including the transcript sender and channel information areas. Ended or disconnected chat states now display banners and disabled input areas consistently, giving visitors and operators a more polished and coherent experience.
Original PR description
Also adapt the "Livechat has ended" and "Visitor has disconnected" disabled composer / banner to match frost design. <img width="756" height="822" alt="Screenshot 2026-09-24 at 23 19 15" src="https://github.com/user-attachments/assets/68e831bb-d9c2-4359-8a8f-4a26cbadc4b3" /> <img width="811" height="819" alt="2" src="https://github.com/user-attachments/assets/c7788df1-4224-435a-ad9b-8249960bc43d" /> <img width="755" height="831" alt="Screenshot 2026-09-24 at 23 19 06" src="https://github.com/user-attachments/assets/92853df6-8252-43e7-a38d-1bef7ad50728" /> <img width="811" height="817" alt="4" src="https://github.com/user-attachments/assets/47d5ce3c-1e19-493a-9dde-1c0dcf3c8e99" /> Forward-Port-Of: odoo/odoo#290564
Quotation templates with lines that do not specify a product now keep their manually entered prices when imported into a sales order. This prevents those custom lines from being incorrectly reset to zero, helping sales teams preserve accurate quote totals.
Original PR description
Importing a quotation template with productless lines caused those lines to have 0 as a price, regardless of whether a manual price was set on the template line. Make sure that some onchanges do not reset the values provided by the template, and that when triggered, the prices recomputation doesn't reset those manual prices either. Forward-Port-Of: odoo/odoo#289652
Fixed an issue where merging contacts while working in a different company could incorrectly combine contacts that each had a linked portal user. The merge check now counts all linked users across companies, helping prevent duplicate user links on one contact and keeping contact data consistent.
Original PR description
Switching companies can let a contact merge bypass the check that prevents multiple users from ending up linked to the same contact. ### Steps to reproduce 1. As a user with Contact Creation rights…
Switching companies can let a contact merge bypass the check that prevents multiple users from ending up linked to the same contact. ### Steps to reproduce 1. As a user with Contact Creation rights and access to companies A and B, select company A. 2. Create two contacts with no company set and grant each portal access. 3. Select only company B. 4. Merge the contacts. The merge succeeds and links both portal users to the surviving contact. With company A selected, the same merge is correctly rejected. ### Cause The wizard checks that the contacts have at most one linked user in total, including archived users. However, it reads `user_ids` with the acting user's permissions. Company record rules hide both portal users when only B is selected, so the check finds none. The subsequent SQL update still moves both users' contact links to the surviving contact. ### Fix Use `sudo()` only for this check, since it must count every user whose link the merge would move. Retain `active_test=False` to include archived users. Add a regression test covering both company selections. opw-6586945 Forward-Port-Of: odoo/odoo#290643 Forward-Port-Of: odoo/odoo#290296