Daily updates from Odoo
Friday, January 30, 2026
7 changes · saas-18.2
Resolved issues and error corrections
This update fixes an error in the French Profit and Loss report where account 649 was incorrectly placed. The change aligns the report with French accounting standards (PCG 2025 & 2026) by correctly categorizing this account within Wages and Salaries and Social Security Charges. This ensures accurate financial reporting for French businesses using the Odoo Enterprise solution.
Original PR description
## Issue In the *Profit and Loss* report for the French localization (`l10n_fr_reports`), the account 649 was mentioned in the *"Reversals of provisions (and depreciation), expense transfers"*…
## Issue
In the *Profit and Loss* report for the French localization (`l10n_fr_reports`), the account 649 was mentioned in the *"Reversals of provisions (and depreciation), expense transfers"* section, instead of *"Wages and salaries"* and *"Social security charges"*. This classification is described in the *"Recueil des normes comptables françaises"* (Versions [2025](https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/Reglements/Recueils/PCG_Janvier2025/Recueil-NF-Janvier-2025.pdf) and [2026](https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/recueil/RECEUIL-PCG-2026-AVEC-COUVERTURE.pdf)).
## Steps to reproduce
1. Install *France - Accounting Reports* (`l10n_fr_reports`)
2. Go to the *Profit and Loss* report
3. In debug mode, click the information buttons on the following rows:
- *Reversals of provisions (and depreciation), expense tranfers*: **649 is mentioned**
- *Wages and salaries*: **649 is not mentioned**
- *Social security charges*: **649 is not mentioned**
## Note
The account 649 was added at the beginning of the formula for the *"Wages and salaries"* section in order to respect a logical order. In the *"Social security charges"* formula, since no logical order appears to be used, the account was added at the end.
opw-5724559
Forward-Port-Of: odoo/enterprise#105856
Forward-Port-Of: odoo/enterprise#105474This update corrects a bug that prevented visitors from being displayed correctly when using the 'Today' filter in the Frontdesk module. The issue stemmed from incorrect timezone handling during filtering, which caused inaccurate results for users in non-UTC time zones. The fix converts all date/time values to UTC before querying, ensuring accurate visitor filtering regardless of the user's location.
Original PR description
Steps to reproduce -------------------------- 1. Install Frontdesk 2. Go to Frontdesk → Visitors 3. Create a visitor with a check-in time before today 05:30 (local timezone: Asia/Kolkata) 4. Check visitors Issue: -------- The created record is not displayed because "today" filter used the user's local date to build a datetime range but failed to convert those boundaries to UTC before querying the database, leading to incorrect filtering in non-UTC time zones. Solution ------------- Convert those datetimes to UTC using `.to_utc()` in the filter domain opw-5385995 Forward-Port-Of: odoo/enterprise#102865
This update addresses a small technical issue that prevented the online accounting synchronization feature from functioning correctly. A missing space in a route definition was corrected, ensuring the synchronization process operates as intended. This ensures seamless data updates between our cloud-based accounting system and local versions.
Original PR description
During this forward port: https://github.com/odoo/enterprise/commit/a5b9372ca0b23151046c14c9a8ead0ed9cd46b80 there was a missing space in the route. no task id Forward-Port-Of: odoo/enterprise#105849
This update resolves a bug where the input field for campaign tests would disappear when cleared. The fix adds a configuration to ensure the field always displays correctly, preventing users from needing to close and reopen the dialog to re-enter information. This improves the user experience for campaign testing.
Original PR description
Steps to reproduce: 1. Install `marketing_automation` 2. Create a campaign with activity and click on `Launch a test` button 3. Clear the input field and then click outside the input area Issue: -…
Steps to reproduce: 1. Install `marketing_automation` 2. Create a campaign with activity and click on `Launch a test` button 3. Clear the input field and then click outside the input area Issue: - The input area has disappeared. Now, the only way to get it back is by closing the dialog and reopening it Cause: - Field `resource_ref` uses `hide_model: True`, and when cleared, the widget has no value and no model selector to determine the target model because of the function `getRelation` that now returns `undefined`, by this XML fails to render the `<Many2OneField/>` https://github.com/odoo/odoo/blob/7680b83501cef18362be38f90715d824f2bf9cd6/addons/web/static/src/views/fields/reference/reference_field.js#L107-L119 Solution: - Add `model_field: model_id` option to the view so the widget can resolve the model from the `model_id` field even when input is empty Note: - This behavior also occurs in other places. After discussion with the framework team, we agreed to keep the scope of this PR limited to marketing_automation, as this is not a priority issue. A broader fix can be addressed in the master if needed. opw-5473320 Forward-Port-Of: odoo/enterprise#104547
This update fixes a technical error that could occur when changing the timesheet invoicing policy after a sales order was created and then the user who created it was deleted. The change ensures the system correctly handles scenarios where the original user's information is no longer available, preventing a traceback and maintaining proper invoicing calculations.
Original PR description
Steps to reproduce: 1. Create a new user in the database 2. Create a new sales order as the new user 3. Add an order line where the product is of type "Service" and has an invoicing policy of "Based on Timesheets" 4. Confirm the sales order 5. Sign out of the new users account and sign in as admin 6. Delete the newly created user 7. Go into Settings > Timesheets > Invoicing Policy 8. Attempt to change the policy to "Validated timesheets only" 9. Save your changes 10. Observe the traceback The `if` statement would trigger if any record in the recordset had a `create_uid`, which would cause a traceback if the first record in the recordset happened to not have a `create_uid`. This can occur if the user who created a given sale order is deleted from the database. This change will ensure that the function correctly falls back to the currently signed in user if the sale order create_uid doesn't exist. opw-5868538 Forward-Port-Of: odoo/enterprise#105687
This update ensures that when an upsell is confirmed on a subscription, all other related upsells are automatically cancelled. Previously, multiple upsells would remain in a 'sent' state, leading to potential billing issues. This change improves subscription management accuracy and prevents incorrect charges.
Original PR description
Currently, when creating multiple upsells for a specific subscription, confirming one of them leaves the others in the sent state instead of cancelling them. This fix ensures that all other upsells for the same subscription are cancelled once one upsell is confirmed. task-5270139 Forward-Port-Of: odoo/enterprise#105694 Forward-Port-Of: odoo/enterprise#100058
This update adjusts the way product prices are stored within Odoo Enterprise to ensure greater accuracy and consistency. The change addresses a technical issue identified in previous testing, improving data reliability. This update primarily impacts financial reporting and inventory management.
Original PR description
Fix tests, related to https://github.com/odoo/odoo/pull/243987 task-4895014 Forward-Port-Of: odoo/enterprise#104728