Wednesday, October 22, 2025
17 changes · master
Enhancements to existing features
This update modernizes parts of the online sales rental, stock rental, and subscription areas by replacing older browser code with a lighter standard approach. It helps reduce reliance on an external library, which can make these website shopping features easier to maintain and improve over time.
Original PR description
This PR aim to convert all jQuery code into Vanilla JS in website_sale, this way we will reduce the dependency of jQuery in Odoo codebase. task-3770362
This update tidies the return flow used after Stripe-related expense actions. It improves maintainability and consistency without introducing a significant change for everyday users.
Original PR description
Forward-Port-Of: odoo/enterprise#97765
This update reorganizes how several website-related widgets load their supporting content, moving it into a dedicated bundle that is loaded only when needed. This should make pages lighter and improve maintainability without changing the visible user experience.
Original PR description
This pr moves static xml files of JS widgets from assets_frontend bundle to new bundle and that bundle is loaded with assetLibs property of JS widget. task-4146919
This update restores automated checks for the OCR manual correction experience, helping ensure users can reliably adjust extracted document data. It broadens coverage for field availability, rectangular selection, and smart line handling, reducing the risk of regressions in future changes.
Original PR description
Commit 935b25f has refactored and improved the boxes interface of the OCR, but, due to the lack of time (19.0 freeze), the tests were removed as they needed to be rewritten. This commit re-introduce the tests in a more generic fashion by moving them directly into the mixin instead of inside the `account_invoice_extract` module and it also covers the new features: - Availability on all fields. - Rectangular selection. - Smart line creation/filling for x2many fields. Related to task-[5055731](https://www.odoo.com/odoo/project/2068/tasks/5055731) Forward-Port-Of: odoo/enterprise#95778
This change streamlines how IoT device keyboard settings are updated by combining two related actions into one. It reduces unnecessary communication with the IoT Box, helping device setup and configuration run more efficiently.
Original PR description
`_update_layout` keyboard action method now also calls `_save_is_scanner` to reduce the number of call from the db to the IoT Box. Community PR: [https://github.com/odoo/odoo/pull/186326](https://github.com/odoo/odoo/pull/186326)
Resolved issues and error corrections
This fix makes scheduled product image lookups more reliable by replacing an inefficient safeguard with a cleaner scheduling approach. It also reduces unnecessary background processing overhead, helping keep broader scheduled task creation efficient.
Original PR description
Remove `_check_image_cron_is_not_already_triggered` because: - It doesn't work in batch mode due to `self.cron_id.id`. - It increases the cost of creating a cron trigger because the reference lookup (`ref`) makes at least one extra query. (We want to keep cron trigger creation efficient since it is used everywhere.) - Because of this constraint, there is an extra commit in `_trigger_fetch_images_cron` that is inefficient and error-prone, serving no purpose. Keep the intended effect of the constraint by removing the existing cron trigger before the new one is created, ensuring the time offset is respected. Forward-Port-Of: odoo/enterprise#97411
Fixed an issue where undoing automatic rescheduling in the Gantt planning view could trigger an error instead of restoring the previous schedule. This helps manufacturing planners safely use auto-reschedule and undo changes without interrupting their workflow.
Original PR description
When rescheduling workorders in mrp's Planning by Workcenter using Auto-Reschedule mode and then Undo-ing, a bad query error occurs, due to
WHERE "mrp_workcenter"."id" IN ('m', 'r', ...
This comes from web_gantt_reschedule returning something like
{'3': {'date_finished': '2025-10-20 11:43:51',
'date_start': '2025-10-20 09:43:51',
'workcenter_id': 'mrp.workcenter(1,)'}}
Forward-Port-Of: odoo/enterprise#97717Belgian reporting fields now respect the right access group when the Accountant app is not installed. This prevents users from seeing access errors and keeps the fields hidden when they are not available to them.
Original PR description
This commit fixes the access right problem for `l10n_be_region_id` and `l10n_be_company_type_id` when `accountant` is not installed. When `accountant` is not installed and users have `l10n_be_reports` installed, an access error was raised when these fields were accessed. A group `account.group_account_user` is added to these fields such that they become invisible when when `accountant` is not installed. task-5156687 Forward-Port-Of: odoo/enterprise#97759
Shopee orders that are delivered but still waiting for buyer confirmation will now be treated as a normal delivery state instead of an error. This prevents unnecessary error flags and helps teams track Shopee deliveries more accurately in Odoo.
Original PR description
When the delivery order is delivered but not yet confirmed by the buyer, an error state is set in the delivery order. 'TO_CONFIRM_RECEIVE' should be included in the delivery status. It refers that the package is delivered but not confirmed by the buyer. It should not be regarded as an error state in Odoo. task_id: 4965896 Forward-Port-Of: odoo/enterprise#97613
A test for selecting an invalid rental period on the website shop was adjusted to avoid inconsistent failures caused by timing issues. This helps keep automated checks stable so future changes to online rental flows can be validated more reliably.
Original PR description
This blows up locally, but apparently not on runbot. It's also extremely odd because splitting the 4 operations into separate steps does not fix the issue (let alone just adding a timeout before performing both the edition and the tabbing), only when everything is the same `run()` step does it reliably fix the issue. Also apparently only necessary for the `end` step, not either of the `start` steps. <insert confused nick young>
This fix prevents an error when settling invoices in Point of Sale if a customer's related commercial partner details were not fully loaded. The process now uses the already available partner ID, making invoice settlement more reliable for users.
Original PR description
Before this commit, it was possible that commercial_partner_id was not loaded, which caused an error when settling an invoice. This commit fixes the issue by avoiding the need to load the full partner record. Since only the partner ID is required to load the account move, it is now read directly from the raw data, which already includes the ID. opw-5112883 Forward-Port-Of: odoo/enterprise#96828
The spreadsheet collaborative status tooltip now appears in the user's selected language. This improves consistency for multilingual users and avoids untranslated interface text in collaborative spreadsheet workflows.
Original PR description
Tooltip in collaborative status component was not translated. Task: 5164097 Forward-Port-Of: odoo/enterprise#97075
Features or functions removed from Odoo
A web_studio-specific check for saving embedded fields was removed because that behavior now belongs in the website area. This keeps responsibilities clearer internally and should not affect day-to-day users.
Original PR description
`save_embedded_field` is being moved to website, as it's website-specific. This check is not necessary anymore. task-5065980
Code cleanup and technical improvements
The SEPA Direct Debit module now reuses an existing calculation when checking online payment status and related payment counts. This reduces duplicate processing behind the scenes, which can improve efficiency without changing user workflows.
Original PR description
The compute methods for the `is_online_payment` and `payment_transaction_count` fields rely on exactly the same read_group. This commit refactors the `_compute_is_online_payment` method to reuse the result of the computation of `_compute_payment_transaction_count` in cache, thus avoiding two `_read_group` calls.
This update replaces older jQuery-based frontend code with modern standard JavaScript across several Odoo areas. It should help keep the platform easier to maintain and prepare these customer-facing pages for future improvements without changing business workflows.
Original PR description
task-3770362
This update standardizes how true/false values are checked across several Odoo apps. It is an internal code cleanup that should not change user workflows, but helps keep the system easier to maintain and less prone to subtle inconsistencies.
Original PR description
odoo/odoo#220171
The IoT box update process has been cleaned up by removing outdated logic and unnecessary checks. This makes the update flow easier for support teams to troubleshoot, with minimal direct impact on users.
Original PR description
The update box method had old unsupported code, and redundant checks. It has been simplified to ease debugging.