Wednesday, January 14, 2026
46 changes · master
Resolved issues and error corrections
This update corrects a calculation error in the Belgian payroll module (l10n_be_hr_payroll) related to the 3000 deduction. The change ensures that the deduction amount is accurately reflected up to the year 2026, aligning with updated Belgian tax regulations. This ensures accurate payroll processing and compliance for businesses using this module.
Original PR description
Forward-Port-Of: odoo/enterprise#103891 Forward-Port-Of: odoo/enterprise#103824
This update corrects small errors in the 2026 balance sheet and profit & loss reports for the Danish localization. These changes involve correcting formula signs and text labels, likely due to an oversight during development. This ensures accurate financial reporting for Danish businesses using Odoo Enterprise.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/0d431fe2cc6556a040888ecc5d6a71be4a435447 we introduce a new balance sheet report for 2026 but there was a mistake in the sign of a formula and in the text of a line. Same for the profit and loss, some errors in sign of accounts and naming. The errors don't come from a ticket but more of a logical fix, those errors were probably an oversight during development. no task id Forward-Port-Of: odoo/enterprise#103830
This update clarifies the call settings for users who have muted a participant. Previously, the menu and hints were confusing, showing the deafen icon with the unmute label. Now, only the 'undeafen' button is displayed when a participant is muted, streamlining the user experience and ensuring clarity.
Original PR description
Before this commit, the hint in the call settings was not taking into account if it was deafen or mute. On top of that the icon in the menu was showing the deafen icon but with the unmute label. When deafened, this was redundant with the undeafen button as well since unmute and undeafen are practically doing the same thing. Now, when deafen is activated, only the undeafen button is shown in the call menu and the hint in the call actions is undeafen not unmute. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242887 Forward-Port-Of: odoo/odoo#242519
This update corrects a recent change to the access rights for the account online synchronization feature, ensuring it's correctly linked to Invoicing & Banks. The previous update missed a crucial step, preventing proper access control, and this fix resolves that oversight.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/6edc057a9c0459af2b6d625415b700daf6280520 we changed the access rights of the account online sync to Invoicing & Banks but forgot to add the duplicate transactions no task id Forward-Port-Of: odoo/enterprise#104008
This update fixes an issue where the HTML editor would incorrectly display extra lines when multiple lines were selected. The change filters out empty text nodes to prevent unnecessary font wrappers, resulting in cleaner and more accurate rendering of selected text.
Original PR description
**Current behavior before PR:** - When multiple lines were selected within a block, any empty text nodes between them would also receive a font wrapper when applying a color. - As a result, it appeared as though an extra line was being inserted when the color was applied. **Desired behavior after PR is merged:** - Empty text nodes that are not visible and are not zero-width space or line-break nodes are now filtered out before the font tag is created. - This prevents font wrappers from being created around those nodes. task-5344051 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236824
This update resolves a minor typo in the Odoo Enterprise system. Specifically, the name of an attachment file was corrected to align with its intended functionality and external ID. This ensures data consistency and proper operation within the accounting module.
Original PR description
Fix typo – Correct the ir_attachment file name to match the external ID and its functionality. OPW-5428700 Forward-Port-Of: odoo/enterprise#103809
This update fixes a minor issue in the Sendcloud integration where the system was incorrectly retrieving product information. The change ensures that product IDs are accessed using the correct 'id' key, resolving a potential data retrieval problem. This improves the reliability of sending orders through Sendcloud.
Original PR description
Same fix as d4fae97, the id was retrieved by doing `[0]` but the proxy object has changed so we need to use the `id` key to get the value instead. ----- Ticket: opw-5433254 Forward-Port-Of: odoo/enterprise#103706
This update fixes an issue where users without write access couldn't star messages in threads, resulting in an error. The fix adds a necessary permission adjustment to allow users to star messages they can read, ensuring broader functionality for all users. This improves the user experience and prevents a frustrating access error.
Original PR description
Before this commit, starring a message in a thread without write access would result in an access error. This happens because since [1] a message is marked as starred by writing on the `starred_partner_ids` field of mail.message instead of the `starred_message_ids` field of res.partner. This results in an access error when the uses does not have write access. This commit fixes the issue by adding a sudo call to the write of `starred_partner_ids`, which is acceptable because a user should always be able to star a message they can read. [1] https://github.com/odoo/odoo/pull/219282 task-5481662 Forward-Port-Of: odoo/odoo#243130
This update streamlines the process of assigning barcodes to product packaging. Previously, users faced a confusing, multi-step process leading to duplicate UoM creation. Now, the barcode field is integrated directly into the packaging creation flow, offering a simpler and more efficient experience.
Original PR description
Before this commit: ------------------------- - In the product form view, when creating new packaging, a pop-up form opens to Create a new Unit of Measure (UoM), and if the user tries to assign a…
Before this commit: ------------------------- - In the product form view, when creating new packaging, a pop-up form opens to Create a new Unit of Measure (UoM), and if the user tries to assign a barcode Within that form, a second pop-up opens instead of assigning the barcode directly. - In the second pop-up, if the user creates the same UoM again, it causes data duplication; the same UoM gets created in 'Units and Packagings' with a default quantity of 1 without reference unit. This incorrect behavior leads to confusion when selecting the UoM later. Steps to reproduce: ------------------------- 1. Install the 'sale_stock' module. 2. Enable Units of Measure & Packagings in stock. 3. Create or open any product. 4. Go to the Sales tab. 5. Create new packaging (e.g., Pack of 5), set the quantity and reference unit, and try to create a barcode. 6. A second pop-up form opens to again create a new UoM and assign the barcode. 7. It causes data duplication; the same UoM gets created in 'Units and Packagings' with a default quantity of 1 without reference unit. Cause of the issue ------------------------- When assigning a new barcode to a UoM, the field could not fetch the corresponding UoM(In uom.uom) record because it did not yet exist in the database. As a result, the system opened another pop-up to create the same UoM(In product.uom) again and assign a barcode to it. After this commit: ----------------------- - The barcode field is hidden until the UoM is created. - Once the packaging is saved, users can edit it to assign a barcode to the specific UoM of the product. - This improves the flow by preventing duplicate UoM creation and ensuring a clear, single-step process for assigning barcodes to product packaging. Task ID:5023229 Forward-Port-Of: odoo/odoo#230474
This update prevents the full composer window from unexpectedly opening when users are editing messages within tasks. The original issue stemmed from a technical error related to how the composer was initialized during editing, causing a crash. This fix ensures a smoother editing experience for all users.
Original PR description
Steps to reproduce: =================== 1- Go to a project task & log any note. 2- Edit & Click the additional "+" and click "Open Full Composer" 3- Click on Save. -> traceback. Cause: ====== When entering edit mode, the composer was created without a thread reference, causing "Cannot read properties of undefined (`this.props.composer.thread is undefined`)" errors in `onClickFullComposer`. Solution: ========= We shouldn't have "open-full-composer" action in editing messages opw-5443985 Forward-Port-Of: odoo/odoo#242002
This update resolves an issue where the 'copy link' button in the salary calculator was generating a 404 error. The fix ensures the offer is saved before creating the link, preventing errors related to missing offer IDs. This improves the usability of the salary calculator for generating offer links.
Original PR description
Steps to reproduce: 1- Open salary calculator 2- Do not edit any fields 3- Click on copy link button 4- Open the link Issue: When you open the link you'll see a 404 page. Cause: The salary calculator essentially creates an offer. When no fields are modified in the form, the offer isn't created yet. When a link is created for that offer, the offer id part of the link is NewId_xxx. Fix: Modify the widget that copies the link to clipboard to first save the offer before generating the link. Task-5441297 Forward-Port-Of: odoo/enterprise#104021 Forward-Port-Of: odoo/enterprise#102900
This update resolves an issue where applications weren't accurately counted and matched within a multi-company Odoo setup. The change removes a filtering constraint from the application matching process, ensuring a more precise count of applications per company. This improves the accuracy of reporting and data analysis across multiple businesses.
Original PR description
This commit fixes the issue where applications are not matched are not mathced with thier count among companies in a multi-company environment. The domain on company was removed from `_get_similar_applicants_domain` since there is no domain on company in `_compute_application_count`. task-5375876 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243154 Forward-Port-Of: odoo/odoo#238386
This update fixes an issue where public channels were incorrectly configured, defaulting to an internal user instead of being publicly accessible. Setting `group_public_id` to `None` ensures channels are properly designated as public, resolving a previous bug. This improves channel visibility and functionality.
Original PR description
Since #206619, the fixed test has used a wrong value for `group_public_id`, as if it's not set, the default is `Internal User`. This change sets it to `None` to make the channel public. Forward-Port-Of: odoo/odoo#243354 Forward-Port-Of: odoo/odoo#243237
A recent update added call duration information to chatter messages, but this caused a tour to fail intermittently. This fix corrects the tour's targeting method to ensure consistent functionality, preventing future disruptions to the tour process.
Original PR description
After 5751f93c53d3cf37ae8cb627fb8d10a81b7b8833, call duration will be added to chatter message. This change is done by modifing the original message, which results in a non-deterministic failure when selector trying to match the original message. Change the selector to match a stable attribute. Forward-Port-Of: odoo/enterprise#104132
This update fixes a previous issue where the messaging menu incorrectly added needaction channel counts to the inbox count. Now, the inbox counter accurately reflects the number of unread messages across all channels, providing a more reliable view of communication activity. This ensures users have a precise understanding of their messaging workload.
Original PR description
This commit corrects a regression intoduced in [1]: the messaging menu now subtracts the channels needaction counter from the inbox counter, rather than adding it [1] https://github.com/odoo/odoo/pull/229751 Forward-Port-Of: odoo/odoo#243478 Forward-Port-Of: odoo/odoo#243318
This update fixes a bug where payslips were showing blank worked days for employees on fully flexible contracts. The change ensures accurate calculation of worked days, even when contracts don't have a standard calendar assigned, addressing a previous issue with attendance-based work entries. This improves payroll accuracy and reporting.
Original PR description
**Issue:** Payslips show blank worked days for employees with contracts without a `resource_calendar_id` (fully flexible, despite having valid work entries **Cause:** `_get_worked_day_lines()` skips…
**Issue:** Payslips show blank worked days for employees with contracts without a `resource_calendar_id` (fully flexible, despite having valid work entries **Cause:** `_get_worked_day_lines()` skips worked day computation if the contract has no calendar https://github.com/odoo/enterprise/blob/1a10e0444fdb71a072262a1f14f0bfc766d109c6/hr_payroll/models/hr_payslip.py#L665-L674 **Steps to Reproduce:** - Assign an employee a fully flexible contract with attendance as work entry source. - Create work entries based on the attendance records of the employee record - Go to employees > contracts > new Payslip Worked Days section is empty, even though attendance shifts are showing up on top. **Fix:** removing the calendar requirement in the main method and adding a fallback calendar in the called utility method **Note:** same issue happens if work entry source of the contract is Planning opw-4931972 Forward-Port-Of: odoo/enterprise#102668 Forward-Port-Of: odoo/enterprise#93935
This update resolves an issue where non-admin users in multi-company environments couldn't update their profile picture or preferred language. The fix bypasses access rules that were incorrectly blocking company data access, allowing users to manage these settings without errors. This ensures a smoother experience for all users regardless of their company setup.
Original PR description
### Impacted versions: 19.0 and later ### Steps to reproduce: - Install at least 2 languages - Create multiple companies - Log in as marc demo and select only one company - Try to update profile picture or modify preferred lang ### Current behavior: When a non-admin user operates in a multi-company environment with only some companies active in their context, the `res_company_rule_employee` record rule blocks access to `company_ids` when trying to read all assigned companies. This causes an Access Error in the `res.users.new()` method when it attempts to count the user's companies to manage the `base.group_multi_company` group membership, preventing users from changing their profile picture and updating their preferred language Task: [5458607](https://www.odoo.com/odoo/project/49/tasks/5458607) Forward-Port-Of: odoo/odoo#243259
This update fixes an issue where Point of Sale orders weren't consistently linked to the correct company. Now, when a new order is created, the system automatically uses the company setting from the POS session's configuration, ensuring accurate reporting and accounting. This improves data integrity and simplifies business operations.
Original PR description
When creating an order, if due to some reason the company_id is not set on the order data, we set it to the company of the POS session's config. opw-5470175 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243249
This update ensures that Odoo's code translations are correctly exported. A new package, odoo.orm, was recently added, and this change clarifies how the framework identifies and exports translations from this package. This improves the accuracy and completeness of our code translation resources.
Original PR description
New package odoo.orm was added in PR https://github.com/odoo/odoo/pull/182727 The new package's name must be specified in ``TranslationModuleReader._export_translatable_resources`` to allow the framework to export its code translations. 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#243584
This update resolves an issue where users without specific group permissions would encounter errors when pinning or unpinning embedded actions, particularly within superuser mode. By adding a check for superuser status, the system now correctly allows superusers to perform these actions, ensuring stability for automated processes and installation scripts.
Original PR description
Prior to this commit, an AccessError would be raised when pinning or unpinning embedded actions if the current user did not belong to the 'documents.group_documents_user' group. This could cause issues during operations running in superuser mode (e.g., automated actions, installation scripts, or sudo() calls) because the check strictly validated the user's groups without considering the environment's superuser flag. This commit adds a check for `self.env.su` to ensure the AccessError is not raised when the environment is in superuser mode. Task-5380727 Forward-Port-Of: odoo/enterprise#104043 Forward-Port-Of: odoo/enterprise#101106
This update resolves an issue where the AI module's exception handling wasn't functioning correctly, specifically when a request cursor closed. The fix ensures the system uses the local environment, preventing errors and improving the stability of AI-powered features. This enhances the reliability of the AI module for users.
Original PR description
self.env is invalid inside generator after request cursor closes Forward-Port-Of: odoo/enterprise#104106
This update resolves an issue where Odoo encountered errors when processing emails with attachment content types incorrectly identified as '*/*'. To ensure emails are processed smoothly, the system now defaults to 'application/octet-stream' for these cases, minimizing disruption. The change is a pragmatic solution to avoid blocking emails due to non-standard content types.
Original PR description
In some rare cases it would seem that some systems construct emails with attachments reporting `*/*` as the Content-Type. While trying to parse such content in Odoo, it causes issues with the…
In some rare cases it would seem that some systems construct emails with attachments reporting `*/*` as the Content-Type. While trying to parse such content in Odoo, it causes issues with the standard CPython email library, as no standard handler exists for '*/*' content-types: Example error: ``` File "/usr/lib/python3.13/email/contentmanager.py", line 25, in get_content raise KeyError(content_type) KeyError: '*/*' ``` This is not compliant with valid MIME types defined in RFC2046/section-3, but in real life scenarios, blocking the processing of an incoming email in Odoo because of this might be excessive. While not a perfect solution, we will assume that attachments falsly reported as `*/*` are to be processed as 'application/octet-stream' content types. This should cover most use-cases, and if it still fails, we will consider that it's up to the original email sender to be RFC compliant. OPW-5425093 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242193
This update fixes an issue where links shared within Odoo's chat system were incorrectly marking customer portal page views. A simple adjustment was made to the request headers sent by the previewer, ensuring accurate tracking of customer activity on the portal. This improves our understanding of customer engagement.
Original PR description
When a link to the portal is sent from the chatter via message or log note, the preview of the link triggers that the page was viewed by customer. As a solution a variable was added to the request headers coming from the previewer. opw-5237785 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243061
This update resolves an issue where user images within the referral module were not aligned correctly. The fix ensures a consistent and professional appearance for user profiles, enhancing the overall user experience. This improves the visual quality of the referral process.
Original PR description
This fix ensures that the user's image is correctly aligned task-5264613 Forward-Port-Of: odoo/enterprise#99488
This update resolves an error that occurred when users attempted to search for employees without the 'hr_payroll' module installed. The issue stemmed from a reference to a field within the 'hr_payroll' module in the employee search filters. This fix ensures a smoother experience for all users.
Original PR description
Bug: Searching for Employees without hr_payroll installed causes an error Cause: a field from hr_payroll was referenced in hr views filter Task-5487616 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr