Tuesday, December 30, 2025
9 changes · saas-18.3
Resolved issues and error corrections
This update fixes an issue where multiple order lines were incorrectly refunded when a user initiated a refund. Now, only the selected line is refunded, and deleting a refund order properly restores the ticket screen. This ensures accurate refund processing and a better user experience for Point of Sale transactions.
Original PR description
Steps to reproduce: - In POS, select a paid order in the ticket screen with multiple lines. - Select the first line, choose a quantity to refund, and click Refund. - Return to the ticket screen, select the same paid order again. - Select another line and quantity, and click Refund. Issue: - In the second refund, all order lines were being refunded, even though only one line was selected. - After deleting a refund order, the ticket screen still showed messages like "Refunding x quantities in xyz order." Fix: - Only the selected lines are refunded. - Deleting a refund order restores the state of the linked order correctly. Task-5095578 Forward-Port-Of: odoo/odoo#241347 Forward-Port-Of: odoo/odoo#227937
This update fixes a visual issue in the email interface where the unread message separator would overlap with the highlight animation. By increasing the spacing between these elements, the separator is now clearly visible during message navigation, ensuring a consistent and professional user experience.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- In saas-18.2, the unread message separator can visually overlap with the message jump/highlight…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- In saas-18.2, the unread message separator can visually overlap with the message jump/highlight animation when navigating to unread messages. This issue was not present in 18.0 and results from reduced vertical spacing between the unread separator and the first unread message. **Current behavior before PR:** ---------------------------------------------- - Clicking the “X new messages” banner triggers a jump highlight animation - The highlighted message overlaps the unread red separator line - The separator becomes partially or fully obscured during the animation **Desired behavior after PR is merged:** ---------------------------------------------- - The unread separator remains clearly visible during message jump/highlight - No overlap occurs between the separator and the highlighted message - Highlight animation behavior remains unchanged - Visual behavior matches the stable experience observed in 18.0 This PR restores sufficient vertical spacing for the unread separator line, preventing overlap without altering message animation or interaction logic. Task-5420965 I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241294
This update enhances the preparation display filters in the Point of Sale module, providing more flexible options for managing order preparation. Specifically, it removes the 'All' time filter option, adds a 'Now' option for real-time orders, and introduces multi-select capabilities. These changes improve the user experience and allow for more efficient order management.
Original PR description
- Time filter: * Remove "All" option (now default) * Add "Now" option for unscheduled and next-slot orders * Allow multi-selection - Preset filter: * Add multi-select preset filter * Only shown if related POS configs use presets - Category/Product filter: * Always show pos.category filter (even if no preparation card contains this category) * Move category/product filters below Time and Preset filters task: https://www.odoo.com/odoo/project/1737/tasks/5060221 community PR: https://github.com/odoo/odoo/pull/233920
This update fixes a technical error that prevented the system from correctly updating SSL certificate status information. The issue stemmed from incorrect timezone handling during data conversion, which caused a system error. This change ensures certificate updates run smoothly without interruption.
Original PR description
Currently an error occurs when the `iot/box/update_certificate_status` controller tries to write `ssl_certificate_end_date` as `cert.not_valid_after_utc`. Error: `ValueError: unconverted data remains: +00:00` This is because when we convert `cert.not_valid_after_utc` to a string, it will convert the UTC date as ` "2026-03-08 13:06:39+00:00"` and while the system converts this string date with +00:00, it will throw an error. This commit fixes the issue by using a `timezone-naive` value derived from `cert.not_valid_after_utc`. Applying `replace(tzinfo=None)` removes the `+00:00` timezone information and converts the datetime to a `timezone-naive` object. sentry-7016111455
This update fixes a bug that caused calls to unexpectedly end when users joined from multiple browser tabs. The change ensures stability during multi-tab scenarios, preventing crashes and improving the user experience when joining calls from different windows.
Original PR description
**Steps to reproduce:** - Start a meeting with user A - Share the invitation link with user B - Login with user B and join the call - Open another browser tab/window with the same user B - Join the same call in that tab using the invitation link - The call ends for that user as the RTC session is terminated - **_TAB1_**: join the call again - **_TAB2_**: error **Current behavior before PR:** When the same user joined the same call from another tab or during RTC renegotiation, selfSession could temporarily be undefined. **Desired behavior after PR is merged:** This PR ensures that no crash happens when dealing with the RTC Session in a `multi-tab` scenario. task-[5263097](https://www.odoo.com/odoo/project/1519/tasks/5263097) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240881
This update fixes an issue where part-time employee time off calculations incorrectly included company working days, even on holidays. Now, time off is accurately calculated based on the employee's actual working schedule, ensuring correct holiday deductions for part-time staff. This improves payroll accuracy and compliance.
Original PR description
Currently when a employee has a diferent working schedule than the company's one (part time employee), when he takes time off the computation includes days where he is not working but is an active working day for the company. That is not considering holidays. e.g. -employee works monday to wednesday -company works monday to friday -there is a holiday on the thursday taking monday to wednesday should count 4 days. added holidays support for this case opw-5082080 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240299 Forward-Port-Of: odoo/odoo#228960
This update adjusts the size of the QR code displayed to customers in Odoo Point of Sale. The previous QR code was too small, making it difficult to scan. This change ensures better visibility and a smoother customer experience.
Original PR description
**Description of the issue/feature this PR addresses:** QR code generated for customer display in Odoo POS is considered too small, therefore need size adjustment for enhanced visibility and user experience. Sizing is adjusted to be more uniformed with the backend popup. task-[5262218](https://www.odoo.com/odoo/project.task/5262218) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237684
This update resolves an issue where copying and pasting content from the HtmlViewer resulted in a loss of plain text formatting. The fix restores the ability to paste text directly into other applications, ensuring users can accurately copy and paste content as intended. This improves the usability of the knowledge management feature.
Original PR description
Since [1] when `vnd.odoo.odoo-editor` was added to the `HtmlViewer` clipboard, the `text/plain` mimetype was lost. This commit restores the plain text version of the clipboard. Steps to reproduce: - In knowledge, lock a page - Select some content - Copy - Paste into a plain text editor => No content was pasted [1]: https://github.com/odoo/odoo/commit/62a7c50b434e3f47ad58e20e96970cbd90b979b6 task-5449435
This update fixes an issue where combo prices were incorrectly recalculated after changing the order's preset (e.g., from dine-in to delivery). The fix ensures that extra items within a combo are accurately priced based on the combo's base price, preventing unexpected price adjustments.
Original PR description
**Problem:** When ordering a combo product, you can order more products than the combo requires, which will the add *base_price* to the combo price. The problem is that when changing the preset, like…
**Problem:** When ordering a combo product, you can order more products than the combo requires, which will the add *base_price* to the combo price. The problem is that when changing the preset, like going from eat in to delivery, the pricelist is reconfigured, and it does not take the extra products from the combo into account. This means that the price will go back to the combo's price without the extra products. **Steps to reproduce:** - Have a combo that can take on multiple free products and has a limit above this free product number - Order more than the free quantity - Change the preset (from eat in to delivery) - The price is recomputed without taking the extra products into account **Why the fix:** The extra articles were not accounted for when changing the pricelist, meaning they would end up free and the price would change. We now make a separation between the free products (that are from the combo) and the extra products. The extra products cost the *base_price* of said combo. To do that, we need to get the extra lines from the combo, which are the products that are not free in the case where there are more products selected in the combo than free products defined in the definition of the combo. To make that happen, we add the non free lines to the extra lines list once we have at least as many free products as defined in the combo definition. In the case where the quantity of a product is greater than the number of free items, the lines are automatically split. Meaning if we have a combo with 2 free items but we order 3, we will have a line with a quantity of 2 and another line with a quantity of 1. In that case, the first line will be free, but the second line will be an extra. This logic is implemented here https://github.com/odoo/odoo/blob/0087cc96b2d2190ab107c3d50d3bdd48f7a687e9/addons/point_of_sale/static/src/app/components/popups/combo_configurator_popup/combo_configurator_popup.js#L88-L106 Which is then retrieved here to make the separation in the combo's price https://github.com/odoo/odoo/blob/0087cc96b2d2190ab107c3d50d3bdd48f7a687e9/addons/point_of_sale/static/src/app/services/pos_store.js#L879 opw-4885574