Daily updates from Odoo
Monday, September 1, 2025
23 changes · master
Enhancements to existing features
Document-related settings have been reorganized across several connected Odoo apps, making configuration easier to find and understand. This should reduce setup friction for teams using Documents with accounting, approvals, fleet, recruitment, products, projects, or signing workflows.
Original PR description
\* includes: documents_account, documents_approvals, documents_fleet, documents_hr_recruitment, documents_product, documents_project, and documents_sign. This commit simply reorganize all those bridges settings. Task-4910842
VoIP call session handling has been reorganized into a dedicated structure, making the call experience easier to maintain and extend. This supports ongoing improvements in VoIP and AI-assisted VoIP features without changing the core user workflow.
Original PR description
Introduce a Session class to hold the ever-growing amount of session-related logic.
The office printer test action now prints a PDF report instead of a basic test output. This makes printer checks better match real business documents and helps users confirm that report printing works as expected.
Original PR description
When clicking "test" on an office printer, we now print a pdf report, making the test print more realistic. Forward-Port-Of: odoo/enterprise#92531
The HR work entry export employee list now shows the "Contracts" column header with consistent capitalization. This small wording polish improves readability and presentation quality for payroll users exporting work entry information.
Original PR description
Capitalized the "Contracts" column header in the HR work entry export employee list view Task ID: 5047763
The Indian reporting feature has been decoupled from the electronic signature app. This reduces unnecessary app dependencies, making setup and maintenance simpler for businesses that only need reporting.
Original PR description
This commit removes dependency between `l10n_in_reports` and `sign` module.
Resolved issues and error corrections
This fix makes the French VAT report wizard handle incomplete draft records safely, avoiding crashes during automated checks or setup flows. It ensures VAT amounts are recalculated when key report dates or report selections change, improving reliability without changing the visible reporting workflow.
Original PR description
steps to reproduce the issue : 1- install l10n_fr_hr_payroll_account without demo data 2- and run this test .test_computed_fields_without_dependencies Added a dependencies using…
steps to reproduce the issue :
1- install l10n_fr_hr_payroll_account without demo data
2- and run this test .test_computed_fields_without_dependencies
Added a dependencies using @api.depends('report_id', 'date_from', 'date_to') on the _compute_vat_amount method to ensure automatic re-evaluation when any of these fields change.
In test_computed_fields_without_dependencies, the record is created using model.new(), which means required fields like report_id, date_from, and date_to may not be set yet. This caused a crash due to ensure_one() on an empty report_id.
Even though these fields are required, they are not automatically filled when using model.new() (unlike saved records).
Also introduced early exits by setting default values (vat_amount = 0.0, is_vat_due = False) and skipping computation when any of the required fields (report_id, date_from, date_to) or result VAT lines are missing because of ensure_one() in options.
These safeguards prevent errors in the test
build_error-115299
Forward-Port-Of: odoo/enterprise#87608Bank statements can now be created even when a bank journal has no outstanding receipt or payment account configured. This prevents an error that blocked users during statement creation in Accounting.
Original PR description
**Steps to reproduce:** - Install Accounting - Make sure that no outstanding receipt/payment account is configured on the Bank journal - Go to the Bank journal - Create a new statement **Issue:** A traceback is raised while executing a SQL query. **Cause:** A IN condition is evaluated with an empty tuple: `AND aml.account_id IN ()` This is due to the fact that there is no outstanding account. **Solution:** Only execute the SQL query if there is an outstanding account. opw-5039931 Forward-Port-Of: odoo/enterprise#93091
The Estonian tax report XML export now avoids creating duplicate 22% tax transaction entries. It combines the relevant report line balances into a single XML entry, helping businesses submit cleaner and more accurate tax reports.
Original PR description
Before this pr: - There are two transactions22 entries were introduced because we are having two report lines for 22% tax computation, one with '1' tag, which is valid till 31 June 2025, and another one with '1_2' tag, which is valid from 1 July 2025. After this pr: - The balance computation during export to XML is now adding the balance of both line '1' and '1_2' into line '1' only. - So now we do not need an extra transactions22 entry in the XML tax report. - We are keeping both report lines for now, but the XML report will have only one entry with the total sum of balances in both report lines Related PR: https://github.com/odoo/enterprise/pull/91364 Forward-Port-Of: odoo/enterprise#93298 Forward-Port-Of: odoo/enterprise#92662
The French VAT reporting process now uses the correct account when creating reimbursement entries. This helps ensure reimbursement accounting is posted accurately and reduces the need for manual corrections.
Original PR description
This commit will change the account used for the reimbursement move. task-4932427 Forward-Port-Of: odoo/enterprise#91212
The timesheet leaderboard now correctly shows the tip of the day when the leaderboard feature is enabled. This restores expected guidance for users viewing leaderboard dialogs and timer grid screens.
Original PR description
Steps to Reproduce: -- - Open timesheet module - Go to setting and enabled leaderboard feature - Open leaderboard dialog and there you will be able to see tip of the day is not visible Issue: -- The issue was even after enabling the leaderboard feature the tip of the day was not visible inside the leaderboard dialog which is unexpected behaviour. Cause: -- The root cause was inside the getLeaderboardData method call where we were not fetching tip from the orm call and the issue is caused by this PR https://github.com/odoo/enterprise/pull/78541 Fix: -- To resolve this, I have include tip while making orm call also store that tip value inside leaderboardData task-4981767 Forward-Port-Of: odoo/enterprise#92811
Gantt popover cards now show standard labels such as Name, Start, and Stop in the user's selected language. This improves the experience for non-English users when viewing custom Gantt menus created through Studio.
Original PR description
Steps to Reproduce: - Change the language to something other than English. - Create a new menu in the Appointment module using Studio. - Link that menu with the existing model (Resource Time of…
Steps to Reproduce: - Change the language to something other than English. - Create a new menu in the Appointment module using Studio. - Link that menu with the existing model (Resource Time of Detail). - Save the changes and add the Gantt view - Save the changes and close Studio. - View this new menu in the Gantt view Issue: - When clicking onto the kanban popover card for any record, the labels will remain as "Name" , "Start" , and "Stop" in English, and it will not translate. Reason: - [1] changed the rendering of default kanban card templates from XML to JS. This changed the default template to be static. Fix: - Add a call to the translation core tool "_t" on the three labels upon their generation in _getKanbanViewParams(). This ensures that the arch template that is generated is translated correctly into the user's set language. [1] : b2e31239041e6b7850888a3ae070c3f8a40ea5ee [opw-4861899](https://www.odoo.com/odoo/my-tasks/4861899) Forward-Port-Of: odoo/enterprise#90605
The AI command palette now avoids repeated background lookups while a user types. This prevents flickering and makes the command palette feel steadier and more responsive.
Original PR description
Previously, when typing in the command palette with the AI module installed, the system called `get_ask_ai_agent` on every keystroke. This caused flickering in the command palette. Now, the rpc call is made only once to retrieve the id and name, avoiding repeated calls while typing. task-4997566
This update resolves an access problem that could prevent authorized HR users from viewing or using a UAE payroll salary field. The field is now limited to the appropriate HR user group, reducing errors during payroll work.
Original PR description
Issue: - Getting access error on l10n_ae_total_salary as no group defined in the field. Fix: - Added group hr.group_hr_user to this field. task-5028831
This update removes an unnecessary duplicate country field from account reports and restores the ability to edit the main country setting where needed. It also makes automatic generation default correctly for tax return types, helping reduce setup mistakes.
Original PR description
this field is no longer needed since the field country_id contains the necessary information. Also, makes the field country_id readonly=False, it was originally the case and got changed when switched to a computed field Finally, change the recently added field auto_generate to a computed field since we want the default value to be True if it is of category "Tax Return".
The automated purchase and rental comparison test now checks the redesigned comparison bottom bar instead of an old removed button. This keeps quality checks aligned with the current shopping experience and helps prevent false test failures.
Original PR description
This PR fixes an issue with the comparison tour, which was still looking for `product_comparison_button`, which was removed in the comparison redesign. It now uses the new bottom bar component instead. task-4911142
Sales commission reports now use the right database access mode when preparing report data. This prevents warnings or failures when users open commission reports, improving reliability without changing report content.
Original PR description
Since https://github.com/odoo/enterprise/pull/88646 a temporary table is created to speed up computation of commission report. As dislayng the report is creating and dropping the temporary table, it is not compatible anymore with a read only cursor. This commit ensure that a read write cursor is used to prevent warning and errors. task-4982555 Forward-Port-Of: odoo/enterprise#91352
This fix avoids unnecessary warning messages when automated tests create document records from reports that only look like PDFs. It keeps test logs cleaner and reduces noise for teams validating document and accounting workflows.
Original PR description
Following the activation by default of account document synchronization, a lot of tests now create indirectly documents. In test mode, IrActionsReport._pre_render_qweb_pdf renders pdf as html but with the pdf mime type leading to a warning when this fake pdf is provided to documents_document._get_is_multipage method. In odoo/enterprise#90662, we have prevented _get_is_multipage to emit a warning by turning it in an info log when in testing mode, and we detect that the document content is actually a html content. Unfortunately, at that time, pypdf was not emitting a warning so we have done that check when an error happens. To solve the problem we check the content before sending it to pypdf to avoid the pypdf warning. Task-5052041
Fixed an issue where users saw an Aadhaar warning popup unnecessarily when editing signer settings with multiple documents uploaded. Users can now assign roles and save signer changes without irrelevant interruptions.
Original PR description
**Vession:** - saas-18.5 **Steps to reproduce:** - Add Signer - Click three dot menu - Click Edit - Change something / nothing - Save **Issue:** - When multiple documents are uploaded, the Aadhaar popup always appears when opening the signer settings panel. **Solution:** - Added a condition to check for multiple documents and roles before showing the Aadhaar popup. **Impact:** - Now you can upload multiple documents, assign roles, and save without seeing unnecessary warnings. task-5051317
This fixes a payroll settings issue so Croatia-specific configuration options are tied to the correct country. It helps ensure businesses see the appropriate payroll settings for their localization and avoids confusion from incorrect country targeting.
Original PR description
ref - https://github.com/odoo/enterprise/pull/83609
Receipts now correctly show the order tracking number when a point-of-sale setup uses a preparation display or preparation printer. This helps staff and customers match receipts with prepared orders more reliably.
Original PR description
- Ensure the `tracking_number` is dipslayed on receipts for config which use a preparation dipslay or a preparation printer. task-id: 4922308 community PR: https://github.com/odoo/odoo/pull/222094 Forward-Port-Of: odoo/enterprise#93318 Forward-Port-Of: odoo/enterprise#91833
Payslip calculations for terminated employees in Egyptian payroll now continue even when the employee has no annual leave allocation. Instead of crashing, the system treats the remaining leave as zero, helping payroll teams process final payslips reliably.
Original PR description
When computing payslips for terminated employees (archived) with no annual leave allocations, the method `_l10n_eg_get_annual_remaining_leaves` raised a traceback due to missing allocation data. This fix ensures the method safely handles employees without allocations by returning 0 remaining leaves instead of crashing. This guarantees payslip computation works correctly for employees with no leave allocations. task-5026406 Forward-Port-Of: odoo/enterprise#92777
Features or functions removed from Odoo
The payroll pay run kanban view no longer shows the see-off cycle button, and the related action has been removed. This simplifies the screen by removing an option that is no longer needed, reducing clutter for payroll users.
Original PR description
Remove the button from the header in Kanban view and remove its corresponding action. task-5026008
Code cleanup and technical improvements
This change adjusts several guided test flows so a shared browser testing helper is loaded only when it is needed. It should reduce unnecessary upfront loading in the test environment while preserving existing business workflows.