Daily updates from Odoo
Monday, February 16, 2026
12 changes · 17.0
Enhancements to existing features
This update adjusts the percentages used in Odoo's Belgian payroll (CP200) calculations. Specifically, it incorporates a new valuation (2026) and updates the parameters related to the seizable amount, ensuring accurate tax calculations for Belgian employees. This change improves payroll compliance and reporting.
Original PR description
Update CP200 Seizable Amount Percentages salary Parameters . Add 2026 valuation task-5478481
Resolved issues and error corrections
This update adjusts the Odoo installation process to maintain compatibility across different versions. Specifically, it addresses a change in how the 'base' module is handled in Odoo 18.2, ensuring a smoother installation experience. This change ensures consistent behavior regardless of the Odoo version being used.
Original PR description
Starting in 18.2 the skip-auto-install is not working as in 17.0 because base is not marked as to install another way. The detailed explanation: https://github.com/odoo/odoo/pull/239044#discussion_r2603384580 This commit just makes the logic and code consistent in all versions even if this is not needed in 17.0
This update enhances accounting reports by allowing users to filter data across multiple journals simultaneously. Previously, filtering was limited to a single journal. This change provides greater flexibility and accuracy when analyzing financial data.
Original PR description
In accounting reports, we want to be able to filter on multiples journals if needed. This filter will allow us to do this. Using `context['search_default_journal_id'] = journal_ids` doesn't work as only the first id is passed to the filter. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where FedEx freight service requests were failing due to missing information required by the FedEx API. Specifically, the system was missing a 'bookingConfirmationNumber' field, leading to validation errors. This fix ensures accurate rate retrieval and delivery validation for FedEx freight services.
Original PR description
Issue ----- Fedex freights services require extra information not present in the db, so requests will not be accepted by the API. A rate can be retrieved but the delivery cannot by validated by users as they get a `SHIPMENT.LOADCOUNT.INVALID` error. This is due to the lack of a `expressFreightDetail` entry in the request sent to the Fedex API. This `expressFreightDetail` field should contain some information which Odoo does not have a way to retrieve, such as a `bookingConfirmationNumber`. API details: https://developer.fedex.com/api/en-us/catalog/ship/v1/docs.html#:~:text=expressFreightDetail Feedback 5913471 ----- Ticket: opw-5876616
This update resolves a technical issue that caused a 500 error when users accessed appointment information URLs with incorrect parameters. The fix ensures a smoother booking experience by gracefully handling missing data, preventing errors and improving overall stability. This change impacts the appointment booking process.
Original PR description
Steps to reproduce: 1. Install 'appointment' module. 2. Set up any regular appointment. 3. Instead of following the steps for booking, try to access an info url with wrong parameters, e.g.: just /info or /info?allday=0 4. Observe a 500 error due to missing parameters. Issue: When accesing the /info route with the missing parameters of 'date_time' and 'duration' which are exepected to be always present, a 500 error is raised. Solution: We could gracefully handle this issue by redirecting the user if the proper values are not present in the URL parameters. opw-5412775
This update resolves an issue where autofilling pivot cells with invalid relational IDs would cause a crash. The fix ensures that autofill functionality continues to work while preventing the associated tooltip from triggering a system error. This improves the reliability and usability of the pivot table feature.
Original PR description
If you try to autofill a pivot cell that has an invalid relational id in its domain (eg. `=PIVOT.HEADER(1, "stage_id", 99999999)`), the autofill actually works but the tooltip make everything crash. Task: [5913754](https://www.odoo.com/web#id=5913754&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
This update reverts a recent change that caused all upsell quotes to be canceled, disrupting legitimate business processes. The previous update incorrectly used a function that resulted in errors and unintended cancellations. This reversion restores the correct quote handling functionality.
Original PR description
…mmit/55b6bbe27cc31abcaee40cd4a196e087fdfd4ce5 This commit introduced an issue. All upsell quote were canceled and no filtering was done on "alternative quotes". As a result it could disrupt legit business flow. Moreover, action_cancel was called instead of _action_cancell which can lead to ValueError: Expected singleton as action_cancel can require single record sometimes.
A bug was preventing users from correctly saving approval domain rules within the web studio interface. This was caused by an incompatibility between how Python and JavaScript represent boolean values. The update replaces a flawed method of converting domains to strings with a more reliable approach, ensuring approval rules are saved accurately.
Original PR description
Steps to reproduce ================== - Install web_studio,sale_management - Open a form view in sale - Open studio - Click on the "Send by email" button - Add an approval rule - Add a domain by clicking on the filter icon - Use the not set operator - Confirm - Click on the filter icon again - Confirm => ValueError: malformed node or string on line 1: <ast.Name object at 0x79ff4c7b7f50> Cause of the issue ================== JSON.stringify was used to pass the domain as a string to the DomainSelectorDialog. This doesn't work for boolean as they don't have the same representation in JavaScript as opposed to Python. Solution ======== Use the Domain().toString function opw-5923585
This update ensures that CODA file transactions are correctly split according to the journal settings, even when processed automatically through the Odoo cron job. Previously, the cron job bypassed this splitting logic, leading to incorrect accounting. This fix resolves a discrepancy between manual and automated import methods.
Original PR description
When importing CODA files manually, transactions are correctly split according to the journal configuration. However, when processed via the cron, the splitting logic is bypassed because the journal recordset is empty at the time of parsing. This occurs because the journal is identified only after the file has been parsed, which is too late for the cron flow. This commit ensures the journal is available early enough to respect the "Split Transactions" setting regardless of the import method. opw-4954539
This update resolves an issue preventing payroll users from accessing the 'One-time payments' feature within Swiss company configurations. The fix allows payroll officers and managers to correctly open and manage these payments, ensuring proper reporting and compliance. The issue stemmed from restricted access to action records, which has now been addressed through a secure internal bypass.
Original PR description
Steps to reproduce: ------------------- 1. Install l10n_ch_hr_payroll_elm_transmission. 2. Switch to a Swiss company and create a new employee. 3. Create a new internal user with Payroll…
Steps to reproduce: ------------------- 1. Install l10n_ch_hr_payroll_elm_transmission. 2. Switch to a Swiss company and create a new employee. 3. Create a new internal user with Payroll Officer/Manager access. 4. Log in as that user, create a contract, and click on "One-time payments". Issue: --------- A Traceback with AccessError: ```You are not allowed to access 'Action Window' (ir.actions.act_window) records.``` Cause: ---------- https://github.com/odoo/enterprise/blob/9e39b4b85fcb9f6ed5b21b942796b76b8a6eefdb/l10n_ch_hr_payroll_elm_transmission/models/hr_contract.py#L195 The code attempts to call `.read()` on an `ir.actions.act_window` record. Standard users typically do not have read access to window action records, resulting in an **AccessError** even if they have rights to the payroll data. Solution: ------------- Use [_for_xml_id](https://github.com/odoo/odoo/blob/93bd4d018d815b5f98d1eaaac3ae613aefbdba56/odoo/addons/base/models/ir_actions.py#L187) to return action content for the provided xml id in a safe way by doing [sudo](https://github.com/odoo/odoo/blob/93bd4d018d815b5f98d1eaaac3ae613aefbdba56/odoo/addons/base/models/ir_actions.py#L205) internally to bypass the access restriction. opw-5491467
This update fixes an issue where the 'Journal Items' view in the general ledger didn't correctly display journal information when a journal was selected as a filter. Now, when viewing journal items within the general ledger, both the invoice and the associated journal entry are accurately displayed. The update also includes support for multiple journals, though a refresh is required.
Original PR description
When opening the general ledger, if a journal was selected in the filter of the report, when clicking on "Journal Items" it would open the list view of account.move.lines without the journal in the filter. Also, the support for multiples journals is added but will require a -u of account to refresh the view. To reproduce: - Create an invoice on an Account such as Product Sales - Create a journal entry on the same account - Open the general ledger - Select "Customer Invoices" and click on "Journal Items" on the Account you choose. You can see both the move lines from the invoice and the journal entry.
This update corrects a discrepancy in payslip calculations for the private car daily allowance. The daily amount is now rounded to two decimal places, ensuring it precisely matches the 'Quantity × Amount' displayed on payslips. This improves payroll accuracy and reporting.
Original PR description
Round the computed daily private-car salary rule amount to 2 decimals so the displayed per-day value matches Quantity × Amount on payslips. References task-5917569