Daily updates from Odoo
Monday, November 10, 2025
13 changes
1 change
Enhancements to existing features
This change makes checking bank statements for errors significantly faster. It reduces the database work needed for this task, which helps the system respond more quickly and lowers load on the database.
Original PR description
Description ----------- Avoid self-join of `account_bank_statement` that is done with a `Nested Loop` due to the `LATERAL`. Even if correlated, it requires two separate accesses to its index. Replaces it with a window function + `LAG` partitioned by the `journal_id`. This leads to a simpler plan (lower cost) and working in-memory instead of accessing disk pages (lower IO contention). Benchmark --------- On a database with 46k `account_bank_statement`, calling `_get_invalid_statement_ids` for all statements took: | [Before](https://explain.dalibo.com/plan/7605a4ddc42afbcf) | [After](https://explain.dalibo.com/plan/88d6ac1gee37aha3) | Speed-up | |--------|-------|----------| | 146ms | 72ms | 2x | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232980
1 change
Enhancements to existing features
This change speeds up the check that finds invalid bank statements. It reduces database work, which makes the validation run about twice as fast and lowers load on the system.
Original PR description
Description ----------- Avoid self-join of `account_bank_statement` that is done with a `Nested Loop` due to the `LATERAL`. Even if correlated, it requires two separate accesses to its index. Replaces it with a window function + `LAG` partitioned by the `journal_id`. This leads to a simpler plan (lower cost) and working in-memory instead of accessing disk pages (lower IO contention). Benchmark --------- On a database with 46k `account_bank_statement`, calling `_get_invalid_statement_ids` for all statements took: | [Before](https://explain.dalibo.com/plan/7605a4ddc42afbcf) | [After](https://explain.dalibo.com/plan/88d6ac1gee37aha3) | Speed-up | |--------|-------|----------| | 146ms | 72ms | 2x | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232980
7 changes
Enhancements to existing features
Australian payroll now handles flexible employee benefits through salary-rule based inputs rather than separate employee version fields. This aligns the localization with the newer benefits system, making benefits easier to manage consistently in payroll calculations, reporting, and related accounting flows.
Original PR description
purpose: adapting the new system of flexible benefits coming from salary rules for au localization - adapted the fields in `hr.version` to become salary rules with `condition_select` as `property_input` which makes it appear in the input section Task: 5122332
Payroll now alerts users when a payslip's net pay is zero or negative. This helps payroll teams spot unusual or potentially incorrect payslips before processing, reducing the risk of payment mistakes.
Original PR description
If the net pay for the payslip is either less than or equal to zero, a warning message will appear
Saudi payroll employer costs now include allowances and company-paid items such as work permits, iqama, and medical insurance, giving businesses a fuller view of employment expenses. Immigration-related employee fields are also shown only when relevant and grouped with employer costs for clearer payroll management.
Original PR description
Previously, the Employer Costs section only considered the employee's basic wage and did not include additional expenses such as allowances or work permit/visa-related fees. This improvement updates the employer cost calculation to include: - Allowances (housing, transportation, and other) - Work permit, iqama, and medical insurance costs At the payslip level, the following salary rules now contribute to the employer costs: - Net - GOSI - Company Contribution - GOSI - Employee Contribution - Medical Insurance (Company Contribution) - Iqama (Company Contribution) - Work Permit (Company Contribution) Additionally: - Fields related to immigrant workers are now only visible for non-Saudi employees. - These fields have been moved under the Employer Costs section. Task - 5064850
The UAE payroll payment report has been adjusted to match Dubai Islamic Bank's expected WPS format, helping businesses submit salary payments with fewer bank rejections. A scheduled monthly update was also added to keep employee leave day values current for payroll processing.
Original PR description
The format of the payment report has been adjusted to adhere to the expected format of Dubai Islamic Bank.
Payroll percentage and rate fields are now stored consistently as fractional values and displayed using the percentage format. This improves clarity and consistency across payroll screens, reports, demo data, and tests in several country-specific payroll modules.
Original PR description
Generalised the definition of fields displayed as percentages to be fractional numbers (ratio of 1.0) rather than whole numbers (ration of 100.0), and used the percentage widget to display them all. task-4987743
Saudi Arabia payroll now has a dedicated payslip printout that better matches local payroll expectations. The report removes fields that are not needed for this localization and adjusts the layout to make payslips clearer and more relevant for Saudi employees and payroll teams.
Original PR description
- Introduce a dedicated payslip printout tailored for Saudi localization. - Remove unnecessary fields from the default format and adjust the layout to match Saudi payroll requirements. Task: 5126583 Forward-Port-Of: odoo/enterprise#96373
This update improves how records are loaded in several Odoo apps, reducing unnecessary database work while keeping computed information accurate. Users should see more reliable behavior in affected areas such as projects, appointments, payroll, assets, knowledge, and Amazon sales integrations.
Original PR description
Fix a computed field which is now called with several records because of better prefetching.
3 changes
Enhancements to existing features
The bank statement validation check was optimized to run much faster by using a more efficient database query. This reduces processing time and database load, which can help the accounting app respond more quickly when checking many statements.
Original PR description
Description ----------- Avoid self-join of `account_bank_statement` that is done with a `Nested Loop` due to the `LATERAL`. Even if correlated, it requires two separate accesses to its index. Replaces it with a window function + `LAG` partitioned by the `journal_id`. This leads to a simpler plan (lower cost) and working in-memory instead of accessing disk pages (lower IO contention). Benchmark --------- On a database with 46k `account_bank_statement`, calling `_get_invalid_statement_ids` for all statements took: | [Before](https://explain.dalibo.com/plan/7605a4ddc42afbcf) | [After](https://explain.dalibo.com/plan/88d6ac1gee37aha3) | Speed-up | |--------|-------|----------| | 146ms | 72ms | 2x | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232980
When a website uses the cookie bar, new Google Fonts will now default to not loading directly from Google. This helps websites stay more aligned with GDPR expectations, and the updated help text makes the privacy impact clearer for users setting up fonts.
Original PR description
__Current behavior before commit:__ When the cookies bar is installed, Google fonts are still loaded from Google servers by default, which may violate GDPR requirements. See the PR adding the "Serve from Google"[1] option for more details. __Description of the change:__ If the cookies bar is enabled, it likely means that the website needs to be GDPR compliant. In this case the "Serve from Google" option is disabled by default when adding a new Google Font, preventing it from being served from Google servers. The tooltip and setting help text are also updated to clarify GDPR implications. [1]: https://github.com/odoo/odoo/pull/101129 task-5111612
Discuss now includes a dedicated live chat category for conversations marked as "Looking for Help." Agents also see a star indicator on chats that match their expertise, helping them spot and respond to the most relevant conversations faster.
Original PR description
Add a live chat category in the Discuss app that allows live chat agents to easily identify conversations marked as "Looking for Help." A star icon is added next to conversations that match the agent's expertise, making it easier to assist with conversations related to their area of expertise. part of task-5190237.
1 change
Enhancements to existing features
This change speeds up the calculation of accounting move amounts by preparing required data in advance instead of repeatedly loading it on demand. It significantly reduces processing time, memory use, and database queries when handling very large reconciliations, making large accounting operations much faster and more efficient.
Original PR description
Currently performance on `_compute_amount()` is bottlenecked by `__get__()` calls on fields on `line_ids`. We tackle this bottleneck by warming the cache with `fetch()` Benchmark on reconciling 2 account moves with ~70k lines each | |Total Time|Allocated Memory|Queries| |----------|----------|----------------|-------| |Before |43.23s |2GB |993 | |After |18.60s |1GB |693 | opw-5098543