Saturday, January 31, 2026
8 changes · saas-19.1
Resolved issues and error corrections
This update resolves a visual glitch where the 'Cover Image' option was incorrectly displayed in the website builder for blog and event snippets, even when no cover image was actually present. This ensures a cleaner and more accurate user experience when configuring these dynamic content sections.
Original PR description
*: blog, event This PR fixes an issue about the `Cover Image` option being displayed even if the snippet doesn't come with any cover image. task-5104447 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240055
This update resolves an issue where custom role names added to sign templates weren't being saved correctly. The fix addresses a problem with how the system updated role names, ensuring that changes made through the interface are now properly reflected in the template. This improves the usability of the sign template feature.
Original PR description
Currently, On renaming or updating roles in the sign template doesn't get saved due to which drag-drop 'Signature Item' is reseted back to 'Signer 1'. **Steps to reproduce:** 1) Install sign app. 2)…
Currently, On renaming or updating roles in the sign template doesn't get saved due to which drag-drop 'Signature Item' is reseted back to 'Signer 1'. **Steps to reproduce:** 1) Install sign app. 2) Open the Sign app and select a template. 3) Case A (Direct Rename): In the sidebar, rename a role from 'Signer 1' to 'Signer 1-Test'. 4) Case B (Edit Button): Click the '3-dots' button on the role and click `edit`, change the name to 'Signer 1-Test', and save. 5) Drag and drop 'Signature Item' to template. **Observed Behaviour:** - The Role is not updated as `Signer 1-Test` and reset back to `Signer 1` **Expected Behaviour:** - The Role should be updated as `Signer 1-Test`. ## **Root Cause:** ### **Case A:** The `updateSignerNames` method(see[1]) checks `if (signer.name.includes(str))` where `str` is `Signer` This condition evaluates to true for any custom name containing that substring, causing the code to overwrite the user's custom input with the default generated name string. ### **Case B:** 1) The method `updateRoleNameAndAvatar` see([2]) updated the local state `this.state.roleName` but failed to trigger the `onChangeRoleName` prop. As a result, the parent component (`SignTemplateSidebar`) remained unaware of the change and overwrote the name with its stale value during the next update cycle (triggered by the drag-and-drop action). 2) **when `sign_emsigner` module is installed:** The module patches `openSignRoleRecord` to manually set `this.state.roleName = data.name` before the role update process completes. However, `onChangeRoleName` relies on the condition `name !== this.state.roleName` to decide whether to notify the parent component (via `this.props.updateRoleName`). Since the state is already updated manually, this check fails (returns false), the parent is never notified, and the database is not updated. When `sign_emsigner` subsequently triggers a re-render (via `displayAddDocumentButton`), the parent passes down the old, state name, reverting the user's changes. ### **Fix:** 1) Remove all `updateSignerNames` logic since it is difficult to distinguish between a default-generated name and a user-customized name. 2) Update `updateRoleNameAndAvatar` to call `this.onChangeRoleName` with the new name, ensuring the parent component's state is synchronized. [1]- https://github.com/odoo/enterprise/blob/382dd07b8ef93e9315963825e69066155a534ba0/sign/static/src/backend_components/sign_template/sign_template_sidebar.js#L92-L102 [2]- https://github.com/odoo/enterprise/blob/afc32de0a2757d8f241886ce27736fb7c07ab8c7/sign/static/src/backend_components/sign_template/sign_template_sidebar_role_items.js#L121-L122 **opw-5389063** Forward-Port-Of: odoo/enterprise#102534
This update resolves an issue where unused coupon IDs were incorrectly displayed in loyalty coupon history, creating confusion for users. The fix ensures that coupon IDs are properly removed when rewards are applied or the reward dialog is closed, improving data clarity and user experience. While a full solution requires a view update, the current fix remains stable and addresses the core problem.
Original PR description
### Issue: Due to this issue, `coupon_ids` which are never used are still shown in loyalty coupons history which is confusing for users. #### Steps to reproduce: 1- Create two promotions: - Promo A:…
### Issue: Due to this issue, `coupon_ids` which are never used are still shown in loyalty coupons history which is confusing for users. #### Steps to reproduce: 1- Create two promotions: - Promo A: 10% discount - Promo B: 20% discount 2- Create a SO and add a line. Then confirm the SO. 3- Click on `Reward` button. 4- A dialog should show both promos. Discard the dialog. 5- Navigate to `Discount and Loyalty`. 6- Open Promo A and B and you can see both have lines with `coupon_id.order_id` = `created SO` which is confusing. `Issue 1` 7- Navigate back to SO. Click on `Reward` and select Promo A, apply. 8- Navigate to Promo B. As you see the the `coupon_id` related to the SO is still there. `Issue 2` ### Cause and Fix: This is due to unlinking `coupon_ids` only in SO confirm action, causing this issue on already confirmed SOs: https://github.com/odoo/odoo/blob/604d07ab324caa5f3aa6f3baa9902c2137ea24db/addons/sale_loyalty/models/sale_order.py#L132-L136 We can fix this issue by `unlinking` the `coupons_ids` when a reward is applied or the dialog is discarded. However there are 2 limitations: 1- The view needs to be updated. Otherwise, `coupon_ids` will not be deleted upon clicking on `discard` button. However the fix is still stable. 2- What if the dialog is closed with the cross button or the tab is closed without selecting a reward? In that case the issue will still persist. To fix these issues, we can show only used `coupon_ids` in `loyalty_coupon_id` list view. However that cannot be done in stable as it requires `use_count` to be stored. NB: With some complex filters this also could be fixed on stable but not worth it. opw-5424753 Forward-Port-Of: odoo/odoo#245534
This update corrects a discrepancy in pricing for combo products within the Self Order mode. Previously, prices displayed in the backend and frontend could differ when syncing orders. This change guarantees that combo product prices are consistently aligned across both systems, improving order accuracy and customer experience.
Original PR description
Before this commit, prices were not always aligned between the backend and the frontend, when syncing an order in Self Order mode the price of combo products could differ between backend and frontend. This commit ensures that combo products prices are always aligned between backend and frontend in Self Order mode. Forward-Port-Of: odoo/odoo#245934
This update allows portal users to modify the stage of opportunities they've been assigned to. Previously, this action was blocked due to security restrictions. The fix ensures a smoother experience for users managing leads through the website portal.
Original PR description
Steps to reproduce: 1. As a portal user, access an assigned opportunity. 2. Try to change the stage of the opportunity using the stage dropdown. Current behavior: - The stage change is not allowed, and an error is raised because we don't have rights to directl modify a crm.lead as a portal user. Solution: - Following the behaviour on the how we handle the other details of the opportunity from the portal, we add a dedicated method that allows portal users to update the stage of their assigned leads, if they have the rights to. opw-5346055 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243279
This update fixes an issue where video call links in calendar invitations were not working correctly, displaying as plain text instead of clickable URLs. The change ensures that links are properly formatted, allowing users to easily join video calls sent via email. This improves the user experience for scheduling and attending meetings.
Original PR description
Video call links in calendar invitations were displayed as literal strings due to using `t-attf-href` instead of `t-att-href` in the email templates. ### Steps to reproduce 1. Schedule a meeting with a video call URL. 2. Send the invitation email. 3. Click the link; it incorrectly points to `http://object.videocall_location/`. opw-5436011 Forward-Port-Of: odoo/odoo#243055
This pull request updates the core spreadsheet component to the latest version (19.1.5). It addresses several minor bugs and inconsistencies related to spreadsheet functionality, specifically improving the mobile experience and ensuring consistent selection behavior. These updates enhance the overall stability and usability of the spreadsheet feature.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/f26a13054c [REL] 19.1.5 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/f26a13054c [REL] 19.1.5 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/3b9899bc1e [FIX] gauge: transform section rule formulas [Task: 5867508](https://www.odoo.com/odoo/2328/tasks/5867508) https://github.com/odoo/o-spreadsheet/commit/05e34b7026 [FIX] topbar: fix readonly banner on mobile [Task: 5342571](https://www.odoo.com/odoo/2328/tasks/5342571) https://github.com/odoo/o-spreadsheet/commit/2ba35d52d7 [FIX] selection: keep anchor consistent on mouse up [Task: 5431585](https://www.odoo.com/odoo/2328/tasks/5431585) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update resolves a crash that occurred when printing dashboards within the spreadsheet view. The fix eliminates unnecessary checks and ensures the correct print size is applied after cell animations complete, now allowing for full page printing. This improves the reliability of the spreadsheet printing functionality.
Original PR description
1) Printing a sahboard crashes, because `env.getStore` isn't defined since we're not in a spreadsheet context. The `env.getStore` was needed to wait for cell animations that triggered when changing…
1) Printing a sahboard crashes, because `env.getStore` isn't defined since we're not in a spreadsheet context. The `env.getStore` was needed to wait for cell animations that triggered when changing the mode to `dashboard` to print, but since here we already are in dashboard mode, no aimations are triggered and we don't need this check. 2) Only the first page is now printned in spreadsheet mode This was because while waiting for the cells animations to end, the resize observer changed the sheetview size back to the correct size, instead of the print sheet size. We now change the size to the print size after waiting for the animations to end. Task: [5502436](https://www.odoo.com/web#id=5502436&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#245195