Monday, September 28, 2026
40 changes · master
Resolved issues and error corrections
The message composer’s Send button now correctly shows its primary color when active. This makes the chat and live chat interface clearer for users and restores the expected visual cue for sending messages.
Original PR description
Before this commit, when composing a message in composer, the "send" button lacked the primary bg. This comes from a recent fix that canceled the bg and outline of `.o_btn_circle` in ActionList, a…
Before this commit, when composing a message in composer, the "send" button lacked the primary bg. This comes from a recent fix that canceled the bg and outline of `.o_btn_circle` in ActionList, a new classname to make rounded buttons with frost design. Send button is one of them and was mistakenly affected by this change. This commit fixes the issue by: - marking the "send" button as `hasBtnBg: true`, which was missing even though this button has a background as a button. - targetting the prior fix [1] on the button rather than ::before, to match the specificity rule of primary ActionList buttons with `hasBtnBg` The composer is narrow so the o_btn_circle need to be slightly smaller like in chat window. The gap between buttons has been adjusted to match with the slightly reduced sizing. [1]: https://github.com/odoo/odoo/pull/290101 <img width="2504" height="1031" alt="Screenshot 2026-09-28 at 11 37 34" src="https://github.com/user-attachments/assets/c5eb3f3c-3401-4aff-bd94-637b61fbe645" /> _Each image shows livechat agent in webclient on the left, livechat visitor on the right. Light theme: some text in livechat visitor's composer, dark theme: some text in livechat agent's composer. See the active style of "Send" button from before / after._ Forward-Port-Of: odoo/odoo#290734
This fixes a sales dashboard pivot so it counts sales using the correct order reference field instead of a generic count. Business users should see more accurate figures in the affected sales dashboard view.
Original PR description
Pivot 11 wrongly used "__count:sum", should use "order_reference" instead. Task: 6589271 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#289586
This update removes a redundant styling label used around mail avatars and consolidates it into the existing avatar card structure. It reduces confusion for future maintenance without changing how users interact with mail or discussions.
Original PR description
This class is only useful for the avatar card and can be embed into `o_avatar_card`. It's also less confusing (`o_avatar_card` vs `o_card_avatar`). It can be safely removed from other place has no scss/xpath is attached to this card.
The Live Chat channel card layout was adjusted so the Join or Leave button stays clear of the three-dot card menu. This prevents visual overlap when hovering over a card, making the interface cleaner and easier to use.
Original PR description
The three-dot menu of a kanban card sits in its top-right corner, where the Join/Leave button of a Live Chat channel also sits. Hovering the card brought the menu over the right edge of the button. This commit widens the padding of the button column from pe-1 to pe-3 to avoid this overlap. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#290713
The chat window’s new message banner now displays with square edges, matching the intended layout shown in the updated design. This keeps the messaging experience visually consistent and avoids an awkward rounded-corner appearance.
Original PR description
Before: <img width="464" height="176" alt="image" src="https://github.com/user-attachments/assets/08198c28-645f-4054-a88d-a645b0c4ba27" /> After: <img width="460" height="195" alt="image" src="https://github.com/user-attachments/assets/b65ac254-4f97-4320-b30a-a8500500c8da" /> Forward-Port-Of: odoo/odoo#290738
The US accounting template now uses “Depreciation” for physical asset accounts and reserves “Amortization” for intangible assets. This improves financial statement accuracy and adds a dedicated account for amortization where appropriate.
Original PR description
Amortization is used when it is an intangible asset (loan/ goodwill/ IP). Depreciation would be used for a physical tangible asset (vehicles/ PPE). This commit renames some accounts wrongly using the "Amortization" wording when "Depreciation" should've been used. We also add a new account that can be used for Amortization. task-6578876 Forward-Port-Of: odoo/odoo#289595
The tax form layout has been adjusted so the active toggle appears at the bottom of the form. This makes the screen flow more naturally for accounting users and reduces visual interruption while reviewing tax details.
Original PR description
The active toggle is moved to the bottom of the tax form view to improve UI flow accounting-v20-pad
Website editor size and filter controls now save changes made with the keyboard arrow keys instead of only showing them temporarily. This prevents values from reverting after the user clicks away, making editing more reliable.
Original PR description
When a BuilderRange is displayed with its optional number input, using ArrowUp/ArrowDown updates the preview but does not save the new value. The range component passes its handler through onKeydown, while BuilderNumberInputBase only calls onKeydownArrow after handling arrow keys. As a result, the debounced commit is skipped. Steps to reproduce: - Drop a s_social_media inner snippet - Click on the snippet, then click on the "Size" input - Use "ArrowUp" to increase the value of the number input - Click anywhere on the page => The size goes back to the previous one. task-6385984 Forward-Port-Of: odoo/odoo#289539 Forward-Port-Of: odoo/odoo#283504
Fixed an issue where spreadsheet pivot tables with monetary values could fail when inserted with sorting enabled. The spreadsheet now uses the correct currency-aware measure for sorting, preventing invalid pivot definitions and keeping reports usable.
Original PR description
Monetary measures inserted from a pivot view use the currency-aware `sum_currency` aggregator. However, the sorted column still derived its measure ID from the field's default aggregator. For example, Expected Revenue was inserted as `expected_revenue:sum_currency`, while its sorting referenced `expected_revenue:sum`. Since a sorted column must reference one of the pivot's measures, the spreadsheet rejected the pivot definition as invalid. Resolve the sorted measure from the generated pivot measures and use its canonical ID. This also preserves the existing behavior of dropping the sorting when its measure is no longer active. Task: 6563913 Forward-Port-Of: odoo/enterprise#131494
A test setup issue was fixed so rental planning availability checks use the intended faster test path. This helps keep development and release validation more reliable without changing customer-facing behavior.
Original PR description
The "routing" ormcache may retain controller endpoints built with the original unpatched method if resolved by an earlier request in the same worker process. `test_website_sale_planning_renting_select_ unavailable_date` and `test_website_sale_renting_planning_max_qty` patch `renting_product_availabilities` but never hit this, so the real (slow, ~3-year range) method runs instead, delaying the test. Invalidate the "routing" ormcache after patching, as in odoo/odoo#271536. Forward-Port-Of: odoo/enterprise#131683
Payment activation emails now keep the existing message settings instead of replacing them. This fixes cases where customers could receive the email in the wrong language, improving clarity during payment setup.
Original PR description
We have been overwriting the context for the payment activation email, in this commit we extend it instead. This fixes the translation issue. No task ID
Bank reconciliation quick create now applies the selected reconciliation model before running automatic matching on any remaining lines. This helps ensure users' chosen model is respected and reduces incorrect or unexpected reconciliation results.
Original PR description
This commit will change the order in the create function. We will now, first apply the reco model that was set on the quick create input. And then for remaining line will go through the auto reconcile. no task id Forward-Port-Of: odoo/enterprise#132430
The Off-Cycle button has been removed from the employee selection step in payroll runs because using it there could cause an error when multiple employees were selected. This prevents confusing payroll interruptions and keeps the action available only where it makes sense.
Original PR description
Version: - 20.0 Issue: - When selecting multiple employees in a pay run and clicking the Off-Cycle button a ValueError traceback is raised: Expected singleton: hr.employee(...). With this commit: - Remove the Off-Cycle button from the Select Employee page, as it doesn’t make sense to have it there. Task-6579627 Forward-Port-Of: odoo/enterprise#132326
When HR users select a private city for an employee address, the related state and ZIP code now appear immediately instead of only after saving. This keeps address entry consistent and reduces confusion during employee record updates.
Original PR description
Picking a city didn't fill in state and zip until you saved. Added an onchange so it happens live, same as we already do for state/country. Task 6482304
The Belgian payroll localization now installs the guaranteed wage interrupted day illness work entry with the correct absence request settings. This helps payroll teams apply the right configuration from the start and reduces manual corrections after installation.
Original PR description
When installing the localization for Belgium payroll, out of all of the 'hr.work.entry.type' pre-installed for the country, there was a wrong config initialization for the 'Guaranted wage interrupted day illness' one. On the XML data, the proper modifications to the 'time_off_selectable', 'requires_allocation' and 'request_unit' were updated to resemble the right case. task-6580292
This fix improves how employee work contact information is calculated so the right access rules are respected. It helps prevent unexpected behavior when HR records are updated or viewed by different users.
Original PR description
Ensure correct access to avoid unexpected behavior opw-6560194 Forward-Port-Of: odoo/odoo#289768 Forward-Port-Of: odoo/odoo#288063
This update removes an unusual default value from an internal test method parameter to align with coding best practices. It helps prevent confusing behavior in developer tooling and keeps the codebase more reliable, with no expected impact on regular users.
Original PR description
[RUF077](https://docs.astral.sh/ruff/rules/method-receiver-default/#method-receiver-default-ruf077) specifies that method receiver parameters, such as `self` and `cls`, should not have default values. The reasoning is because these parameters are usually bound by the method binding protocol, so a default value on a receiver parameter is almost certainly a mistake and can lead to confusing behavior or runtime errors. This method seems to not reference self, and this should not cause errors, but it is best practice to not do this. runbot-[947144](https://runbot.odoo.com/odoo/error/947144) Forward-Port-Of: odoo/odoo#290616
This update removes unnecessary logic in the accounting reports download flow. The change makes the code clearer and reduces the chance of confusion in future maintenance, with no expected change for users.
Original PR description
`!something` is never nullish, so `?? true` is dead code. Probably the intention was `if (!(data.no_closing_after_download ?? true))`, but reviewer has the final say and I can change it. Forward-Port-Of: odoo/enterprise#131774
The mobile navigation menu now shows a pointer cursor when users hover over menu items with a mouse or trackpad. This makes the interface feel consistent and clearly indicates that the items can be clicked.
Original PR description
## Description of the issue/feature this PR addresses: On tablet, when a pointing device is used, the cursor on menu items is text ## Current behavior before PR: The cursor shows as "text" when hovering menuitems in the mobile navbar. ## Desired behavior after PR is merged: The cursor shows as "pointer" when hovering menuitems in the mobile navbar.
Required statusbar fields now display the same red border and background warning as other required fields when a user tries to save without choosing a value. This makes validation errors easier to notice and helps users correct forms before saving.
Original PR description
**task:** 6573463 **Description of the issue/feature this PR addresses:** The problem occurs when a field, displayed with the statusbar widget, is required, but the user wants to save without selecting a value. The red colors displayed on the normal field are not applied to the statusbar. This commit adds the required css style to apply the invalid colors. The modification is applied to all media breakpoints. **Current behavior before PR:** The red color is not applied on the border and background of the statusbar when it is invalid. **Desired behavior after PR is merged:** The red color is applied on the border and background of the statusbar when it is invalid. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes issues in automated checks for purchasing and units of measure so they work consistently in different run modes and fresh databases. It helps ensure the purchase catalog correctly shows unit of measure information when that feature is enabled.
Original PR description
> ### [FIX] purchase: tour trigger > This commit replaces a trigger which used the button URL because this button's URL can differ if the tour is run in debug mode (eg.: `/odoo/purchase?debug=assets`…
> ### [FIX] purchase: tour trigger > This commit replaces a trigger which used the button URL because this button's URL can differ if the tour is run in debug mode (eg.: `/odoo/purchase?debug=assets` instead of `/odoo/purchase`). > ### [FIX] uom: correct group > This commit fixes `_enable_uom` and `_disable_uom` `UomCommon` class methods to correctly enable/disable the UoM feature. > > Before that, the user has CRUD accesses to UoM but the feature wasn't enabled as expected, which means `_enable_uom` wasn't enough to display UoM fields in view when this field use the group `uom.group_uom` to be display. > > This issue was spotted while working on the `purchase` test/tour `test_catalog_vendor_uom`. When launch locally on a DB without demo data and only with `purchase` installed, the units of measure weren't visible during the tour, and if the tour is paused and we go in the settings, we can see the UoM setting is unticked. Forward-Port-Of: odoo/odoo#289345 Forward-Port-Of: odoo/odoo#283451
This fixes an error that could appear when refusing an applicant while sending a refusal email. Recruiters can now complete the refusal process normally, even after the applicant record is archived.
Original PR description
Steps to reproduce: - Open the Recruitment app and select an applicant. - Make sure "Send Email" is active. - Click on "Refuse". - A traceback is raised (ValueError: Expected singleton). Cause: In…
Steps to reproduce: - Open the Recruitment app and select an applicant. - Make sure "Send Email" is active. - Click on "Refuse". - A traceback is raised (ValueError: Expected singleton). Cause: In `action_refuse_reason_apply`, the applicant is archived (`active = False`) before the refusal email is actually sent. When the code proceeds to send the email via `_prepare_send_refusal_mails` in the `applicant.refuse.single` wizard, it accesses the computed `applicant_id` field. Because the applicant is now archived and the compute method reads `self.applicant_ids` without `active_test=False` in the context, it returns an empty recordset. Calling `message_post` on this empty recordset triggers the error. Fix: Pass `active_test=False` in the context when evaluating `self.applicant_ids` inside `_compute_applicant_id` so the wizard can still locate the newly archived applicant. task-6574551 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
This fixes an issue where edited sales order line labels could be lost before the order was saved. Sales teams can now trust that custom product descriptions entered on a quote or order remain in place.
Original PR description
In c5037bb, we introduced the `label` field to display the combination of the product name and description. It is a computed field whose inverse sets `name` based on whether a product is selected on the SOL. In some cases, another onchange can be triggered before the inverse method is called, causing the `label` value to be recomputed and reset. This can happen, for example, when a sale order onchange is triggered before the record is saved. Call `_inverse_label` from the `label` onchange so that changes to `label` immediately update `name` and are not lost by subsequent onchange calls. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#290276
This update standardizes the appearance of several popover panels in Odoo Mail, including avatar cards, recipients, mark-as-done, and activity assignment popovers. Users get a more consistent and polished interface across related communication actions, including in dark mode.
Original PR description
This PR centralize the popover style and apply it to avatar_card, recipients, markasdone and activity assign popover. ## Before: <img width="504" height="242" alt="image" src="https://github.com/user-attachments/assets/a20e20c7-3d1c-4b5e-b9e1-313e71f956c7" /> <img width="623" height="466" alt="image" src="https://github.com/user-attachments/assets/516b08d8-2e4a-4a11-a807-84bbd803bd30" /> ## After: <img width="545" height="202" alt="image" src="https://github.com/user-attachments/assets/2caecb5d-f751-4c29-9d15-998ba0d9fd59" /> <img width="625" height="439" alt="image" src="https://github.com/user-attachments/assets/404de351-e0e1-48be-863f-2e675dd57275" /> Forward-Port-Of: odoo/odoo#290243
Website theme setup now shares whether the selected color palette is dark, allowing theme-specific setup steps to choose page options that match the user's palette. This helps newly configured websites look more consistent with the selected visual style.
Original PR description
Before this commit, a theme post-copy hook could not know whether the palette selected in the configurator was dark. Theme-specific page options could therefore not adapt to the selected palette. After this commit, the configurator passes the palette mode in the theme setup context so theme-specific hooks can use it. Forward-Port-Of: odoo/odoo#290161
Website editing controls and the shop product comparison bar now handle longer translated labels more reliably. This prevents layout issues and missing styling for users working in languages such as German, improving consistency across localized websites.
Original PR description
Steps to reproduce: - Set the user language to German. - Open a color picker with the `Theme` tab in the website editor. - Check the color presets and the reset button. - Open the product comparison bar on the shop page. => Long labels do not fit and some styles are missing. Before this commit, long labels did not fit in the color preset picker. Some CSS selectors also relied on English `title` values, so their styles were not applied in other languages. After this commit, the preset picker adapts to long labels and the CSS selectors use dedicated classes that work in every language. task-6259086 Forward-Port-Of: odoo/odoo#289308 Forward-Port-Of: odoo/odoo#286426
This fixes the loyalty program setup so Buy X Get Y promotions no longer show or allow minimum purchase settings. It prevents users from configuring an option that should not apply to this promotion type, reducing confusion and setup errors.
Original PR description
I think the point was to hide the entire `Minimum Purchase` section when the program type is `buy_x_get_y`, but only the label is hidden. This commit will also hide the div under the label, so no minimum purchase can be set on `buy_x_get_y` programs --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288281
Fixed a visual issue in Sales quotations where the optional products table could appear lighter than its surrounding area in dark mode. This keeps the quotation modal looking consistent and easier to read for users who prefer dark mode.
Original PR description
**Steps to reproduce:** - Set preferences to dark mode - Create a quotation and add a product with optional products (e.g customizable desk) -> Background of optional products is lighter than the…
**Steps to reproduce:** - Set preferences to dark mode - Create a quotation and add a product with optional products (e.g customizable desk) -> Background of optional products is lighter than the surrounding div **Behavior:** The `div` showcasing optional products is set to be a bit darker to add contrast in the modal. In light mode, table's background is transparent, which allows it to adapt to a darker container. However, this is not the case in dark mode, which causes a mismatch between table and div backgrounds. By default `$table-bg` follows `$body-bg`: https://github.com/odoo/odoo/blob/3442814d57cd9420d7dc6d022d15cd5d1b3def74/addons/web/static/lib/bootstrap/scss/_variables.scss#L738-L740 And is later set to transparent here: https://github.com/odoo/odoo/blob/3442814d57cd9420d7dc6d022d15cd5d1b3def74/addons/web/static/src/scss/bootstrap_overridden_frontend.scss#L74-L75 However when darkmode is enabled, `$body-bg` is re-assigned, which forces `$table-bg` back to the default dark color, bypassing the transparent override. https://github.com/odoo/odoo/blob/3442814d57cd9420d7dc6d022d15cd5d1b3def74/addons/web/static/lib/bootstrap/scss/_root.scss#L132-L139 --- This commit ensures that `table-bg` is explicitly set to transparent for tables displaying optional products. opw-6569713 Forward-Port-Of: odoo/odoo#288127
The website setup flow now keeps future-step fields unavailable until users reach the relevant step. This prevents hidden fields from reacting to mouse, keyboard, or screen reader interaction, making the configurator clearer and more accessible.
Original PR description
Steps to reproduce: - Start the website configurator and open the description step. - Before choosing a website type, move the pointer over the area where the industry field will appear. - Navigate with Tab before completing the industry selection. => Hidden fields still react to input and can receive keyboard focus. Before this commit, the industry input and positioning dropdown were transparent until the previous step was complete. They could still react to pointer input and be announced by screen readers. After this commit, these fields stay hidden and unavailable until their respective steps are reached, while keeping their layout space. Forward-Port-Of: odoo/odoo#290297
The Bulgarian SAF-T report will now only be available and automatically installed when the advanced accounting module is installed. This prevents the report from appearing in setups that are not intended to use advanced accounting features.
Original PR description
As the Bulgarian SAF-T Report is destined for advanced accounting, it should only be available and auto-installed when the accountant module is as well. Forward-Port-Of: odoo/enterprise#132731
The working file card in accounting reports now displays its menu button without overlapping the status button when selected. This small visual fix makes the card easier to read and interact with, reducing confusion for users managing audit working files.
Original PR description
Slightly improve the style of the kanban card of the working file to make the 3-dots button not on top of the state button when pressed. Forward-Port-Of: odoo/enterprise#132789
The account return guided test flow has been updated after the removal of a setup wizard. Returns are now generated manually in the test flow, helping keep automated checks aligned with the current product behavior.
Original PR description
With the removal of the configuration wizard, we have to remove those steps in the tours. In consequences, the return generation trigger has been changed, so they need to be manually generated. This commit fix partially the tours in addition to https://github.com/odoo/enterprise/pull/131928/changes which fixes the rest of the flow. Forward-Port-Of: odoo/enterprise#132134
Fixed an issue that could block users from opening the rental order lines schedule after all variants of a rental product were deleted. The schedule now opens safely without trying to preselect a missing product variant, reducing disruption for rental workflows.
Original PR description
Currently, an error occurs when opening the Rental Order Lines Schedule view. **Steps to Reproduce:** - Install the `sale_stock_renting` module. - Go to `Settings` and enable `Variants`. - Go to…
Currently, an error occurs when opening the Rental Order Lines Schedule view. **Steps to Reproduce:** - Install the `sale_stock_renting` module. - Go to `Settings` and enable `Variants`. - Go to `Rental` > `Products` and create a product. - In the `Attributes & Variants` tab, add an attribute with two values and save. - Delete all variants using the `Variants` smart button or from `Inventory` > `Products` > `Product Variants`. - Return to the `Product` and click the `In Renting smart button`. `IndexError: list index out of range` When a product template is created, a product variant is automatically generated if the product has no attributes. Deleting this variant also deletes the product template [1]. By explicitly creating attribute values, a dynamic product variant is generated. Deleting this variant does not delete the product template because of the dynamic attribute [2]. When the In Renting button is clicked, it it going to open the rental order lines Schedule view and adds default_product_id to the action context. Since no product variants exist anymore, accessing the default product variant raises an error [3]. This commit ensures that default_product_id is not added to the context when the product template has no product variants [1]: https://github.com/odoo/odoo/blob/1f70b81eeebcc62b64c18772915e2f4696e189e7/addons/product/models/product_product.py#L486 [2]: https://github.com/odoo/odoo/blob/1f70b81eeebcc62b64c18772915e2f4696e189e7/addons/product/models/product_product.py#L478-L480 [3]- https://github.com/odoo/enterprise/blob/98ec35f3f17a2b706ad4fcc4d6161d12d05eadfd/sale_renting/models/product_product.py#L69 [4]: https://github.com/odoo/odoo/blob/942d3892c33e7ccdcfec260c3da37095069b699e/addons/stock/models/product.py#L635-L643 [5]: https://github.com/odoo/odoo/blob/942d3892c33e7ccdcfec260c3da37095069b699e/addons/stock/models/product.py#L601-L612 sentry-7637715724 Forward-Port-Of: odoo/enterprise#132650 Forward-Port-Of: odoo/enterprise#126356
The Australian payroll onboarding process now correctly accepts bank details when a BSB and bank name are provided, even if the BIC field is empty. This prevents users from seeing an incorrect warning after entering valid local bank information.
Original PR description
Bug reproduction: 1 - Install l10n_au_hr_payroll_api, settings→payroll→AU localization 2 - Start payroll onboarding `2.1 - Next step→fill in BSB and keep BIC empty→Set Bank details` 3 - No BSB or bank set warning continues to appear Bug cause: 1 - For that warning, there is check that checks bic (to not keep empty) Bug solution: 1 - bic check is removed and bank name check is added task-6540863 Forward-Port-Of: odoo/enterprise#131463 Forward-Port-Of: odoo/enterprise#130792
The payroll salary test was updated to match current behavior after a removed benefit allocation feature, a display change, and a corrected public transport value. This helps keep automated checks reliable and reduces false failures in payroll-related validation.
Original PR description
Error 1:
Drop the automatic extra legal allocation 's test: this feature was remove
in this task 5362345; but the test was not removed
Error 2:
Due to some UX change the IP display change and the test was not up-to-date
Error 3:
Due to a misconfiguration the public transport value was wrong.
runbot_error-242808
Forward-Port-Of: odoo/enterprise#132227
Forward-Port-Of: odoo/enterprise#131958Fixed an issue where Payroll dashboard warning cards stayed visible after users chose "Never show it again" until the page was refreshed. Dismissed warnings now update immediately on screen, reducing confusion for payroll users.
Original PR description
Bug reproduction: - Versions 20.0 and above - Go to the Payroll dashboard - Hover a warning card - click the cross confirm with "Never show it again" - The card stays on screen until the page is…
Bug reproduction: - Versions 20.0 and above - Go to the Payroll dashboard - Hover a warning card - click the cross confirm with "Never show it again" - The card stays on screen until the page is refreshed Bug cause: Dismissing a warning no longer soft reloads the dashboard: the dialog calls the `onDismiss` callback given by the dashboard, which fades the matching cards out and refreshes the cached warnings. However, `onDismiss` was never declared in the props of ArchiveWarningDialog. This was harmless with `static props`, as `this.props` was the object passed by the parent, but since the conversion to `useProps`, `this.props` only holds the declared keys. The callback silently resolved to `undefined`, so the record was archived server side but nothing was dispatched client side. - conversions of props in below PR: -- https://github.com/odoo/enterprise/pull/131078 Bug solution: - Declare the onDismiss props so the dismissal is dispatched again. task-6585492 Forward-Port-Of: odoo/enterprise#132218
This fix ensures payroll accounting entries that have already been posted are handled with the appropriate reduced access rights. It helps keep payroll accounting processes reliable while avoiding unnecessary elevated permissions after entries are finalized.
Original PR description
Forward-Port-Of: odoo/enterprise#132827 Forward-Port-Of: odoo/enterprise#132624
This fixes an issue where the website builder view could unexpectedly shift when a chat message was sent while editing a partially visible element. The change keeps the editing overlay aligned and prevents empty space from appearing, making website editing more stable.
Original PR description
The builder could shift upward when sending a chat message while a partially visible element was selected. The selection overlay can extend beyond the visible area, causing the builder layout to become programmatically scrollable. When the chat calls `scrollIntoView`, the parent layout is also scrolled, while the preview frame remains unchanged, causing the overlay to become misaligned and leaving empty space. Use `overflow: clip` instead of `overflow: hidden` on the builder layout container. This keeps the existing clipping behavior while preventing programmatic scrolling caused by the overlay's overflow. The fix is applied in the website module layout since the issue is caused by the builder container being scrollable, rather than by the chat itself. task-6229153
The Live Chat channel card layout was adjusted so the Join or Leave button stays clear of the three-dot card menu. This prevents visual overlap when users hover over a card, making the action button easier to read and use.
Original PR description
The three-dot menu of a kanban card sits in its top-right corner, where the Join/Leave button of a Live Chat channel also sits. Hovering the card brought the menu over the right edge of the button. This commit widens the padding of the button column from pe-1 to pe-4 to avoid this overlap. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where links that were made bold by a stylesheet could not be changed back to normal text in the editor. Business users editing email or website content can now reliably adjust link formatting without needing technical help.
Original PR description
Problem: Links with `font-weight: bold !important` from a CSS stylesheet cannot be unbolded from the editor. Cause: After `2028bc00f177d3fcb1e1dc6304153f9ebe0a523a`, applying a style to a link always wraps it in a `span`. When the link itself has a `font-weight: bold !important` rule, the style on the `span` cannot override it. Solution: Apply the style directly to the link, or more generally to any unsplittable element, so the new style can override the existing CSS. Steps to reproduce: - Open a new Email Marketing. - Select the "Welcome Message" template. - Add a link and observe that it is bold by default. - Try to unbold the link. - Observe that nothing happens. task-xxxx --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#289922