Thursday, December 18, 2025
31 changes · master
Resolved issues and error corrections
User permission group labels now consistently appear in the language currently selected by the user. This prevents confusing mixed-language displays when switching languages or creating users from templates.
Original PR description
## Before this commit: When opening the user's form view, the group hierarchy is loaded using the context's language, and cached. However, switching language or creating a new user (which copies the portal template user) could result in the group hierarchy being displayed in the wrong language. This occurs because the cache does not account for the language changes. ## After this commit: Make the cache language-dependent to ensure group names and translated fields are always displayed in the user's current language. Also remove the unnecessary copy of the `view_group_hierarchy` field. Forward-Port-Of: odoo/odoo#240135 Forward-Port-Of: odoo/odoo#236767
This change rolls back a recent adjustment that added extra spacing around popovers because it caused unexpected display issues. Popovers should now appear in their previous positions, reducing layout surprises for users across the web interface.
Original PR description
This commit reverts changes made in https://github.com/odoo/odoo/pull/236503/commits/c400a5299f0dd9215bb29acc1a3e82cdc166d9a6 because it had too many unwanted side effects (see task-5413492 for example). Forward-Port-Of: odoo/odoo#240199
Fixed an issue where invoice PDFs could show a product name and its description on the same line when the sales order was created from a quotation template. This improves invoice readability and keeps template-based sales documents consistent with standard sales orders.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale…
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. `_get_journal_items_full_name` is used to enforce the product name in the description. However, in cases where product name doesn't exist in the description, e.g. our case here, the name and description will be shown in the same line in the invoice pdf. This can be fixed by adding a new line between the name and the description. read: #235122 opw-5130171 Forward-Port-Of: odoo/odoo#240177 Forward-Port-Of: odoo/odoo#237110
Fixed a visual issue in the HTML editor where toggle lists placed inside banners could appear misaligned. This makes banner content more polished and consistent, including when working with right-to-left text direction.
Original PR description
**Steps to reproduce:** - Create a banner. - Create a toggle list inside the banner. - Notice that the content inside the toggle list is not properly aligned. **Description of the issue:** - This happens because a margin-bottom is applied to all last `o-paragraph` elements inside the `o_editor_banner class`. Since the toggle list also contains `o-paragraph` elements that are the last child within it, the margin-bottom style is incorrectly applied to those as well. **Solution:** - Apply the margin-bottom only to the last direct child of `.o_editor_banner_content`. task-5213985 Forward-Port-Of: odoo/odoo#237929 Forward-Port-Of: odoo/odoo#233709
This fixes an error that could occur when users marked messages as read from the sidebar. The change ensures the mail app uses the right conversation context, preventing interruptions during routine inbox cleanup.
Original PR description
Purpose of this commit, When executing mark as read action from the sidebar actions, it throws a traceback due to absence of the thread as it is now moved into channel. This commit adds the missing channel to the callback. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents the editing toolbar from appearing when a user simply places the cursor after an image. It reduces visual clutter and avoids suggesting image-editing actions when no image is actively selected.
Original PR description
Description of the issue this PR addresses: Current behavior before PR: The toolbar was shown when the cursor (collapsed selection) was positioned after an image. Desired behavior after PR is merged: A collapsed selection placed after an image no longer displays the toolbar. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239572
The French time-off localization no longer repeats the country setting because it is already defined by the main French localization module. This prevents duplicate configuration and keeps module setup cleaner without changing day-to-day user workflows.
Original PR description
Country is removed from l10n_fr_hr_holidays since l10n_fr has country declared in its manifest. task-5408245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website editor now shows only the reorder arrow that can actually be used when editing newsletter popup blocks. This avoids confusing inactive controls and lets users move the block in the expected direction with a single click.
Original PR description
**Issue:** When editing a newsletter popup snippet, users could see both up and down reorder arrows, even when only one The direction made sense. Clicking the move up arrow did nothing, and moving the block down required clicking the move down arrow twice, which felt unresponsive. **Steps to reproduce the issue:** 1. Drag and drop a newsletter popup snippet 2. Click on the blank region above the center text in the snippet 3. You will see both up and down reorder arrows; nothing will happen on clicking the up arrow 4. You need to click on the down arrow twice to move the block down. **Fix:** Now, only the valid reorder arrow (up or down) is shown based on the block's position. Movement works as expected with a single click. task-[5016731](https://www.odoo.com/odoo/project/974/tasks/5016731) Forward-Port-Of: odoo/odoo#240119 Forward-Port-Of: odoo/odoo#221390
Fixes an issue in the website HTML editor where buttons could disappear when users edited their label after applying an animation. This keeps animated buttons editable and prevents accidental content loss during page design.
Original PR description
Problem: When adding an animation to a button and then trying to edit its label, the button disappears. Cause: Because of the animation effect, while editing, the button is in its initial `invisible` animation state. In that state, `innerText` always returns an empty string because it checks only the visible content of the element. Solution: Use `textContent` instead, which does not depend on element visibility. Steps to reproduce: - Open Website. - Drop any text snippet. - Add a button. - Add an animation to the button. - Edit the button label. - The button disappears. opw-5391115 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239065
Users can now open Adjust Valuation for inventory moves with zero quantity without encountering an error. This prevents a crash in stock valuation workflows and keeps inventory review actions usable in edge cases.
Original PR description
Currently, an error occurs when a user clicks on the Adjust Valuation button. Steps to Reproduce: - Install the `stock_account` module. - Go to `Receipts` and create a `receipt` by adding a product…
Currently, an error occurs when a user clicks on the Adjust Valuation button. Steps to Reproduce: - Install the `stock_account` module. - Go to `Receipts` and create a `receipt` by adding a product with `zero demand`. - Go to `Moves Analysis` > switch to `Kanban view` and remove the `Done filter`. - Click on the `selected product move` > click the `gear icon` > click `Adjust Valuation`. `ZeroDivisionError: float division by zero.` After [this commit], when the user clicks on the Adjust Valuation button, the compute method runs to compute the current value details. When it tries to calculate the unit price based on the move quantity and value, and the quantity is zero, it raises the error[1]. This commit ensures that if the move quantity is 0, then the unit price for the current value details is also set to 0. [this commit]: https://github.com/odoo/odoo/pull/224033/commits/e9e7a1ff63f5ee1f54d21b1768abb93a121a7a92#diff-2623d0e4c393b65afe1c6d00f55af80d19f022aaeb0da0e5e173e37a84138159R47-R57 [1]- https://github.com/odoo/odoo/blob/0581b7fb6abc8e856cedf13254ba1f9d362d6d34/addons/stock_account/models/product_value.py#L59 sentry-7059220177 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237095
Users now receive an explanation when a timesheet entry cannot be created from the calendar, such as when selecting a weekend with no scheduled shift. This prevents confusion by making it clear why no timesheet was added.
Original PR description
Steps to reproduce: - Open Timesheets and navigate to calendar mode (My Timesheets). - Click on weekend cell and no shift is created and no notification or explanation is given Issue: - No issue explanation why timesheets were not created. Fix: - Check if we have skipped creating record because we have no timesheets and raise the notification accordingly task-5076642 Forward-Port-Of: odoo/odoo#240049 Forward-Port-Of: odoo/odoo#230724
This fix prevents accounting screens from trying to use asset features that are only available in the Enterprise edition. It helps Community edition users avoid unexpected errors when asset management is not installed.
Original PR description
Move the asset display computation behind a dedicated helper method to avoid directly accessing `asset_model_ids` from Community code. The default Community implementation returns `False`, ensuring that no asset-related logic is applied when the Enterprise `account_asset` module is not installed and preventing tracebacks.
Closing a chat window now properly saves the chat area state, helping users keep their messaging layout consistent between actions. This fixes a small reliability issue in the Mail app so recent chat window changes are not unexpectedly lost.
Original PR description
`notifyState` means save ChatHub state. It's not clear why closing a chat window through this method should not save the state. The method is mainly here to be a wrapper to wait `chatHub.initPromise`.
This update fixes how live chat tracks typing activity for channel members. It helps ensure chat conversations show participant activity more reliably, reducing confusion for support agents and visitors.
This fix prevents repeated error messages from appearing on the IoT Box screen during startup. It disables an unnecessary first-boot password prompt service that does not work correctly in this environment, improving the visible boot experience and resilience if related startup services fail.
Original PR description
Before this commit, when the IoT box boots, just before the GUI starts an error message can be seen several times in the top left corner of the screen. This error was caused by the `userconfig.service`, which is enabled by default on the Raspberry Pi to prompt you to change the default password on first boot. Due to it not working properly in the ramdisk environment, it didn't prevent booting but did cause the aforementioned error messages. After this commit, we disable the `userconfig.service`, preventing the error message from appearing, and also keeping the system usable even if the ramdisk service fails to start. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes small visual issues in the Discuss sidebar so channel action menus align correctly when items are hovered. This removes an unused typo-based style and improves consistency in the user interface.
Original PR description
`opacity-trigger-hove` has a typo so it is effectively dead code. It doesn't look useful to have either way. mx-1 implies margin end, which is incorrect: when there is no counter on the line that is hovered, this make the more menu not aligned with the rest. <img width="42" height="139" alt="image" src="https://github.com/user-attachments/assets/30d9bd65-bdb1-4243-8a2f-cca5422c46e3" /> -> <img width="83" height="86" alt="image" src="https://github.com/user-attachments/assets/a86ebe68-217b-4997-8f11-ce17f4e8fd71" />
The project dashboard now excludes cancelled supplier credit notes from the vendor bill list, matching the cost totals already shown there. This prevents outdated or voided documents from confusing users reviewing project costs.
Original PR description
**Steps to Reproduce:** 1. Sell a service that creates a project. 2. Create a purchase order and link it to the project’s analytic account. 3. Create a bill for that PO. 4. Create a credit note for the bill and cancel it. 5. Create a second credit note for the same bill. 6. Go to the project dashboard. **Current Behavior:** - The cost section correctly excludes cancelled credit notes. - However, cancelled credit notes still appear in the vendor bill list view on the project dashboard, causing confusion. **Expected Behavior:** - Cancelled credit notes should be excluded from the vendor bill list view on the project dashboard. task-4782222 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed a visual issue in Discuss where some sidebar thread icons, such as the globe icon for public channels, could appear with the wrong styling. This keeps channel lists clearer and more consistent for users navigating conversations.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/240027 PR above introduced a new div without `bg-inherit`, which had the side-effect to not render thread icon in discuss sidebar correctly, such as the globe icon for public channels. Before / After <img width="295" height="1100" alt="Screenshot 2025-12-17 at 15 36 18" src="https://github.com/user-attachments/assets/9028f85b-565b-4d01-94e1-1c0e0f015488" /> <img width="295" height="1100" alt="Screenshot 2025-12-17 at 15 36 12" src="https://github.com/user-attachments/assets/93838a92-bee6-4b61-b450-e9bd535eb222" />
The chat window now correctly shows a visual pulse on the fullscreen button when another call participant has their camera on. This makes it easier for users to notice and switch to fullscreen during video calls, with a smoother and more natural animation.
Original PR description
**Description of the issue this PR addresses:** The pulse effect for the fullscreen mode was not visible in chat window even when another participant’s video camera was on. **Steps to Reproduce:** -…
**Description of the issue this PR addresses:** The pulse effect for the fullscreen mode was not visible in chat window even when another participant’s video camera was on. **Steps to Reproduce:** - Log in with Admin and Demo user - From the Demo side, open the chat window and call Mitchell Admin - Join the call from the Admin side and enable the video camera - Look at the fullscreen option on the Demo side. The pulse effect is not visible. **Current behavior before PR:** Since this https://github.com/odoo/odoo/pull/232493, the thread model no longer had a direct `chat_window` reference, causing a pulse effect issue. **Desired behavior after PR is merged:** This commit ensures that the pulse effect should now be visible on fullscreen mode, when another participant's camera is on. task-[5364914](https://www.odoo.com/odoo/project/1519/tasks/5364914) Before: <img width="336" height="56" alt="image" src="https://github.com/user-attachments/assets/c3b76f15-d07f-4673-b013-68b7a580b3b2" /> After:  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a display issue in the Expenses list view where some styling information was lost, causing columns to size incorrectly. After the change, expense tables preserve the expected layout behavior, making lists easier to read and use.
Original PR description
Before this commit, some classnames set on the list renderer were lost in the expense override. As a consequence, the column width logic couldn't be applied correctly. The widths were computed with a wrong available width (the width of table's parent element, which is the renderer itself). 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#240270
The live chat demo configuration was adjusted so it no longer changes user permissions in a way that made automated checks unreliable. This helps keep live chat behavior and testing consistent across installations with demo data.
Original PR description
The `test_channel_get_livechat_visitor_info` tests what is sent alongside the created live chat when calling `get_session`. When the route is called with an authentified user, it returns whether the user is a live chat manager. This information changes when demo data is installed (live chat manager is added as an implied id of the user group). As a result, this information cannot be hardcoded. The demo data shouldn't add implied ids to the user group. This commit removes it. fixes runbot-234138,234697,234080 Forward-Port-Of: odoo/odoo#240249
This update corrects a formatting error in invoices generated when using quotation templates in sales orders. Previously, the name and description were combined on the invoice PDF. Now, a necessary line break is added to ensure correct invoice presentation, improving clarity for customers.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale…
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. `_get_journal_items_full_name` is used to enforce the product name in the description. However, in cases where product name doesn't exist in the description, e.g. our case here, the name and description will be shown in the same line in the invoice pdf. This can be fixed by adding a new line between the name and the description. opw-5130171 Forward-Port-Of: odoo/enterprise#102208 Forward-Port-Of: odoo/enterprise#100417
This update fixes a bug where the Partena export file incorrectly used the active company's code when generating exports for inactive companies. The change ensures the correct Partena code is included in the file, resolving potential reporting discrepancies. Tests have been added to verify this fix.
Original PR description
### Issue: In multicompany, when we generate the Partena export file of the 'not active' company, the partena code of the active company is inputted in the file. ### Steps to reproduce: - Install…
### Issue: In multicompany, when we generate the Partena export file of the 'not active' company, the partena code of the active company is inputted in the file. ### Steps to reproduce: - Install 'l10n_be_hr_payroll_partena' and switch to a Belgian company - Make sure the company has a "Partena Affiliation Number" - Create an employee for this company, with a "Partena code" - Create a contract for this employee, set it a running - Create a new Belgian company with a different "Partena Affiliation Number" - Activate both Belgian companies, but set the second one as active - Payroll > Reporting > Export work entries to Partena - Create a new one, populate it with the employee just created - Click "Generate Export File" ### Cause: When getting the data for the CSV file, we use `self.env.company` which is the active company. So when this company is not the one of the export record, we input the wrong code values. ### Solution: Use `self.company_id` instead of `self.env.company_id`. Also adds the test class with basic tests. opw-5345786 Forward-Port-Of: odoo/enterprise#102062 Forward-Port-Of: odoo/enterprise#101110
This update ensures that rental orders created from leads automatically include the tags associated with the original lead. Previously, rental orders lacked this functionality due to a slight difference in how context information was passed. This change streamlines the rental order process and maintains consistent tag management across sales and rental transactions.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have a lead with tags; 2. convert lead to rental order. Issue ----- The new rental order has no tags. Cause ----- Tags are added to regular sales orders via the `_prepare_opportunity_quotation_context` method, but rental orders use `_get_action_rental_context` instead, which is virtually identical, but adds the `in_rental_app` context value, and doesn't include `default_tag_ids`. Solution -------- Rather than having duplicate code, make `_get_action_rental_context` retrieve the base context from `_prepare_opportunity_quotation_context`, then adding `in_rental_app=True`. opw-4549941 Forward-Port-Of: odoo/enterprise#102220
This update fixes an issue where invoice reports in the KE company setup were not displaying prices with commas. The fix removes a duplicate XPath and correctly formats the total and taxable amounts, ensuring accurate financial reporting. This improves clarity and compliance for KE-related invoices.
Original PR description
Steps to reproduce: 1. install `l10n_ke` 2. Switch to KE Company 3. Create a product with all KRA eTIMS details set on the Accounting page. 4. Create an invoice to KE Company with that product and set unitprice > 10000 5. Confirm the invoice and send it. Now, see the invoice report Issue: 1. xpath for `td_subtotal` was duplicated 2. The total amount and taxable amount were not formatted as prices (no commas). Before: <img width="771" height="397" alt="image" src="https://github.com/user-attachments/assets/492fe911-18d6-4e01-a16d-d7450c17373f" /> After: <img width="766" height="389" alt="image" src="https://github.com/user-attachments/assets/bbe5d4e2-b337-445c-833a-06492a8c827d" /> Solution: Updated the invoice report to: - Remove the duplicated `td_subtotal` xpath. - Properly format the total and taxable amounts with `t-options`. opw-5341578 Forward-Port-Of: odoo/enterprise#101794 Forward-Port-Of: odoo/enterprise#100279
This update fixes a technical issue that could cause website errors during event ticket payments when using rentable tickets. The change improves error handling to prevent these tracebacks from appearing to users, ensuring a smoother payment experience. While the rentable ticket feature itself is being addressed, this fix focuses on stabilizing the payment process.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have `website_event_sale` but not `stock` installed; 2. create an event with a ticket; 3. make the ticket's product rentable; 4. change ticket's product type to Goods; 5. publish the event to website; 6. register for the event via website; 7. go to payment. Issue ----- AttributeError: 'bool' object has no attribute 'tzinfo' Cause ----- Having odd configurations like rentable tickets creates rental orders without rental dates, leading to unhandled errors. Solution -------- While rentable event tickets doesn't make enough sense to make it work, we can still improve the error handling to prevent showing tracebacks to the client. opw-5207045 Forward-Port-Of: odoo/enterprise#101936 Forward-Port-Of: odoo/enterprise#99000
This update streamlines the live chat closing process within the AI Website module. The change ensures a cleaner and more reliable way to close live chat sessions, reducing potential disruptions for users. This improves the overall user experience and efficiency of the AI-powered website.
This update resolves an issue where the tax return calendar view in Odoo Enterprise was confusing users. The fix replaces the calendar view with a more intuitive Kanban view for tax returns, streamlining the process for users to manage their returns. This ensures a clearer and more efficient user experience.
Original PR description
Steps to reproduce: - Go to Accounting/tax return - Set the opening date - Open the Calendar view - Open one tax return -> The view is a default form view provided by the framework Solution: Open instead the kanban view of return checks (which for the user seems like the form view of the return). task-5392552
Previously, users couldn't change the name of the 'Help' menu item in the Helpdesk, encountering an error. This update allows users to rename the menu item, resolving this restriction and providing greater flexibility within the Helpdesk feature. This change improves usability and simplifies management.
Original PR description
**Issue** It was not possible to rename the "Help" menu item, an error appeared with the message: "This URL is reserved for the helpdesk teams with 'website form' feature enabled.", even if the user was not trying to edit the URL. **Change** Allow the user to edit the menu item's name. opw-5375334 Forward-Port-Of: odoo/enterprise#102175 Forward-Port-Of: odoo/enterprise#101323
This update resolves an issue where archived employees were still appearing in the timesheet section of helpdesk tickets. The fix ensures that only active employees are displayed, improving data accuracy and preventing confusion when managing timesheets.
Original PR description
**Steps to Reproduce:** - Install hekpdesk_timesheet. - Go to settings, enable timesheets - Archive an employee. - In a ticket, try to add a timesheet entry. **Isuue:** Archived employees are also appearing under timesheets tab. **Fix:** Passed a context so that only active employees appear in the selection. task-5078763 Forward-Port-Of: odoo/enterprise#95137
This update fixes an issue where product documents would stop appearing on product pages after a document version was updated. The fix ensures that the product document record is correctly linked to the latest document version, maintaining accurate product information. This improves the consistency of product data.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041 Forward-Port-Of: odoo/enterprise#99226