Daily updates from Odoo
Navigate
Branch
Sunday, June 22, 2025
18 changes
17 changes
New functionality added to Odoo
The ESG app can now generate employee commuting emissions directly from fleet-based commuting reports for a selected date range. This helps businesses turn commuting estimates into recorded emissions while warning users when the chosen period overlaps with already generated data.
Original PR description
Task-4596253
Enhancements to existing features
List, Kanban, and Form views can now reuse securely stored browser data so pages open faster while fresh information is loaded in the background. If newer data is found, the view updates automatically, and caching can be turned off for specific actions when needed.
Original PR description
This commit implements a caching system for the data used in List, Kanban and Form views, with the aim of increasing loading speed. It modifies the PersistentCache system, introduced in [1], to be able to call a callback (`onUpdate`) when the RPC finishes and the data differs from the cached data. This new callback allows the relational model to re-render the view when the latest data arrives. Please note that, for security reasons, all the stored data in the browser is encrypted using the `AES-GCM` algorithm (see [2]). If necessary, caching of the data could be disabled for a specific action, by setting the `cache` field (introduced in this commit) to `False`. [1] : https://github.com/odoo/odoo/commit/f3d955b3235cb256bda79e834df38da0f6a4ac1a [2] : https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/encrypt#aes-gcm task-id: 4479845 Co-authored-by: Aaron Bohy <aab@odoo.com>
This update improves automated website and portal test tours by explicitly marking steps that navigate away or reload the page. It helps make testing more reliable across appointment, documents, helpdesk, point of sale, sign, planning, and localization flows without changing normal user functionality.
Original PR description
In this commit, we add expectUnloadPage to steps that require it to explicitly declare that the step will cause the page to be unloaded.
Timesheets can now be entered and reviewed in a calendar view, making it easier to plan work across multiple employees and days. This improves data entry speed and helps reduce mistakes when creating many timesheet entries.
Original PR description
Task-4760337
Subscription payment links now take customers to the clearer customer portal page instead of a generic payment page. If the subscription is still a quote, customers are sent to the standard sales order portal flow, making the payment journey easier to understand.
Original PR description
Payment links will redirect the user to the subscription portal view instead of the `/payment/pay` route, which was unclear for the user. When the subscription is still a quote, it will redirect to the Sales Order portal view, following the standard flow logic. task-3087715 See also: - https://github.com/odoo/odoo/pull/162177
Manufacturing order costs can now use the planned duration of a work order when the operation is configured for estimated costing. This helps produce more realistic costs and inventory valuations when workers spend time on an operation but only briefly record activity in Odoo.
Original PR description
The cost of a MO is currently based on the actual time. In the case a worker worked 3 hours but only logged in Odoo to register a serial number, the actual time would only be a few seconds. For this reason, we are adding the possibility to compute the cost based on the duration_expected of the workorder. The conditions to use the duration_expected are: - the workorder is linked to an existing operation - the cost_mode of the operation is set to 'estimated' - there's a duration_expected on the workorder This affects the MO overview and the valuation layers. task 4850419
Resolved issues and error corrections
This update removes outdated setup logic and hidden settings that are no longer needed because Field Service projects are now billable by default. The change helps keep the system simpler and reduces the chance of inconsistent project configuration behind the scenes.
Original PR description
Related to the community PR: https://github.com/odoo/odoo/pull/215114 We remove some unused code about the 'partner_id' blacklist fields, and remove some context keys as we make the projects billable by default now. task-4700746
This update fixes Swiss payroll handling for employee record versions, including occupation period calculations and warning redirects. It also simplifies payroll batch processing by using standard pay runs, helping reduce errors and improve consistency for payroll teams.
Original PR description
In this PR we fix : - The occupation period computation - Employee warning system to get proper redirection on the correct version - Removing the customized batch wizard in favor of payruns - Properly inheriting the hr employee view
Miscellaneous changes
Fixed onboarding document tours which was not working properly. Task-4210376 Forward-Port-Of: odoo/enterprise#72639 Forward-Port-Of: odoo/enterprise#70900
Original PR description
Fixed onboarding document tours which was not working properly. Task-4210376 Forward-Port-Of: odoo/enterprise#72639 Forward-Port-Of: odoo/enterprise#70900
For lot/serial manufactured products with a 'register production' check: - the prefilled lot on MO's form do not appear on Shop Floor - the (+) button always generate a new lot, overwriting the prefilled one We want the Shop Floor to show and take in account the prefilled lot id. task: 4840332 Forward-Port-Of: odoo/enterprise#87163
Original PR description
For lot/serial manufactured products with a 'register production' check: - the prefilled lot on MO's form do not appear on Shop Floor - the (+) button always generate a new lot, overwriting the prefilled one We want the Shop Floor to show and take in account the prefilled lot id. task: 4840332 Forward-Port-Of: odoo/enterprise#87163
This commit reverts the changes made in the following PR: https://github.com/odoo/enterprise/pull/80136. This change implied heavy changes in processes, which are unnecessary. The behavior is reverted to unarchive offer contracts upon applicant signature. task-4805608 Related revert PR: https://github.com/odoo/enterprise/pull/80136 Forward-Port-Of: odoo/enterprise#86207
Original PR description
This commit reverts the changes made in the following PR: https://github.com/odoo/enterprise/pull/80136. This change implied heavy changes in processes, which are unnecessary. The behavior is reverted to unarchive offer contracts upon applicant signature. task-4805608 Related revert PR: https://github.com/odoo/enterprise/pull/80136 Forward-Port-Of: odoo/enterprise#86207
Reproduce: 1. Install Accounting 2. Accounting > Bank: Click on some unreconciled statement line There are some buttons like "Internal Transfer" representing reconciliation models. 3. Delete all reconciliation models. 4. Accounting > Bank: Click on some unreconciled statement line There is a button w/o label. Clicking on it gives an error. (In debug mode the button generation gives an error already) There should be no buttons at all The issue is that the `get_available_reconcile_model_per
Original PR description
Reproduce: 1. Install Accounting 2. Accounting > Bank: Click on some unreconciled statement line There are some buttons like "Internal Transfer" representing reconciliation models. 3. Delete all…
Reproduce:
1. Install Accounting
2. Accounting > Bank: Click on some unreconciled statement line There are some buttons like "Internal Transfer" representing reconciliation models.
3. Delete all reconciliation models.
4. Accounting > Bank: Click on some unreconciled statement line There is a button w/o label. Clicking on it gives an error. (In debug mode the button generation gives an error already) There should be no buttons at all
The issue is that the `get_available_reconcile_model_per_statement_line` can return sth like this in case no reconcilation model was found for statement lines with id 18, 19, 20, 21.
```python
{
18: [{'id': None, 'display_name': None}],
19: [{'id': None, 'display_name': None}],
20: [{'id': None, 'display_name': None}],
21: [{'id': None, 'display_name': None}]
}
```
Since the javascript code assumes that `{'id': None, 'display_name': None}` actually represents a reconciliation model, the error occurs.
After this commit `{'id': None, 'display_name': None}` entries should not appear anymore. In the example an empty dictionary would be returned
task: None
Forward-Port-Of: odoo/enterprise#88140This [commit](https://github.com/odoo-dev/enterprise/commit/43088c9c7cd40fe1c8a088e959a0c8b510990061#diff-58e5e345ff4395ccf7e6c13178e3c909cb18204ffcdceaa7352bd67b9d3432c8) changed the group on the Transfers menuitem button as specified by the specs of its tasks but it was later removed from the specs altough kept in the changes. We realized we did not want that change now and this commit addresses that. task-none Forward-Port-Of: odoo/enterprise#88081 Forward-Port-Of: odoo/enterprise#88019
Original PR description
This [commit](https://github.com/odoo-dev/enterprise/commit/43088c9c7cd40fe1c8a088e959a0c8b510990061#diff-58e5e345ff4395ccf7e6c13178e3c909cb18204ffcdceaa7352bd67b9d3432c8) changed the group on the Transfers menuitem button as specified by the specs of its tasks but it was later removed from the specs altough kept in the changes. We realized we did not want that change now and this commit addresses that. task-none Forward-Port-Of: odoo/enterprise#88081 Forward-Port-Of: odoo/enterprise#88019
We used to display notifications like "We're waiting for your IoT Box to send its devices", that no longer make sense. This commit remove those notifications. Task: 4853242 Forward-Port-Of: odoo/enterprise#88178
Original PR description
We used to display notifications like "We're waiting for your IoT Box to send its devices", that no longer make sense. This commit remove those notifications. Task: 4853242 Forward-Port-Of: odoo/enterprise#88178
In order to detect blackboxes as blackboxes instead of adam scales, without installing `pos_blackbox_be` module, we added it to the list of modules from which we download driver. Task: 4787403 Forward-Port-Of: odoo/enterprise#88064
Original PR description
In order to detect blackboxes as blackboxes instead of adam scales, without installing `pos_blackbox_be` module, we added it to the list of modules from which we download driver. Task: 4787403 Forward-Port-Of: odoo/enterprise#88064
The call to the script downloading and extracting `libeasyctep.so` was returning a traceback if it failed to remount the system readonly. We moved the rw/ro mounting logic from the sh script to the python call to avoid this. Task: 4852374 Forward-Port-Of: odoo/enterprise#88045
Original PR description
The call to the script downloading and extracting `libeasyctep.so` was returning a traceback if it failed to remount the system readonly. We moved the rw/ro mounting logic from the sh script to the python call to avoid this. Task: 4852374 Forward-Port-Of: odoo/enterprise#88045
**Steps to reproduce:** - Install account_budget - Activate "Budget Management" in Accounting settings - Go to "Accounting / Accounting / Analytic Budget" - Create a new budget: * Budget Type: Expense * Period: [this month] * Budget Lines: [a line with an analytic account (AA) in 2 plans] - Open the budget **Issue 1:** Create a PO at the current date with a line having only one of the AA as analytic distribution and an amount higher than the budgeted amount. The PO line and
Original PR description
**Steps to reproduce:** - Install account_budget - Activate "Budget Management" in Accounting settings - Go to "Accounting / Accounting / Analytic Budget" - Create a new budget: * Budget Type:…
**Steps to reproduce:** - Install account_budget - Activate "Budget Management" in Accounting settings - Go to "Accounting / Accounting / Analytic Budget" - Create a new budget: * Budget Type: Expense * Period: [this month] * Budget Lines: [a line with an analytic account (AA) in 2 plans] - Open the budget **Issue 1:** Create a PO at the current date with a line having only one of the AA as analytic distribution and an amount higher than the budgeted amount. The PO line and the Budget button appear in red, but it shouldn't because the analytic distribution of the line doesn't match all the accounts defined on the budget line. The line will not impact the budget, but it appears in red, which is confusing. **Cause 1:** When computing the budget lines linked to the PO line, the domain that is used is only taking into account the plans that are set on the PO line, ignoring the plans that are not set. For the Budget button, all the PO lines are used instead of just those having the correct analytic distribution. **Issue 2:** - Create a PO at the current date with 2 lines: 1) a line with the same AA than the budget line and an amount higher than the budget amount 2) a line with the same AA than the budget line and an amount lower than the budget amount - Save the PO The first line should be red, but it is not. **Cause 2:** When computing the budget lines linked to the PO lines, only the last PO line has its value set. opw-4757067 Forward-Port-Of: odoo/enterprise#87884
1 change
Miscellaneous changes
Forward-Port-Of: odoo/enterprise#88149
Original PR description
Forward-Port-Of: odoo/enterprise#88149