Monday, January 5, 2026
23 changes · saas-19.1
Resolved issues and error corrections
This update fixes an issue where assigned values in project properties would disappear after saving. The root cause was a flaw in how the system handled data retrieval for Many2one fields, specifically related to displaying contact names. The fix ensures that property values are correctly saved and remain visible after modifications.
Original PR description
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as…
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as `Contact`. - Now assign value to Property 1 > Click on `External button` > Click on `Save & Close`. **Issue:** - The assigned value disappears after saving. **Root cause:** - At [1], since `id` is not an active field (see [2]), it is not present in record.data, which is expected. However, record.data is then passed to m2oTupleFromData, which assumes that the data includes an id because it is normally used on data coming directly from the ORM. - Additionally, since display_name is also not present, m2oTupleFromData falls back to record.data.name, which is not proper. **Solution:** - Use an ORM read to retrieve the proper display_name of the record before constructing the Many2one tuple. [1]: https://github.com/odoo-dev/odoo/blob/24ccc3faf14ade70b21bf253af16a534df726fc8/addons/web/static/src/views/fields/properties/property_value.js#L87-L89 [2]: https://github.com/odoo/odoo/blob/369ca1e5a154235e80b9ea6af7b3f10442c0939f/addons/web/static/src/model/relational_model/record.js#L793-L795 Before: <img width="589" height="68" alt="bef" src="https://github.com/user-attachments/assets/b2aeba0c-1c52-4663-9f94-5c7808a882db" /> After: <img width="613" height="81" alt="after1" src="https://github.com/user-attachments/assets/a3b3d733-929d-4a24-9e17-c73d9569e9b7" /> **opw-5257819** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240443 Forward-Port-Of: odoo/odoo#238052
This update fixes an issue where complex custom groupbys in reports were incorrectly formatted with excessive indentation. The change ensures reports handle more intricate domain conditions accurately, improving readability and preventing formatting problems. This enhancement was identified and resolved in the latest version of Odoo Enterprise.
Original PR description
When a custom groupby defined a domain with more than one element in it (typically, conditions on multiple fields, possibly with '|' or '&' operations), if groupby lines needed to be generated for subsequent groupby, the generated groupby lines had a too high level, and ended up being over-indented.
This was because the groupby expansion computed the number of higher-level groupby lines as the length of the domain needed to restrict their content. This was too naïve, and won't work well with custom groupbys, which can define longer (or even empty) domains.
This was spotted in master (19.1), with the refactored EC Sales list, which now uses a custom engine and a specific custom groupby map.
Forward-Port-Of: odoo/enterprise#102240This update resolves an issue where the 'Use compact format' option within Odoo charts was visually present but not functioning correctly. The fix ensures that this option now correctly controls the display of charts, improving user experience and data visualization. This change was driven by a task to address a reported bug.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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#240251
This update resolves an issue where the 'Use compact format' option in the chart side panel was visually present but not working correctly. The fix ensures this setting now functions as intended, providing users with the desired chart display. This improves the overall usability of the chart feature.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#102263
This update resolves an issue where the 'Position' column in German Sale Order reports was blank, causing formatting problems. The fix corrects a calculation error in the report template, ensuring accurate sequential numbering (1, 2, etc.) and proper table display. This improves the accuracy and readability of sales reports.
Original PR description
Before this commit, when printing a Sale Order using the German localization, the "Position" column in the PDF report was empty. Additionally, the table formatting was broken due to this missing data. This issue occurred because the index variable used to calculate the line number in the report template (QWeb) was incorrect. This commit fixes the index logic in the report template. Now, the "Position" column correctly displays sequential numbers (1, 2, etc.), and the table formatting renders correctly. ticket-5225647 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#240714 Forward-Port-Of: odoo/odoo#240243
This update resolves a rare technical issue that could occasionally cause problems when opening a parent channel within Odoo. The fix prevents a traceback error, ensuring a smoother and more reliable experience for users. This improves overall system stability.
Original PR description
This commit fixes a rare traceback that could occur when opening a parent channel from a thread that has been deleted. task-5355205 Forward-Port-Of: odoo/odoo#241266
This update fixes a visual issue where carousel navigation arrows displayed incorrectly when the website was configured for Right-to-Left languages like Arabic. The fix ensures that the arrows align correctly regardless of the website's language setting, providing a consistent user experience for all customers. This was caused by a previous change that inadvertently removed RTL-specific styling.
Original PR description
Steps to reproduce: =================== - Install an RTL language (e.g., Arabic) on the website. - Go to website & Edit mode - Drop product snippet `s_dynamic_snippet_products`. ->When the website is…
Steps to reproduce: =================== - Install an RTL language (e.g., Arabic) on the website. - Go to website & Edit mode - Drop product snippet `s_dynamic_snippet_products`. ->When the website is viewed in an RTL language, the navigation arrows in the snippet are displayed in the wrong direction. Cause: ====== A previous commit [1] applied a specific `transform` to arrows to adjust their visual style, By defining a new transformation for the snippet, the default generic transform for RTL language was overwritten. https://github.com/odoo/odoo/blob/e0a5e68e861363378ecd184711bc9356fe0376ff/addons/web/static/lib/odoo_ui_icons/style.css#L105 Consequently, the arrows lost their RTL-specific orientation. Solution: ========= The CSS has been updated to explicitly handle the RTL context. [1]: https://github.com/odoo/odoo/commit/d9ea6d1ebabf64dac434e0d2a7c2535bbfff5c71 opw-5440273 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241541
This update removes a confusing and unnecessary warning message that appeared when setting up pricelists for event products. The warning was poorly designed and didn't provide useful information, creating a frustrating user experience. This change simplifies the process for managing pricing for events.
Original PR description
* Remove the warning shown when creating pricelist rules for event products. * The warning is noisy, not well localized, and appears for every rule, resulting in a poor user experience with little practical value for most users opw-5441138 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update to the account module's testing utilities prevents unnecessary invoice line creation during tests. This improves test stability and reduces potential errors, ensuring more reliable test results. The change focuses on optimizing the test setup process.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/102632
This update corrects an issue with the padding within Gantt chart popovers, ensuring a more visually consistent and professional presentation. The change was necessary to address a design flaw identified in a previous development cycle, improving the overall user experience.
Original PR description
This commit fixes wrong padding inside gantt popovers body introduced in #101482. task-5166940
This update adjusts how preset options are displayed in the self-order mode, ensuring that available presets are shown only when appropriate. Specifically, 'Dine In' presets now appear correctly on kiosks and mobile menus when a table identifier isn't present, requiring a slight configuration change if needed.
Original PR description
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset…
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset was not available in self, this preset was used as the default one. But now, it's not the case anymore. We only use it if, and only if, it is available in self. The second thing was to fix the "Dine In" preset availability in the eating location choices. A dine-in preset is a preset which have service_at == table as attribute. If this preset (is `available_in_self`) and has `service_at === table`, we only show it when there is a table_identifier in the URL or when we are in the kiosk. In all other cases, it'll never be shown. If user wants to see this preset in the kiosk or in the mobile menu without table_identifier, user needs to change the `service_at` field at `counter` (or `delivery`) and put the product as `available in self` as well. task-id: 5190541 enterprise pr:https://github.com/odoo/enterprise/pull/103063 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234522
This update resolves an issue where the attendance app would crash when an employee didn't have a linked calendar. The fix ensures the app handles employees with flexible attendance schedules properly, preventing errors and improving overall usability.
Original PR description
Steps to reproduce: - Create an employee - Remove the calendar to have fully flex - Open the attendance app -> traceback When an employee has no resource calendar (resource_calendar_id=False), the _gantt_unavailability method would crash with a TypeError when trying to create a ZoneInfo from calendar.tz (which is False/None). This fix adds a check to skip calendar periods where the calendar is not set, consistent with how flexible calendars are already handled. task-5462208
This pull request updates the .weblate.json files, which contain the translations for Odoo. These updates reflect the addition of new modules to the system, ensuring that all users see the application in their preferred language. This maintenance ensures accurate and consistent translations across the Odoo platform.
This update fixes an issue where the source origin of multiple moves within a picking was being duplicated, leading to inaccurate inventory tracking. The change ensures that each origin is recorded only once, improving the reliability of stock data. This resolves a reporting discrepancy identified in the Odoo system.
Original PR description
### Behavior: #### Current: During the assignment of a picking, if several of its moves have the same origin, it will repeat that origin in its own origin. #### Expected: Only have one time each…
### Behavior: #### Current: During the assignment of a picking, if several of its moves have the same origin, it will repeat that origin in its own origin. #### Expected: Only have one time each origin. ### Steps to reproduce: From Inventory * Enable two step transfer for the warehouse From Barcode * create and validate new receipts with "Product A" * create and validate a second new receipts with "Product A" and other products From Inventory/Operations/Transfers/Receipts * Open the corresponding receipts * In "source Document" (Field: origin, Model : stock.picking) we can see that the reference from second receipts is repeated. ### Observation: In the case of already existing origins it will not duplicate them but it's missing if several item comes from the same origin. https://github.com/odoo/odoo/commit/0caa44ca97d9d197811a03ad2ff227df68d4437a#diff-55c6314416a6a400da6acd5018d161a55eeeb0e3008fec8828121e3dd12be0ebR1410 opw-4970159 Forward-Port-Of: odoo/odoo#232579 Forward-Port-Of: odoo/odoo#223251
This update resolves a visual issue that occasionally appeared when using the cookies bar with a Bootstrap modal open. The fix prevents a Bootstrap setting from causing a brief UI glitch, ensuring the cookies bar displays correctly for all users. This improves the overall user experience.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#241215 Forward-Port-Of: odoo/odoo#240269
This update enhances the usability of the 'Picture-in-picture' and 'Fullscreen' buttons within Odoo's discuss calls. By adding a subtle hover effect, users can now easily identify and click these buttons, improving the overall user experience. This simple change makes the application more intuitive and efficient.
Original PR description
Before this commit, when in a discuss call, the buttons "Picture-in-picture" and "Fullscreen" in the bottom right had no mouse hover effect. As these buttons are visually just icons, the lack of hover effect makes it hard to tell which button is hovered thus making the click harder than it should. This commit reduces slightly the opacity of items, so that on mouse hover the opacity is removed. This acts as a small hover effect that makes it easier to click on these buttons reliably.  Forward-Port-Of: odoo/odoo#241873
This update corrects a minor issue where the placement of the grade ID field in the partnership module was unintentionally altered. The change restores the field to its original location, ensuring data is displayed and organized correctly. This fix improves the user experience and data integrity.
Original PR description
The following commit [1] modified the position of the VAT field, which caused the grade_id field to be shifted. So this commit updates the xpath to restore grade_id to its original location. [1]: https://github.com/odoo/odoo/commit/3a56f59d466e72b3bf99f241c479cd3130173b41 task-5461569
This update corrects a technical issue that prevented the Quality IoT module from functioning correctly when installed alongside the MRP Workorder module. The fix involves relocating a component to ensure proper dependency management, resolving a JavaScript error related to missing module definitions.
Original PR description
### Issue: The QualityCheck component is defined in the `mrp_workorder` module:…
### Issue: The QualityCheck component is defined in the `mrp_workorder` module: https://github.com/odoo/enterprise/blob/7c64908258d5a0fb9adecd6dd2760e255e46314b/mrp_workorder/static/src/mrp_display/mrp_record_line/quality_check.js#L7 which is not a dependency (even indirectly) of the `quality_iot` module. Hence, if you install the `quality_iot` and enable debug mode, you will raise a JS [error](https://github.com/odoo/odoo/blob/a1583d0564552007a3d5f12d967c2c0036e05e44/addons/web/static/src/module_loader.js#L164-L169) because of missing dependencies: > The following modules are needed by other modules but have not been defined, they may not be present in the correct asset bundle. This happens because commit a13e38006d3cba6cab4565de2b014d294d2c0af3 added a patch of the QualityCheck component in the `quality_iot` https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/quality_iot/static/src/mrp_display/quality_check.js#L4 https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/quality_iot/static/src/mrp_display/quality_check.js#L17 opw-5353986 Forward-Port-Of: odoo/enterprise#100899
This update corrects a minor bug in the live chat feature, ensuring that conversation descriptions now function correctly. The issue stemmed from a subtle code difference that was missed during testing. Adding new tests resolves this problem and improves the reliability of the live chat experience.
Original PR description
*: im_livechat Accidental regression from https://github.com/odoo/odoo/pull/237749 The code had getter named `allowDescriptionsTypes` and the patch was `allowDescriptionTypes`. While this looks the same at a glance, there's is a "s" in "description(s)" that differs. This subtle change was not caught due to lack of test coverage, which this commit adds.
This update resolves an issue where Studio was incorrectly loading POS views as default, even when they weren't fully supported in the backend. A new mechanism allows modules to control which views are considered as defaults, ensuring Studio consistently loads the correct views for Studio users. This improves Studio's reliability and user experience.
Original PR description
Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit creates a hook to get the domain used to fetch default views (`_get_default_view_domain()`). This way, modules can override the domain of `_get_default_view_domain()` method in order to exclude some views from being selected as default ones no matter the sequence. Forward-Port-Of: odoo/odoo#237122
This update resolves a problem where Studio was incorrectly loading POS views as default, leading to errors. The change prevents these POS views from being selected by default, ensuring the backend operates with the intended views and improving stability.
Original PR description
..., appointment, l10n_ke_edi_oscu_pos Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit edit the domain of `_get_default_view_domain()` method in order to exclude these POS views from being selected as default ones. Forward-Port-Of: odoo/enterprise#98764
This change corrects a display inconsistency in loyalty promotions. Previously, users could inadvertently link promotion descriptions to discount products, leading to inaccurate discount information. This fix removes the ability to modify this technical field, ensuring consistent discount descriptions are shown to customers.
Original PR description
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: -…
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1 point 2- Using debug mode, in promotion's reward view, change the `Description on order` to `AAA 10%`. Save the promotion and you can see the `Discount product`'s name is set to the same description. 3- Create another promotion called `BBB`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1000 points. 4- In promotion reward's view change the `Discount product` to `AAA 10%` which is promotion `AAA`'s discount product. 5- Change the `Description on order` to `BBB 10%` and save. 6- You can see the name of `Discount product` is changed as well. 7- In promotion `AAA` and you can see the description and the name of `Discount product` mismatch. 8- Navigate to shop, and add a product to cart with a price of more than 50. 9. You can see after applying promotion `AAA` the description from promotion `BBB` is shown. ### Cause: The technical field `Discount product` is never meant to be changed, and this field is introduced for reporting purposes and showing the discount applied in cart. However, this field is added to view in #132857. This is done as a hack to find the `Discount product` created for the promotion, as a workaround for an accounting issue due to adding account to `Discount product`, and originally `discount_line_product_id` was not supposed to be shown or changed through form. After discussion with PO, we decided this field should be removed from the view. Also removing this field will not undo the main fix of #132857, and that workaround was introduced only to find the `Discount product` for that specific client's use case. However, in stable, it is kept for customization compatibility. It's set invisible in order to prevent the issue. opw-5229633 Forward-Port-Of: odoo/odoo#240684
This update corrects a technical issue where the Swedish blackbox feature in Odoo experienced tracebacks when receiving non-UTF-8 characters from serial devices. The fix involves gracefully handling these errors during decoding, ensuring stable operation and preventing disruptions to data collection.
Original PR description
If a non utf-8 chracter is returned by a serial-connected device, the supported method of the swedish bb raises a traceback.