Monday, July 14, 2025
3 changes · saas-18.4
Enhancements to existing features
Website form builders can now let dropdown selection fields start with no value when the field is not required. This restores expected flexibility for form visitors and helps businesses collect responses without forcing an unnecessary selection.
Original PR description
Before this commit, users did not have an option to leave the selection field blank in the website form even though it's not set to required. The feature was introduced in commit [1] but was lost when introducing `html_builder`. In this commit, we reintroduce the feature that allows users to choose whether they want the selection field to be required or not. [1]: https://github.com/odoo/odoo/commit/34ddd5dd6a036792c44b865cb7a4671f4ca033cf task-4367641
Bank reconciliation now loads potential journal items much faster by simplifying how company filters are applied. This can significantly reduce waiting time for finance teams working with very large accounting databases.
Original PR description
This fix aims to avoid a subquery in the main query and instead use a
IN clause to improve search performance.
On a database with over 37 million journal items, before the fix, the
query to load the 40 potentials journal items to reconcile in the bank
reconciliation widget took around 50 seconds; after the fix, it take
only 3 seconds (with only 1 company to filter).
Subquery when 'child_of' is used:
```
...
AND (
"account_move_line"."company_id" IN (
SELECT
"res_company"."id"
FROM
"res_company"
WHERE
("res_company"."parent_path" LIKE '1/%')
)
)
```
Query after the fix:
```
...
AND ("account_move_line"."company_id" IN (1))
```
opw-4896863
Forward-Port-Of: odoo/odoo#218700
Forward-Port-Of: odoo/odoo#218034The production planning screen now reloads only the schedules currently visible to the user instead of every affected schedule in the background. This makes updates much faster in complex manufacturing setups, reducing a benchmarked reload from 31.6 seconds to 3.5 seconds.
Original PR description
Description ----------- Only fetch forecasts for MPS schedules visible in the view rather than all impacted schedules. Schedules not visible due to pagination are skipped when reloading the MPS state. Benchmark --------- Adjusting a quantity for a product, which will impact around 1k+ other schedules (hierarchy is deep with boms), `get_production_schedule_view_state` takes: | Before | After | Speed-up | |--------|-------|----------| | 31.6s | 3.5s | 9x | Reference --------- opw-4778588 Forward-Port-Of: odoo/enterprise#87299