Thursday, October 16, 2025
18 changes · 19.0
Enhancements to existing features
This update removes duplicate website height styling rules that were already maintained elsewhere in Odoo. It reduces maintenance overhead and helps keep website layouts consistent across modules without changing business workflows.
Original PR description
Remove redundant `o_full_screen_height` and related height utility classes from the website SCSS, as they are already defined in `web_editor` SCSS. This cleanup avoids duplication and ensures consistent styling across modules. task-[5123275](https://www.odoo.com/odoo/project/974/tasks/5123275)
This update fine-tunes point-of-sale checks around preparation warning dialogs and simplifies how the partner button styling is handled. It helps keep POS workflows and automated validations more reliable without changing day-to-day business processes.
Original PR description
*: pos_restaurant_preparation_display, l10n_de_pos_res_cert, pos_settle_due This commit makes the following improvements: Adjusts the `discardOrderWarningDialog` tour step to check on the Product screen. Refactors the partner button class to use a getter instead of XML inheritance. Task-5116688
Resolved issues and error corrections
This fixes an issue where certain many-to-many field values could fail to load when access bypass rules were configured. The change restores the intended behavior so authorized business workflows can read related records without unnecessary access errors.
Original PR description
Recently, we have changed how Many2many fields are read. Before we used `_apply_ir_rules` to give `read` access to comodels, now we're using `_search` directly. We have `bypass_search_access` to bypass access checks, but it's not handled when we do a `_search` from the `read` method. This commit allows bypassing access checks for the Many2many field, where `bypass_search_access` is True. Ref: https://github.com/odoo/odoo/commit/9a21edd99e7f50a785b8b7720f55654254d5f481 , https://github.com/odoo/odoo/pull/217277 Task-5081728
Documentation and clarification updates
This pull request adds a contributor license agreement record for arch-fan. It is an administrative legal update that enables their contributions to be accepted under the project's contribution rules, with no functional impact on Odoo users.
Original PR description
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
Failed email notifications for accounting journal aliases now use the company linked to that journal instead of defaulting to the main company. This prevents customers or senders from receiving bounce messages with the wrong company name or contact email in multi-company setups.
Original PR description
A bounce email was introduced in https://github.com/odoo/odoo/pull/168506 , i.e. if an email without an attachment is sent to an incoming email alias for a journal, it will be bounced with an…
A bounce email was introduced in https://github.com/odoo/odoo/pull/168506 , i.e. if an email without an attachment is sent to an incoming email alias for a journal, it will be bounced with an corresponding email template. But as is, the usage of `'company_email': self.env.company.email` and `'company_name': self.env.company.name` will default to the "main" company (id 1 usually), as during the message routing, that will be the default company in `env`. This means, that if you have an journal email alias in company B, the email will still render the information of the main company A. ## Proposed fix: When a journal email alias is created in a standard way, it should have a key:value pair for 'company_id' in the `alias_defaults` field. We change the routing check logic so that it will try to fetch that value, while defaulting to the main company if there is no explicit company `company_id` key. This should ensure that the mail gateway failed email renders preferentially renders the company information of the company the mail alias (and accounting journal) belongs to. OPW-5132806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231436
This fixes an issue in Odoo Studio where creating a related monetary field on the same model could cause a crash. Users can now complete this field setup normally, improving reliability when customizing forms and models.
Original PR description
In studio, add a related field to a monetary on the current model (ie without dotnames) Before this commit, it crashed. This because of c57c247490f0f58c8746af47ce035c28137faf97 After this commit, the flow works as expected opw-5147572 Forward-Port-Of: odoo/enterprise#97214
Restaurant point-of-sale orders now keep combo meals together when staff move items between courses. This prevents part of a combo from being left behind, reducing order mistakes and improving service flow.
Original PR description
Steps to reproduce: ------------------------- - Install POS restaurant & create order with multiple courses - Add a combo product in one of the course - Select a combo child line and try to transfer course Issue: ------- - Only the selected child line is transferred to the new course instead of the entire combo. Cause: --------- - The system currently transfers only the selected order line without checking whether it belongs to a combo. Fix: ---- - Updated the logic to check if the selected order line is part of a combo. If so, the entire combo (parent and child lines) will now be moved to the new course together. task: 5005141 Forward-Port-Of: odoo/odoo#222423
This update makes web editor testing more reliable by explicitly setting a border color instead of relying on environment defaults. It helps avoid inconsistent automated build failures, improving confidence in release checks without changing user-facing behavior.
Original PR description
Problem: Runbot build fails due to different resulting `border-color` values. Cause: The default `border-color` can change depending on the environment, leading to non-deterministic behavior. Solution: Specify the `border-color` explicitly to ensure consistent results. runbot-233297 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231716 Forward-Port-Of: odoo/odoo#231003
This update prevents the editor from creating invalid page structure when users change the style of text inside certain formatted elements. It helps ensure edited website content remains consistent and displays as expected across browsers.
Original PR description
Before this commit we would insert a block inside of a phrasing content if it's displayed as a block. For example, if we tried to modify text inside of a `<small>` that has `display: block` style, it would insert a new block inside of it. Steps to see the issue: - Have an open editor with `<small>Text</small>` content, that has `display: block` style - Select "Text" and change the font style to paragraph => It will be `<small><p>Text</p></small>` which is not valid HTML, and it will be parsed by a browser as `<small></small><p>Text</p>`, which is not the expected behavior. X-original-commit: 4e6df797f152e473d76e6d60ba31da52123cabd3
Project portal users can now navigate back more easily from the shared project Gantt view. This fixes a navigation gap and makes the project sharing experience smoother for external users.
Original PR description
Currently, project portal users cannot easily navigate back from the project portal view.This commit adds a back button in the gantt view of project sharing to improve navigation. Also, the project sharing gantt view is added in this commit- https://github.com/odoo/enterprise/pull/80545/commits/daaea2742a9ee786045ea805941eb3e8374c99d1 task: 5075423
Clicking the AI icon on blog records no longer triggers an error when activity tracking is unavailable. This improves reliability for website blog users by letting the AI panel open normally instead of blocking the workflow.
Original PR description
Currently, an error occurs when the user clicks on the AI icon at the top. Steps to Reproduce: - Install the `website_blog` module. - Go to `Website > Configuration > Blog > Blogs`. - Open any `blog`…
Currently, an error occurs when the user clicks on the AI icon at the top. Steps to Reproduce: - Install the `website_blog` module. - Go to `Website > Configuration > Blog > Blogs`. - Open any `blog` and click the `AI icon` at the top. `AttributeError: 'blog.blog' object has no attribute 'activity_ids'` This error occurs after [this commit]. When the user clicks the AI icon, it attempts to create an AI channel and fetch planned activities if any exist. However, the blog.blog model does not have the activity_ids attribute because it does not inherit from mail.activity.mixin. As a result, the error is raised [1]. This commit ensures that the system only checks for activities if the record has the activity_ids attribute; otherwise, it returns empty data, indicating no activities found. [1]- https://github.com/odoo/enterprise/blob/64fa9e46f6195bd4312130cce33b94a129584523/ai/models/mail_thread.py#L12 [this commit]: https://github.com/odoo/enterprise/commit/7333dc779c75479c708edb7ecd1c0a0d4d2ae619 sentry-6942245851
Live Chat no longer offers the option to create a new user directly from the agent selection list. This avoids a confusing failed save caused by missing required information and keeps agent management on the intended user setup flow.
Original PR description
**Steps to reproduce:** Go to 'Live Chat' Open the live chat channel form view by clicking on the hamburger icon Click 'Add a line' to add another agent A popup with live chat users will appear Click 'New' at the bottom to create the new user A simplified form view will open to create a user Fill in all the details and click 'Save & Close' **Current behavior before PR:** A banner appears with the message 'Missing required fields'. This occurs because the 'partner_id' field, which is required, is included in the agent list view but not in the user creation form. As a result, the user creation process cannot be completed. **Desired behavior after PR is merged:** It will no longer be possible to create a new user from the agent list view. task-5172541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Romanian eTransport exports now use the EU VAT-standard country code for Greece, sending "EL" instead of "GR" where required. This helps avoid validation errors when submitting transport documents and keeps partner and transporter data consistent.
Original PR description
Added a mapping for EU VAT country codes to ensure that the VAT prefix aligns with EU standards (e.g., 'GR' -> 'EL') in EDI exports. ## Description of the issue/feature this PR addresses: This PR…
Added a mapping for EU VAT country codes to ensure that the VAT prefix aligns with EU standards (e.g., 'GR' -> 'EL') in EDI exports. ## Description of the issue/feature this PR addresses: This PR adds country code mapping functionality to ensure compatibility with the format required by the Romanian eTransport system. Specifically, it adds the conversion of the country code "GR" (Greece) to "EL" according to European VAT standards and applies this mapping to relevant fields in transport documents. ## Current behavior before PR: Before this PR, the country code for Greece was sent as "GR" to the eTransport system, which could cause validation errors because in European VAT systems, Greece is identified by the code "EL". Also, there was no consistent mapping for country codes in different parts of the system. ## Desired behavior after PR is merged: After implementing this PR, country codes will be correctly mapped to comply with European VAT standards, especially the conversion of "GR" to "EL" for Greece. This ensures that documents sent through eTransport contain the correct country codes and will pass system validations. The mapping is applied to country codes for both commercial partners and transporters. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#216122 Forward-Port-Of: odoo/odoo#214621
This fixes an internal calculation issue in accounting reports that could use the wrong record context. It helps ensure report values are computed consistently and reduces the risk of incorrect financial reporting behavior.
Original PR description
Forward-Port-Of: odoo/enterprise#97144
Annual Statements now correctly includes localized report variants even when those variants are made up of multiple report sections. This prevents errors during setup or upgrades and helps ensure local financial statement layouts are applied automatically as intended.
Original PR description
The "Annual Statements" report comes with additional code at create() and write() of account.report, so that any new localized variant of the Balance Sheet, Trial Balance or Profit & Loss will automatically replace its root report in the Annual Statements report's sections. The idea behind that is to "magically" replace those generic reports by the right variant when it's created. The problem with that came when you tried adding a variant to one of those reports that was itself a composite report. In such case, you got a traceback stating a composite report's sections could not have sections themselves. We indeed only support one level of hierarchy for composite reports. We solve the issue by adding all the sections of such composite variant to the Annual Statements instead of adding the variant itself. Bug originally reported by Upgrade, here https://github.com/odoo/upgrade/pull/8571 . Forward-Port-Of: odoo/enterprise#97145
The Discuss app header now lines up more cleanly with message avatars and the composer on screens below extra-large size. This removes a cramped visual mismatch near the sidebar, making conversations easier and more comfortable to scan.
Original PR description
Before this commit, The header of the Discuss app had the avatar too close to the sidebar of Discuss app, which looked off and also makes it misaligned with avatars in message list and composer. This comes from a specific style to reduce initial padding below large screen, which was mismatched between discuss header and other items in message list. The intended design was to have enough space between discuss sidebar and message list so that this doesn't feel too crowded and fatiguing to see. This was an issue in the past, but now Discuss app is visually fine even with reduced spacing in large screen. This commit removes all the large-screen specific extra spacing, which fixes the issue as it's easier to match the spacing between all of them. <img width="775" height="908" alt="Screenshot 2025-10-15 at 12 55 06" src="https://github.com/user-attachments/assets/2dedd04d-3949-4586-9325-844313476194" />
Receipts now show the correct original unit price before discounts for Belgian POS Blackbox sales lines. This helps customers and staff see accurate discount information on receipts, reducing confusion at checkout.
Original PR description
Use dedicated method `getUnitDisplayPriceBeforeDiscount()` to display the line old (before discount) unit price on the receipt. task-id: 5011427
This pull request records that the contributor arch-fan has signed Odoo's Contributor License Agreement. This is an administrative legal update that enables their contributions to be accepted under the project's contribution rules.
Original PR description
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