Daily updates from Odoo
Thursday, July 17, 2025
16 changes · master
Security fixes and vulnerability patches
Websocket messages sent to IoT Boxes are now signed with a database-generated token to confirm they come from a valid Odoo user. This strengthens trust in IoT communications and helps prevent unauthorized messages from reaching connected devices.
Original PR description
As websocket messages to IoT Boxes are sent from the Odoo client, we need to ensure it is sent from a valid user. We then sign using the database generated token (same as longpolling requests). Community PR: odoo/odoo#218139 Task: 4933216 Forward-Port-Of: odoo/enterprise#89849
New functionality added to Odoo
Odoo Expense now integrates with Stripe Issuing so companies can create a connected Stripe account and manage employee expense cards from Odoo. The update adds support for physical cards, including delivery notifications and a pending activation state to help control when cards become usable.
Enhancements to existing features
Several selection menus in Studio and related Odoo apps were updated to match the latest interface component. This keeps configuration screens and automated checks working consistently after the underlying menu behavior changed.
Original PR description
*: ai_fields, delivery_easypost, knowledge, l10n_test_website_sale, web_gantt, website_helpdesk_forum This commit adapts some usecases of the SelectMenu in the Sidebar and other parts of studio and other modules. The commit also changes the way carrier type selection is tested, since the field component no longer use a <select> element, but require the SelectMenu component instead.
HR screens and related payroll workflows now use the clearer label “Employee Record” instead of “version.” This makes employee information easier for HR teams to understand and navigate across contracts, payroll, and Belgian Dimona processes.
Original PR description
In this PR, we renamed the version to 'Employee Record' for a better UX. Related task: 4921404.
Resolved issues and error corrections
This change adjusts the Sendcloud delivery integration to address an issue related to multi-package shipments. It helps reduce unexpected behavior when processing deliveries through Sendcloud, though the draft status suggests the fix may still be under validation.
Original PR description
Just a little test
Fixed an issue that caused an error when submitting the basic UAE VAT201 tax return. The system now uses the correct VAT return process instead of treating the report as a Corporate Tax report, helping users submit returns without interruption.
Original PR description
When submitting a tax return for the basic AE tax report (VAT201 Form), a traceback was being thrown. The issue arose because the report was considered to be the Corporate Tax report instead of the VAT201, and was trying to apply some incompatible computation. task-4935937 Forward-Port-Of: odoo/enterprise#89951
Applicant salary offers now create only one contract version when the offer process is completed. This avoids duplicate records for newly created employees, making offer follow-up and employee setup clearer.
Original PR description
Current Behavior: When you send an offer to an applicant it will create two versions at the end of the process: https://tinyurl.com/253j3683. Behavior after PR is merged: When you send an offer to an applicant it will only create one version* for the employee created from the applicant. Change: Removed the unnecessary initial version created for fresh employee records coming from applicants' offers. *: note that this new version will be active, even when awaiting full signature, this might be acceptable since the fresh employee record would be archived, which is different from existing employees offers, where the employee remains active, and the new version is archived till full signature. Task-4903960 Forward-Port-Of: odoo/enterprise#88890
The Peru stock reporting module now uses the correct product category reference when generating Stock Move PLE valuation reports. This prevents an error that blocked users from opening the PLE 13.1 report in certain date scenarios, improving report reliability for Peruvian inventory compliance.
Original PR description
Currently, an error occurs during the valuation of the Stock Move PLE reports. Steps to Reproduce: - Install the `l10n_pe_reports_stock` module. - Create a `new company` with the country set to…
Currently, an error occurs during the valuation of the Stock Move PLE reports. Steps to Reproduce: - Install the `l10n_pe_reports_stock` module. - Create a `new company` with the country set to `Peru`, and switch to this company. - Go to `Receipts` in `Inventory`, create a `new receipt`, and `validate` it. - Go to `Valuation` and click on `PLE Reports`. - Select the `start date` as the day after today, and click on `PLE 13.1`. `KeyError: 'category'` This error occurs during the valuation of the Stock Move PLE reports. In the query, we retrieve product_template.categ_id as category_id [1], but later category [2] is used to access category_id. Since the category key is not present in the line, this causes the error. [1] https://github.com/odoo/enterprise/blob/95d20fca13efa0977018b0dc260efd410891fce6/l10n_pe_reports_stock/wizard/stock_move_ple_report.py#L241 [2] https://github.com/odoo/enterprise/blob/95d20fca13efa0977018b0dc260efd410891fce6/l10n_pe_reports_stock/wizard/stock_move_ple_report.py#L303 This commit ensures that category_id is used in place of category for safe evaluation. sentry-6723761615 Forward-Port-Of: odoo/enterprise#89379
The Luxembourg payroll configuration now uses the latest official Bonus-Malus accident insurance factor, removing an outdated value that is no longer valid under current regulations. This helps Luxembourg companies keep payroll settings aligned with social security requirements.
Original PR description
**Problem**: =========== Bonus-Malus Factor l10n_lu_accident_insurance_factor, the value 0.9 is no longer used according to an update in Luxembourg regulations. Found the legal documentation from Luxembourg's social security institutions page: https://www.secu.lu/assurance-accidents/reglements/ **To Reproduce**: ================== -> install l10n_lu_hr_payroll -> switch to Luxembourg company -> settings -> filter with Bonus-Malus Factor **Solution**: =========== Update Bonus-Malus Factor https://github.com/odoo/upgrade/pull/8088 opw-4818034
This update fixes an issue that caused automated checks for Australian payroll accounting to fail after a fiscal year change. It helps keep payroll reporting validation stable and reduces the risk of false test failures during ongoing maintenance.
Original PR description
Tests failed on runbot: https://runbot.odoo.com/odoo/runbot.build.error/228503 Forward-Port-Of: odoo/enterprise#89923
This fixes an issue where DHL and USPS shipping could use the wrong package details when both connectors were installed. Package information is now kept separate for each carrier, helping avoid incorrect shipping data being sent.
Original PR description
Forward-Port-Of: odoo/enterprise#89771
Deferred accounting entries are now created even when the period is shorter than one month, such as a few days at the end of a month. This helps ensure revenue or costs are allocated accurately for short invoice periods and avoids missed accounting entries.
Original PR description
Previously, `_get_deferred_periods` would return an empty list when the deferral period was contained within a single month and matched the invoice date's month, even if the period spanned multiple days. This caused deferred entries to be skipped for valid short deferral spans (e.g. June 25 to June 30). This fix removes the condition that filters out single-month deferral periods, ensuring that deferred entries are always generated when a valid start and end date are present. This change supports accurate pro-rata allocation even for invoice periods shorter than one month, aligning the accounting behavior with expected financial standards. task-4910854 Forward-Port-Of: odoo/enterprise#89114
This fixes financial report handling so reports that need a temporary currency table are not sent to read-only database servers. It helps prevent report failures by ensuring these requests use a server that can create the required temporary data.
Original PR description
https://github.com/odoo/enterprise/commit/639a5b338b9e0ed080339f25830f0373dae4d7e5 mistakently removed that condition. The currency table is still created as a temporary table ; so it prevents using readonly servers.
This fix makes Knowledge handle optional information more safely when it is not provided. It helps prevent unexpected errors and keeps article-related actions working reliably for users.
Original PR description
Just be sure when using an argument that can be False instead of a dict. Task-4845982 Forward-Port-Of: odoo/enterprise#90285 Forward-Port-Of: odoo/enterprise#90254
This fix updates UAE and Austrian tax report handling to use the current warning mechanism. It helps prevent report processing issues caused by outdated internal logic, with no expected change to normal user workflows.
Original PR description
The warning argument in the _custom_line_postprocessor no longer exists since a few versions and _customize_warnings need to be used instead. task-4938563
Miscellaneous changes
Before this commit, when a recurring order_line had an invoice_policy "order" and the quantity was 0, it would be added to the invoice. taskid: 4841550 Forward-Port-Of: odoo/enterprise#87990 Forward-Port-Of: odoo/enterprise#86870
Original PR description
Before this commit, when a recurring order_line had an invoice_policy "order" and the quantity was 0, it would be added to the invoice. taskid: 4841550 Forward-Port-Of: odoo/enterprise#87990 Forward-Port-Of: odoo/enterprise#86870