Daily updates from Odoo
Friday, October 24, 2025
8 changes · master
Resolved issues and error corrections
The Chinese accounting balance sheet report has been corrected so liabilities are classified properly and all relevant lines and accounts are included. This helps businesses using Chinese reporting get balanced, more reliable financial statements and avoids misleading test results.
Original PR description
Fixes the balance_sheet_balanced test for asbe where the wrong line was set as liability. Also fixes the report itself that was ignoring one line, and missing one account. task-5175789 Forward-Port-Of: odoo/enterprise#97720 Forward-Port-Of: odoo/enterprise#97460
Subscription recurring totals now correctly use amounts returned by external tax calculators instead of being recalculated internally. This prevents incorrect totals on subscriptions that rely on external tax services, improving billing accuracy.
Original PR description
sale_subscription now uses `account.tax` to recalculate the tax amounts [1], thus bypassing amounts set by external calculators. For externally calculated orders, we override the recurring_total calculation to restore the previous behavior of calculating the amount using `price_subtotal` on the lines. This field will contain the amount returned by the external calculator. [1] https://github.com/odoo/enterprise/commit/70376f94e9f26e631890312edc0857d9ff37dc7b opw-4964610 Forward-Port-Of: odoo/enterprise#94855 Forward-Port-Of: odoo/enterprise#93054
Field Service users can now see and select task templates from the app even when more than one field service project exists. This fixes a workflow blocker that prevented teams from using predefined task templates in multi-project setups.
Original PR description
**Steps to reproduce:** - Install the industry_fsm module. - Create a new FSM project. - Create a task template under that project. - Go to the Field Service (industry_fsm) app. - Check the Kanban view (dropdown action). **Issue:** When there are multiple FSM projects, users cannot select FSM task templates from the FSM app. **Cause:** The default_project_id is not passed in context. **Fix:** With this change, users can now see and select FSM task templates even when multiple FSM projects exist. task-5139928 Forward-Port-Of: odoo/enterprise#96617
This update fixes several issues when launching AI chat from form views and the systray, including missing message recipients, crashes on some records, and missing record context. It also makes built-in AI agents easier to find and adjust, helping users configure AI behavior without technical workarounds.
Original PR description
Currently: - when using the "Send as Message" button in a chat with an agent (opened from the systray), the default recipients are not added in the composer - creating a default prompt for "get help…
Currently: - when using the "Send as Message" button in a chat with an agent (opened from the systray), the default recipients are not added in the composer - creating a default prompt for "get help on a record" on a model that does not inherit from `mail.trhead` does not work: it's the default "ask ai" chat that is opened when clicking on the "ai" button in the systray from this record's form view ( the "prompt buttons" created are not shown and the record info is not added in the prompt) - clicking on this ai button in the systray from the res.users form view results in a crash (one tries to fetch a thread because the model has a "message_ids" field, but it's a related field and the model does not have a thread) - "system agents" are not shown in the agent views, making it difficult to edit them (while one user could want to change the model used by a system agent if that user does not have an api key for the provider of the default model) With this PR: - adds the default recipients (and creates their related partner if needed, as it would be done when opening the full composer from the chatter) - the info about the current record is always added to the context when using the ai systray button from a form view, even if there's no chatter - the "send as message" and "log note" are added from the launch chat service, only if the model inherits from `mail.thread` (instead of relying on the field `message_ids`) - moved the call to open the ai chat back to the form controller to avoid sending 2 events on the bus (currently systray sends an event to the form controller which in turn sends an event with the model info to the systray), and to make it easier to reuse this "open chat with agent" (shouldn't need to always go through the systray for that) - the "system agents" are now shown in the agents views. Their name/description have therefore been reworked. The website page generator and call summarizer agents are now archived by default, as they are only used in very specific contexts Task-5109721 Forward-Port-Of: odoo/enterprise#95638
The Sign app now converts auto-filled HTML field content into readable plain text in signed PDFs. It also prevents an error when constant multi-line fields are used, helping users complete documents without crashes or unusable formatting.
Original PR description
Before this task, when a html field is used to populate auto value, the html is kept, making it unusable. Moreover, JS error prevent to use constant multi line fields. task-5104647 Forward-Port-Of: odoo/enterprise#95196
This fixes Belgian SEPA payment XML files in the pain.001.001.03 format so they include the required end-to-end payment reference. This helps banks process payment batches correctly and avoids validation issues caused by missing reference data.
Original PR description
The XML of the sepa file in format `pain.001.001.03` in `l10n_be` has a missing `EndToEndId` tag. - Configure the bank to use the `pain.001.001.03` sepa xml format. - Generate a payment using sepa. Create a batch for this payment and validate. - The resulting xml has an empty `EndToEndId` tag. Commit fa08eac141956141bc12c1d5619bd57f487c36e9 removed the end_to_end_id used in the tag. The correct format of the tag is end_to_end_uuid. opw-5150525 Forward-Port-Of: odoo/enterprise#97746
This fix prevents an error when posting work-in-progress accounting entries for manufacturing work orders that are still in progress. Users can now open the WIP wizard as expected instead of being blocked by a traceback.
Original PR description
Issue: - Traceback when calculating the cost of a workorder Step to reproduce: - with apps: mrp, accountant - create a MO for a product - add a WO - confirm - start the WO - Action > "Post WIP Accounting entry" Current Behavior: - get a traceback Expected behaviour - open the WIP wizard Cause of the issue: - to calculate the cost of production, wizard use all WO including the one still running. However as it is still running its end date is registered as `False`. It raises a traceback when it compares the end of the WO with a limit date because `bool` and `datetime.datetime` are not compatible for '<'. Solution: - check if the end date of the WO is defined Test: - in module mrp_workorder an override of button_start change how work order are launched. Therefore, the test should be launched on an Enterprise run. opw-4961873 Forward-Port-Of: odoo/enterprise#97912 Forward-Port-Of: odoo/enterprise#93812
Fixed an issue where grouping sales commission achievements often returned empty results. Business users can now view grouped achievement data reliably, improving commission reporting accuracy.
Original PR description
Before this commit, grouping achievements would result in empty list most of the time. It happened because offset and limit were switched by mistake in the override. As a result an offset of 80 was applied in the request during group by. Forward-Port-Of: odoo/enterprise#97959