Thursday, October 16, 2025
19 changes · saas-18.3
Resolved issues and error corrections
Portal users working on shared projects will no longer see a chat expand option that could not work in that environment. This prevents an error when opening tasks through project sharing and keeps the experience focused on supported chat actions.
Original PR description
Steps to reproduce: === - Create a project. - Share the project with access to edit rights to the portal user. - Log in as the portal user. - Open the shared project and then open a task. - Click on the expand button in the chat. Issue: === A traceback occurs when trying to expand the chatter in a project sharing task. Cause: === `inFrontendPortalChatter` not being set in `useSubEnv` is the reason for button appearance, and we don't have the necessary composer for it to render in the project sharing bundle. Fix: === Define missing `inFrontendPortalChatter` to hide the expand chatter composer action as it was not meant to be available in the portal/front-end. task-5049129 Forward-Port-Of: odoo/odoo#231360
Accounting bounce emails for journal aliases now use the company linked to the alias instead of defaulting to the main company. This prevents customers or senders from receiving failed-email notices with the wrong company name or email address 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 that prevented certain related list-style fields from being created when no matching inverse link exists on the current model. It helps administrators and implementers configure data relationships more reliably without hitting an unnecessary technical restriction.
Original PR description
…n_field Before this commit, it was not possible to create a related one2many without a relation_field (inverse) However, the relation_field of a relation cannot be the one of the original field (because it doesn't exist on the current model) After this commit, this flow works. opw-5155440 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#231434 Forward-Port-Of: odoo/odoo#231187
This fix prevents Odoo Studio from saving an invalid link when users create a related field based on partner child contacts from a sales order. It avoids crashes during later field updates, making Studio customizations more reliable.
Original PR description
On sale order, create a related field to res_partner.child_ids Before this commit, the related field is not stored but has a relation_field to parent_id (res.partner) During an onchange (outside of studio), this will crash. After this commit, we unset relation_field in this case as it doesn't make sense (the relation_field should reference a res.partner field, not a field presetn in the current model) opw-5155440 Forward-Port-Of: odoo/enterprise#97107 Forward-Port-Of: odoo/enterprise#96950
Odoo now prevents users from saving a Next Check Number that is too large for the system to store. Instead of a technical RPC/database error, users receive a clear validation message, improving usability in bank journal configuration.
Original PR description
**Issue** When trying to set a very large value as *Next Check Number* in a Bank Journal, Odoo raises a low-level `RPC_ERROR` caused by a PostgreSQL `integer out of range` error. This results in a technical traceback instead of a clear message to the user. **Steps to Reproduce** 1. Go to *Accounting > Configuration > Journals* 2. Open the Bank Journal 3. Go to the *Outgoing Payments* tab 4. Enable *Manual Numbering* 5. Set *Next Check Number* to `2147483648` **Root Cause** The field `ir.sequence.number_next` is stored as an integer in the ORM. Any value greater than `2,147,483,647` (max signed 32-bit integer) causes PostgreSQL to raise an overflow error when saving. Since the error occurs deep in the ORM write call, the user only sees a generic RPC error without explanation. Opw-5042096 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225103
Fixes an issue where the import screen could crash when a model offered more than one sample import template. Users can now reliably choose from multiple import templates, with cleaner button spacing for a better experience.
Original PR description
Import templates are defined on models to allow developpers to provide
sample import files to users. These templates are fetched by the client
as an array of objects of the form {label: string, template: string},
where label is the label to display and template the URL of the file.
The iteration on `importTemplates` goes through this list, and if more
than one element is present in it, the t-key for both elements will be
the same (`[[object Object]]`), leading to a crash of the client
action's template.
This commit uses the 'template' url as the key, as it should be unique
(the label is less trustworthy, as it is translatable).
It also slightly changes the styling, as having an mb32 between multiple
buttons looked rather bad.
Forward-Port-Of: odoo/odoo#231521
Forward-Port-Of: odoo/odoo#231407A problem in account reporting calculations was corrected to ensure the right records are used during processing. This helps prevent incorrect or inconsistent report behavior for finance users.
Original PR description
Forward-Port-Of: odoo/enterprise#97144
This fix prevents an internal placeholder record from being used when opening Studio from the preparation activity display. It helps avoid a runbot error and improves reliability for users customizing or accessing this point of-sale preparation screen.
Original PR description
This commit prevents a NewId to be used in a domain when opening studio from the activity display. runbot error #233396
This update fixes a timing issue in Discuss calls that could cause an error when handling a peer-to-peer call offer. It improves call reliability by ensuring delayed offer handling does not use outdated connection information.
Original PR description
Before this commit, since https://github.com/odoo/odoo/pull/205198, the handling of an offer can be arbitrarily delayed by the `acceptOffer` callback. This could lead to a traceback when the reference to `peer` is stale by the time the event is handled. Forward-Port-Of: odoo/odoo#231620
This fixes an error that could prevent employees from creating their first timesheet when they did not have access to the company’s internal project. The system now avoids selecting a restricted project by default, allowing timesheet entry to proceed normally.
Original PR description
To reproduce: ============= - make the internal project of the company for invited internal users only - with internal user that doesn't have access to the internal project, and no previous timesheet created, try to create a timesheet - you get a traceback Problem: ======== when not having a previous timesheet, in the default value we set project_id based on the internal project of the company. But if the user doesn't have access to this project, it raises an access error. Solution: ========= check if the user has access to the internal project of the company, if not, use `False` as default value. opw-5119839 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229818
The website setup flow now shows a fullscreen loading screen when users click to view more themes. This prevents users from accidentally selecting an existing theme while additional theme options are still loading, making setup more reliable.
Original PR description
Steps to reproduce: 1. Create a new website and proceed to the theme configuration step. 2. Click on View More Themes. -> You’ll notice a loading effect on the button, but the existing themes remain selectable. Before this commit: Users could still select existing themes while additional themes were being loaded. After this commit: A fullscreen loader is displayed while loading more themes via the View More Themes button, preventing any unintended interactions. task-4661292 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#230557
Romanian eTransport exports now use the EU VAT-standard country code for Greece, changing it from GR to EL where required. This helps avoid validation errors when sending transport documents and keeps partner and transporter country 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
Website form fields now keep their spacing offset when display settings such as label position or descriptions are previewed or changed. This prevents users from having to reapply layout spacing after simple customization actions in the website editor.
Original PR description
Before this commit, changing display parameters of a field (label position, description, etc.) would remove the offset already added. It would require to add them again if a change was made on the display, even if the mouse just hovered the buttons. This commit solves the issue. Steps to reproduce the bug: - Add a form snippet - Add an offset to a field - In the snippet customization, hover over the label position (The offset was removed for good) task-3675509 Forward-Port-Of: odoo/odoo#231297 Forward-Port-Of: odoo/odoo#181344
The website SEO Auto-Fill action no longer crashes on system pages such as login, signup, password reset, and donation payment pages. This lets website managers use SEO optimization tools reliably across these pages without encountering an error.
Original PR description
Steps to Reproduce: 1.Go to the website and open a system page such as: /web/login /web/signup /web/reset_password /donation/pay 2.In the top menu, go to Site → Optimize SEO. 3.Click the Auto-Fill button. 4.Observe that a traceback appears. Before this commit: Clicking the Auto-Fill button caused a traceback error because pageTextContentEl was null due to wrong selector. As a result, getElementsByTagName could not be accessed. In this commit: We provide the correct querySelector value so that pageTextContentEl properly references the intended DOM element. This fix prevents the error and ensures that the SEO Auto-Fill button works correctly, populating all required fields without issue. task-4974618
Fixed an issue where using the keyboard arrows in the Helpdesk knowledge base search suggestions could trigger an error. This keeps customer self-service browsing smoother and prevents users from being interrupted while searching for help articles.
Original PR description
Steps to Reproduce: 1. Navigate to '/helpdesk/customer-care-1/knowledgebase'. 2. Enter any text in the search bar to trigger suggestions. 3. Press the down arrow key twice. 4. A traceback error occurs, indicating an Odoo Client Error. Before this commit, we had a crash when a user types something in a searchbar in the website helpdesk and do keydowns: "Cannot read properties of undefined (reading 'nextElementSibling')" To fix this, we need to add the 'data-bs-toggle' attribute to let BS find it to set '_element' (which must be the previous sibling of the dropdown-menu). This data attribute was probably not set before because in this case the BS dropdown is not used on a button or a link as documented; we use it as an autocomplete functionnality. task-4752497 Forward-Port-Of: odoo/enterprise#97149 Forward-Port-Of: odoo/enterprise#90228
Tooltips in live chat, messaging, point of sale, and emoji picker screens are now included in the normal translation process. This ensures users see helpful hover text in their selected language, improving consistency across localized deployments.
Original PR description
Unless you tell Owl to do so, custom attributes like data-tooltip aren't translated. This commit adds the data-tooltip attribute to the list of translated attributes when missing. *: im_livechat, mail, point_of_sale Forward-Port-Of: odoo/odoo#231541 Forward-Port-Of: odoo/odoo#231006
This fixes employee contract calendars so weekends and public holidays from past, expired contracts are shown again before a current contract starts. It helps HR and payroll users see accurate historical working-time information while still excluding draft contracts that should not be used.
Original PR description
Since changes made in https://github.com/odoo/odoo/pull/212959, we don't see anymore the week-end and banck holidays before the start date of your current contract. As the goal of the initial commit was to prevent to use the contracts in state 'new', we add the contracts 'exppired' that are contracts of the past that really give information of the working hours. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231400
This update ensures accounting localization tests always install the needed demo data before running. It keeps test behavior consistent across versions and reduces the risk of false test failures, with no direct impact on end users.
Original PR description
In later versions, we improve the testing suite to avoid having to install demo data in order to reduce the testing time. In order to keep the testing configuration simple across versions, we force the installation of demo data instead of only asserting that demo is installed before launching the script. Forward-Port-Of: odoo/odoo#231810 Forward-Port-Of: odoo/odoo#231660
This fixes an issue in the HTML editor where typing near the edge of a link inside formatted text could lose the surrounding formatting. Users editing rich text content can now add links within styled text without accidentally creating mismatched or unformatted characters.
Original PR description
Problem: If we add a link on a slice of formatted text we end up being able to type unformatted content at the link edges. Cause: After https://github.com/odoo/odoo/commit/3bcbd6f34facb9c88290dbd6496cc5103665a0a2 the `span` can be split and `feff`s are placed around the link, precisely between the link and the `span`. This allows writing unformatted content at the caret when placed between them. Solution: Ensure that the link is created inside the `span`. Also prevent the formatting applied by `.btn` when the link is inside a `span`. Steps to reproduce: 1. Add "abc". 2. Format all the text: set font size 48 (or whatever). 3. Select "b". 4. Create a link on "b" only. 5. Put caret before "a". 6. Press Arrow left. 7. Type any character. → The character is not formatted as the link content. task-5092298 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231464 Forward-Port-Of: odoo/odoo#228353