Daily updates from Odoo
Thursday, April 23, 2026
13 changes · 17.0
Resolved issues and error corrections
This update keeps Odoo working correctly on Python 3.14 and the latest Ubuntu release by adjusting internal code and package requirements. It also fixes a mailing-related error so background checks and tests continue to run reliably on the newer Python version.
This update prevents portal users from seeing the 'View Timesheets' button on invoices if they lack the necessary permissions to access those timesheets. Previously, the system incorrectly displayed the button based on the presence of timesheets linked to the sale order, leading to a confusing user experience. The fix ensures users only see timesheets they are authorized to view.
Original PR description
sale: add sale order specific hook to extend page values ------ Allows adding custom data (e.g., timesheets) without overriding generic _get_page_view_values sale_timesheet: hide 'View Timesheets'…
sale: add sale order specific hook to extend page values
------
Allows adding custom data (e.g., timesheets) without overriding generic _get_page_view_values
sale_timesheet: hide 'View Timesheets' button for users without access
-------
Steps to Reproduce:
-----------------
- Create a product with the invoice policy set to Based on Timesheets
- Enable Project and Tasks on the order.
- Create and confirm a sale order using a portal user.
- Log timesheets on the related task.
- Create an invoice from the sale order.
- Log in as the portal user and open the invoice.
- Click the 'View Timesheets' button.
Issue:
-------------
The 'View Timesheets' button is shown to the portal user even though they don’t have access to view timesheets.
Root Cause:
------------
The timesheets are linked to the sale order, so the button appears based on the timesheet_count, but the portal user does not actually have permission to access those timesheets.
Fix:
-----------
We replaced the timesheet_count check with a check that verifies whether the user actually has access to any of the related timesheets.
task-4745519This update resolves an issue where portal users were incorrectly seeing a 'View Timesheets' button, despite lacking the necessary permissions. The fix utilizes a revised helper method to accurately control button visibility, ensuring users only see options they are authorized to access.
Original PR description
**Issue:** The 'View Timesheets' button is shown to the portal user even though they don’t have access to view timesheets. Currently, we have added _sale_order_get_page_view_values in the sale module, which is overridden in sale_timesheet. We are using it here. task-4745519
This update fixes an issue where closed Helpdesk tickets were sending out emails with the ticket's database ID instead of the correct reference number. This ensures consistent and accurate ticket references are used in customer communications, improving clarity and professionalism. The change updates a key email template to use the ticket reference.
Original PR description
Steps to reproduce: ------------------------ 1. Install the Helpdesk. 2. Go to Settings → Technical → Sequences and set the next number to 100. 3. Create a ticket and send a message using the…
Steps to reproduce: ------------------------ 1. Install the Helpdesk. 2. Go to Settings → Technical → Sequences and set the next number to 100. 3. Create a ticket and send a message using the "Helpdesk: Ticket Received" mail template; Observe that the correct reference (100) is used. (Open the full composer to use "Load template") 4. Now send a message using the "Helpdesk: Ticket Closed" mail template and Observe that it displays the database ID (e.g., 1) instead of the reference. Cause: ------ `new_ticket_request_email_template` uses the ticket reference(`object.ticket_ref`) correctly. https://github.com/odoo/enterprise/blob/d39e291ba89ad018ba6f5f9591d280a834822f27/helpdesk/data/mail_template_data.xml#L18-L19 However, the `solved_ticket_request_email_template` uses the database ID (`object.id`) instead of the actual ticket reference (`object.ticket_ref`), leading to inconsistent references in customer communications. related commit: 3ed5273 Solution: --------- Update `solved_ticket_request_email_template` to use `object.ticket_ref` instead of `object.id` opw-6087466
This update fixes an issue where upgrade scripts within Odoo modules weren't properly organized, leading to logging problems and unfiltered warnings. Now, these scripts are correctly associated with the core upgrade package, ensuring cleaner logging and proper handling of potential errors during updates.
Original PR description
The resulting modules should be bound to the `odoo.upgrade` package. Side effects: - the loggers created inside the upgrade scripts are now in the `odoo.upgrade` namespace. - warnings raised by bad usages in upgrade scripts are now correctly filtered. Forward-Port-Of: odoo/odoo#258025
This update strengthens the security of Odoo's IoT websocket connections on Windows by using a standard, up-to-date Certificate Authority bundle. This ensures reliable TLS verification and prevents potential issues with outdated system certificates, enhancing overall stability. Additionally, the pull request incorporates legal agreements (CLAs) for Corvanis and vvro.
Original PR description
The websocket-client library defaults to the system's SSL context, which can be broken or outdated on Windows. This aligns websocket TLS verification with the `requests` library by forcing a certifi-backed CA bundle. This improves reliability on Windows IoT environments without changing reconnect logic. This also adds the Odoo individual CLA for vvro and the corporate CLA for Corvanis.
This update resolves an inconsistency in how task deadlines are set in Field Service and Project apps when using the Gantt view. Previously, deadlines defaulted to today's date regardless of the selected time range. This change ensures deadlines align with the user's chosen timeframe, improving task planning and management.
Original PR description
Issue: ---------------------------------------- The default values of `date_deadline` are inconsistent between the Field Service app and the Project app when coming from the Gantt view. Steps to reproduce: ---------------------------------------- - Open Field Service, select the Gantt view - Change the range to display the week - Click "New" to create a new task - The default values for "Planned Date" are both on today's date - In Project, they would have been based on the time range of the Gantt view Cause: ---------------------------------------- A patch in `industry_fsm` implements change the default values to today. Solution: ---------------------------------------- Remove the patch responsible for this behavior. opw-6067523
This update resolves issues preventing the correct export of general ledger data in CSV format. Specifically, it corrects errors related to currency formatting and inactive currency handling, ensuring accurate and reliable reporting for financial data.
Original PR description
Follow-up to 8dfe4c0, addressing four issues in `_generate_csv_lazy_export`: 1. `AttributeError: 'int' object has no attribute 'id'` when `col['currency']` is a raw integer on aggregate lines returned by `_get_lines` with `no_format=True`. 2. `KeyError` on `decimal_places_per_cur_id` when a foreign currency account uses an inactive currency. The currency lookup was built with the default `active_test=True`, excluding archived currencies. opw-5994050
This update replaces a broken video snippet on the website with a new, publicly available video. The previous video was no longer accessible, causing a blank space in the edit mode. This ensures a consistent and functional video experience for users.
Original PR description
Specification: - The previously embedded video used by the "s_video" snippet (id=G8b4UZIcTfg) is no longer publicly available. After this commit: - This commit replaces the default video with a new publicly available one (id=nbso3NVz3p8). task-6034987 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a previous error in Odoo's French financial reporting module. Accounts 657 and 757, introduced by a recent French tax reform (PCG 2025), are now correctly classified as part of current operations. This ensures accurate profit and loss statements.
Original PR description
…tions As part of the PCG 2025 reform in France, accounts 657 and 757 were introduced to handle capital gains and losses on the disposal of tangible and intangible assets related to normal, current activities. Previously, Odoo incorrectly categorized these under exceptional items which led to mismatches in the P&L. Source: https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/Plans%20comptables/PCG--1er-janvier-2025.pdf Relevant excerpts: <img width="630" height="372" alt="image" src="https://github.com/user-attachments/assets/88a66dac-1cc0-4a33-a902-edb6b626f18f" /> <img width="631" height="318" alt="image" src="https://github.com/user-attachments/assets/403b65dc-20ba-447e-937d-20575f1f45ab" /> opw-6105764
This update removes a redundant process in the account_edi_ubl_cii module for Belgium (BE). Previously, the system was incorrectly switching between different data formats when determining the best EDI endpoint. Now that we consistently use the 0208 format, this unnecessary recomputation has been removed, streamlining the process.
Original PR description
When adding peppol, we didn't know if we needed to use the 9925:BE or 0208. Therefore, we switched between them if the endpoint was not found. This has no more use today as we use 0208. opw-5976574 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#258297
This update fixes an issue where the 'Hide lines at 0' feature was removing the report-level total line from printed reports like the Trial Balance. The change ensures that total lines, including the main report total, are always displayed when this feature is enabled, improving report clarity and accuracy.
Original PR description
When "Hide lines at 0" is enabled, printing e.g. the Trial Balance will drop the report-level "Total" line when printing. This commit fixes that. The issue was introduced in this commit[^1], which didn't consider total lines without a parent (i.e. root total lines). [^1]: https://github.com/odoo/enterprise/commit/7fec18b99eb2aa5ebc357dcad5f95f234db5b7d8
This update enhances the Peppol deregistration process in Odoo 17.0. Previously, full deregistration stopped all Peppol sending. Now, users can disable reception while retaining the ability to send and update status, offering greater flexibility and control over their Peppol communications.
Original PR description
This commit backport the following: https://github.com/odoo/odoo/commit/2a808bdf5edee14f4f2a1e052ecff4b0aadb1d8d --- Description of the issue this commit addresses: In 17.0, deregistration resets Peppol fully, so users lose both reception and sending instead of only disabling reception. --- Desired behavior after this commit is merged: Users can switch to sender via unregister_to_sender: reception is disabled, but outbound Peppol sending and status updates keep working. --- task-6008121 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr