Wednesday, February 25, 2026
141 changes
5 changes
Resolved issues and error corrections
This update resolves an issue where the search filter wasn't functioning correctly for users on iOS devices using the on-screen keyboard (IME). The fix reverts a previous change that caused this problem. This ensures that the search functionality works reliably for all Odoo users on iOS.
Original PR description
This reverts commit 2ff4e7b12b66a2d973f285006e6676e49087ca7d. Search filter doesn't work for iOS users. A new fix has to be found. opw-5966697 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#250494
This update fixes a potential issue in the website's page checking process. Removing the reliance on the `request` object within the `check_existing_page` function enhances stability and prevents errors. This change ensures the website operates more reliably.
Original PR description
The `request` global object should not be used from models, as it may be invalid. This commit remove its uses from the method `check_exsiting_page` that was introduced in commit 45e15673a70cf770d8e343a0a3b805eccdbed0d1. task-5888297 Forward-Port-Of: odoo/odoo#246153
This update resolves an error that occurred when employees had multiple leave types assigned. The fix ensures the holiday attest calculation accurately processes all allocated leave time, preventing errors during payroll computations. This improves the reliability of holiday pay reporting.
Original PR description
Bug : - allocate multiple leave types to an employee - lay off the employee -access the holiday attest wizard and try to compute holiday attest and you'll see a traceback Reason : - time_off_allocated and time_off_taken were expecting to find exactly one line of "Legal Time Off". Receiving multiple caused an Error. Fix : FIxing the logic by taking all the available lines and summing there values. task - 5461268 Forward-Port-Of: odoo/enterprise#107673
This update prevents users from attempting to edit applicant properties when a job isn't associated. Previously, a confusing error message would appear. This change ensures a smoother user experience by hiding the editing option when it's not applicable, improving data consistency.
Original PR description
# How to reproduce - Go to the Talen Pool sub-menu of the recuitment app - Create a new Talent - Click on the cog button, then on "Edit Properties" # The problem A not very descriptive error message…
# How to reproduce - Go to the Talen Pool sub-menu of the recuitment app - Create a new Talent - Click on the cog button, then on "Edit Properties" # The problem A not very descriptive error message is displayed # Why The hr.applicant model has a Properties field that allows the edition of its properties directly in the UI. This field needs to be linked to a PropertiesDefintion field in another model. In our case, that definition is in the hr.job model linked to the hr.applicant model via the field job_id. To be able to edit the properties of the hr.applicant model, it needs to be linked to a job, which is not always the case. A fix was made in master to allow the edition of properties even when there is no job_id (https://github.com/odoo/odoo/commit/99aa75bc64ee8898a0815163603e5861c35b0b94) but that fix is not applicable to a stable version. The fix I implemented instead hides the button when editing the properties would fail. opw-5932666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248691
This update fixes a potential crash in Odoo's subscription invoicing process. Previously, invoices with mixed standard products and timesheet services could fail if the timesheet had zero delivered quantity. The fix adds a safeguard to skip invoice lines without sale order links, ensuring invoices can be generated correctly regardless of timesheet status.
Original PR description
…n invoicing **Issue:** When generating an invoice for a subscription that contains a mix of regular products (invoiced on order) and timesheet-based services (invoiced on delivery), a traceback can…
…n invoicing **Issue:** When generating an invoice for a subscription that contains a mix of regular products (invoiced on order) and timesheet-based services (invoiced on delivery), a traceback can occur if the timesheet service has 0 delivered quantity. **Cause:** During the invoice creation process, `_get_reinvoiced_analytic_lines_to_link` iterates over the newly created invoice lines to link analytic lines. It filters the linked sale order lines using `_is_line_reinvoicable()`. If the invoice only contains standard products (because the timesheet line was skipped due to 0 delivery), `so_lines` evaluates to an empty recordset. Passing an empty recordset into `_analytic_line_domain_get_invoiced_lines()` results in a traceback when evaluating the domain. **Fix:** Added a safeguard (`if not so_lines: continue`) inside the loop. If an invoice line does not contain any reinvoicable sale order lines, it is now safely skipped, allowing standard subscription lines to be invoiced alongside undelivered timesheet lines without crashing. task: 5966725
5 changes
Resolved issues and error corrections
This update resolves a problem where the search filter wasn't working correctly for users on iOS devices using the on-screen keyboard. The fix reverts a previous change that introduced this issue, ensuring the search functionality is reliable for all users, including those on iPhone and iPad.
Original PR description
This reverts commit 2ff4e7b12b66a2d973f285006e6676e49087ca7d. Search filter doesn't work for iOS users. A new fix has to be found. opw-5966697 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#250494
1 change
Resolved issues and error corrections
This update resolves an issue where helpdesk users with limited access were unable to view tickets due to a restriction in accessing related stock data. The fix adds a permission group to allow helpdesk users to read the necessary stock information, ensuring they can properly access and manage tickets. This improves usability for helpdesk staff.
Original PR description
To reproduce: ============= - install helpdesk_stock - with user having only User rights on helpdesk and nothing on other modules - try to access a ticket -> AccessError Problem: ======== when reading the ticket, the field `suitable_product_ids` is computed, and it requires read access to records the user doesn't have access to, which raises an AccessError. Solution: ========= Add the group `stock.group_stock_user` to the field, so that only users having access can read it. backport of https://github.com/odoo/enterprise/pull/59605 opw-5907657 Forward-Port-Of: odoo/enterprise#108139 Forward-Port-Of: odoo/enterprise#107291
2 changes
Resolved issues and error corrections
This update fixes an issue where POS receipts incorrectly showed the standard 21% tax label, even when a fiscal position (like 6%) was applied. The fix ensures that the POS receipt accurately reflects the tax rate based on the selected fiscal position, improving accuracy and compliance.
Original PR description
Steps: - Install l10n_be_pos_restaurant. - Create a restaurant POS configuration with presets. - Assign a fiscal position to one preset that replaces 21% tax with 6%. - Open a POS session and process an order using that preset. Issue: - The POS receipt still displays the 21% tax's tax group label, even though the 6% tax is correctly applied. Cause: - Fiscal position was not taken into account when computing the tax group label for POS receipt orderlines. Fix: - Apply the fiscal position when determining the POS receipt tax group label. Task-5899938 Forward-Port-Of: odoo/odoo#248571
9 changes
Resolved issues and error corrections
This update fixes a calculation error in the Belgian payroll system. Previously, meal vouchers and private car expenses were incorrectly reported with a quantity of zero on payslips. This change ensures accurate reporting of these benefits, aligning with Belgian regulations and providing correct financial data.
Original PR description
In this commit, we fixed the data of the existing Belgian structure types by setting the right work entry type as default_work_entry_type_id. Belgian's structure types should have the correct attendance work entry type to consider the meal vouchers and the private car in the benefits and payslip lines Before this change, the belgian payslips will have quantity 0 for meal vouchers and private car. After this change, the belgian payslips will have the correct quantity for both meal vouchers and private car. task-5946425 Forward-Port-Of: odoo/enterprise#108061
2 changes
Resolved issues and error corrections
This update ensures that check printing in the Philippines accurately reflects the net payment amount after withholding taxes. Previously, the checks were displaying incorrect amounts. A new test case has been added to verify this fix and maintain the correct calculation.
Original PR description
In Philippines' check localization module, the amount on check should be based on the net amount after deducing withholding amount for payments if the payment is with taxes that are set as withholding on payment. This commit fixes the check print's values to reflect the net amount. Minimal test case is also added to safeguard the new behavior. [Task-5928813](https://www.odoo.com/odoo/all-tasks/5928813)
1 change
Resolved issues and error corrections
This update fixes a technical issue where certain Intrastat codes (99450000, 99500000, 99600000 & 99700000) were incorrectly marked as expired. The update ensures these codes remain active, aligning with official Belgian regulations as outlined in the NBb manual, ensuring accurate reporting.
Original PR description
99450000, 99500000, 99600000 & 99700000 were erroneously expired. They are still active : https://www.nbb.be/doc/dd/onegate/data/intrastat_manual_basis_en.pdf page 13 Forward-Port-Of: odoo/enterprise#108451
This update resolves a potential instability issue in the website by removing the use of the `request` object within a key function. Using `request` from models can lead to errors, and this change ensures the website operates more reliably. This is a routine maintenance fix.
Original PR description
The `request` global object should not be used from models, as it may be invalid. This commit remove its uses from the method `check_exsiting_page` that was introduced in commit 45e15673a70cf770d8e343a0a3b805eccdbed0d1. task-5888297 Forward-Port-Of: odoo/odoo#246153
This update prevents users from attempting to edit applicant properties when a job isn't associated. Previously, a confusing error message appeared. This change ensures a smoother user experience by hiding the edit button when a job ID is missing, improving data consistency.
Original PR description
# How to reproduce - Go to the Talen Pool sub-menu of the recuitment app - Create a new Talent - Click on the cog button, then on "Edit Properties" # The problem A not very descriptive error message…
# How to reproduce - Go to the Talen Pool sub-menu of the recuitment app - Create a new Talent - Click on the cog button, then on "Edit Properties" # The problem A not very descriptive error message is displayed # Why The hr.applicant model has a Properties field that allows the edition of its properties directly in the UI. This field needs to be linked to a PropertiesDefintion field in another model. In our case, that definition is in the hr.job model linked to the hr.applicant model via the field job_id. To be able to edit the properties of the hr.applicant model, it needs to be linked to a job, which is not always the case. A fix was made in master to allow the edition of properties even when there is no job_id (https://github.com/odoo/odoo/commit/99aa75bc64ee8898a0815163603e5861c35b0b94) but that fix is not applicable to a stable version. The fix I implemented instead hides the button when editing the properties would fail. opw-5932666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248691
This update resolves an issue where users with limited accounting access (read-only) were encountering errors when viewing invoices or partner details. The change ensures that certain data fields are only displayed to users who have the necessary permissions, improving stability and usability.
Original PR description
User with "read-only" access to accounting will trigger an error if they try to open an invoice or partner due to field addenda_ids. This commit aims to render this field only if the have the right to fetch it. opw-5931178 opw-5954244 Forward-Port-Of: odoo/enterprise#108332
A small bug was fixed in the Timesheet grid view where the total overtime displayed in the month view was incorrectly labeled as 'Weekly Overtime'. This update now accurately shows 'Total Overtime', ensuring users see the correct cumulative overtime figures regardless of the time period selected.
Original PR description
### Issue: When displaying the month in the grid view and hovering the bottom right cell, where the total overtime is displayed, it shows "Weekly overtime". ### Steps to reproduce: - Open Timesheet app - In "My Timesheet", display the grid in day or month - Hover the bottom right cell - It displays "Weekly Overtime" ### Solution: Rename it to "Total overtime" to handle all periods (day, week, month). opw-5502864 Forward-Port-Of: odoo/enterprise#108480 Forward-Port-Of: odoo/enterprise#107642
This update resolves an issue where products weren't automatically marked as 'published' when assigned to a category in the product editor. The fix ensures that category assignments correctly update the product's visibility status, preventing products from being incorrectly hidden. This improves the user experience and data accuracy.
Original PR description
Error: AssertionError: False is not true self.assertTrue(product.website_published) Cause: Commit https://github.com/odoo/odoo/commit/ca198cfc7c41a8c15b2734518016007aa1c16457 relies on _onchange_public_categ_ids to set website_published=True when a category is assigned. Two issues: 1. website_published was not in the dialog form view, so its onchange value was never tracked or sent to the server on save. 2. The tour clicks Save before the onchange response is received, so the product is saved without website_published=True. Fix: - Add website_published as an invisible field in the dialog form view so its value is tracked and sent on save. - Wait for the category badge to appear before submitting, ensuring the onchange has completed before save. runbot-237976 Forward-Port-Of: odoo/odoo#249027
This update resolves an issue where sharing document templates with readonly fields caused errors. By separating validation logic and removing unnecessary security checks, the system now correctly handles shared template requests, ensuring seamless document sharing and collaboration. This improves the reliability of our document management features.
Original PR description
Currently, attempting to share a document template that contains readonly fields fails. When `_populate_constant_items` calls `_fill` to pre-fill these fields, `_fill` aggressively checks that the request state is 'sent'. Since shared links create requests in the 'shared' state, the transaction crashes. Additionally, `_fill` throws a `UserError` if not called with `sudo`, which inappropriately treats a developer/privilege error as an end-user error. This commit resolves the issue by separating concerns: - Moves the `state == 'sent'` validation out of the `_fill` helper and into `_sign` (the caller responsible for actual user signatures). - Removes the artificial `sudo` check in `_fill`, relying instead on standard ORM Access Errors to block unauthorized database writes. (only in master) Task: 5949263 Forward-Port-Of: odoo/enterprise#107898
This update resolves an issue related to the accurate reporting of cycle transportation declarations in Belgium's HR and payroll system. The changes ensure that tax calculations and reporting align with Belgian regulations, improving compliance and accuracy for businesses operating in Belgium.
Original PR description
Forward-Port-Of: odoo/enterprise#108173 Forward-Port-Of: odoo/enterprise#108069
This update ensures that the order of selection options within Odoo Sign templates is preserved when saving. Previously, options were scrambled due to a technical issue in how the system processed selections. This change corrects the underlying code to maintain the user's intended order, improving data consistency.
Original PR description
Steps to reproduce: 1. Open a Sign template. 2. Drag a 'Selection' field onto the document. 3. In the popover, type options in a specific order (e.g., Delta, Alpha, Beta). 4. Click save. 5. Re-open or inspect the data 6. observe the order is scrambled based on Database ID. Cause: The Python method used `list(set())` which is an unordered collection, losing the user's input sequence. Furthermore, the final `search().ids` call returned records sorted by primary key (ID) rather than the provided list order. Solution: Replace `set()` with `dict.fromkeys()` to deduplicate while preserving input order. opw-5896373 Forward-Port-Of: odoo/enterprise#108380 Forward-Port-Of: odoo/enterprise#107175
This update fixes a discrepancy in how invoice reports are generated across different localization versions (e.g., EC, MX). The changes ensure that address information displayed on invoices is consistent with the latest requirements for each region, improving accuracy and compliance.
Original PR description
Adapted each localization report invoice inheritance on the changes to address block Forward-Port-Of: odoo/enterprise#108426
This update resolves an issue where helpdesk users with limited access were unable to view tickets due to a restriction on accessing related stock records. The fix adds a necessary permission allowing helpdesk users to read ticket information, ensuring they can properly manage and access tickets. This improves usability for all helpdesk users.
Original PR description
To reproduce: ============= - install helpdesk_stock - with user having only User rights on helpdesk and nothing on other modules - try to access a ticket -> AccessError Problem: ======== when reading the ticket, the field `suitable_product_ids` is computed, and it requires read access to records the user doesn't have access to, which raises an AccessError. Solution: ========= Add the group `stock.group_stock_user` to the field, so that only users having access can read it. backport of https://github.com/odoo/enterprise/pull/59605 opw-5907657 Forward-Port-Of: odoo/enterprise#108139 Forward-Port-Of: odoo/enterprise#107291
This update corrects a technical issue related to how the system identifies active VoIP sessions. A previous change introduced new session types, and this fix ensures the system correctly searches for sessions in the updated session map. This improves the reliability of VoIP functionality.
Original PR description
In this PR: https://github.com/odoo/enterprise/pull/104426 session management was introduced that changed the concept of `mainSession` and `transferSession` in the userAgent. There was a missing cleanup in the function `isInProgress` that is still using the old main and transfer sessions. This commit fixes this bug by searching for the session in the new sessions map. Forward-Port-Of: odoo/enterprise#108526
Features or functions removed from Odoo
This update eliminates redundant error messages related to receipt printers on IoT devices. As the system no longer monitors printer status, these warnings have been removed from the software, streamlining the user experience and reducing potential notifications.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/249819 As we are no longer querying the status of the receipt printer on the IoT box, some of the error messages such as being low on paper will no longer be sent by the IoT. This commit removes the messages in the JS code too. Forward-Port-Of: odoo/enterprise#108459 Forward-Port-Of: odoo/enterprise#108109
This update removes a legacy feature used to access database information. Following a migration to version 19.0, a newer API is now available, making the previous user unnecessary. This cleanup improves system efficiency and reduces potential maintenance overhead.
Original PR description
Since odoo.com migrated to 19.0, the json2 API is available and therefore we don't need to provide an API user any more to retrieve the list of databases. 3d09f8e0c67904c824b23117c5622630b6fa0899 removed it from the code and the form view, but left the field on res.config.settings for view backward compatibility. With this commit, we finish the cleanup. Forward-Port-Of: odoo/enterprise#108081
This update corrects a technical issue where certain Intrastat codes (99450000, 99500000, 99600000 & 99700000) were incorrectly marked as expired. This ensures accurate reporting for Intrastat data, aligning with official Belgian regulations. The fix improves data integrity for international trade reporting.
Original PR description
99450000, 99500000, 99600000 & 99700000 were erroneously expired. They are still active : https://www.nbb.be/doc/dd/onegate/data/intrastat_manual_basis_en.pdf page 13 Forward-Port-Of: odoo/enterprise#108451