Tuesday, September 23, 2025
24 changes · master
Enhancements to existing features
A tooltip was added to explain the setting that prevents consecutive leave days for Belgian payroll time off types. This helps users understand the option during setup and reduces the chance of configuring leave rules incorrectly.
Original PR description
The field `No_Consecutive_Leaves_Allowed` was unclear to users when setting up time off types. Adding a tooltip clarifies its purpose and improves usability by reducing the risk of misconfiguration. task-5051915
The payslip other input report has been adjusted so users can no longer edit fields that should only be viewed. This helps protect payroll data accuracy and makes it easier for users to find the information they need through improved search behavior.
Original PR description
-In payslip other input report, some fields can be edited, which should not be allowed. -The view has been adjusted to prevent the edition on the report.
The employee list now includes each employee's yearly cost from salary contract information. This gives HR and management quicker visibility into workforce cost without opening individual employee records.
Original PR description
- added inherited list view in the hr_contract_salary to show the yearly cost in employee list view task id: https://www.odoo.com/odoo/project/1251/tasks/5030905
Payslips created through a payroll run now use the same naming format as off-cycle payslips. This makes payroll records easier to identify and keeps naming consistent across payroll workflows.
Original PR description
Computed the name of payslips generated through using a payrun, in order to follow the same naming convention as those created off-cycle Task-5075930 Forward-Port-Of: odoo/enterprise#95154
French accounting report and FEC import tests were updated to match recent underlying accounting data changes. This helps keep French localization checks reliable without changing business workflows for users.
Original PR description
Due to data changes in community. This commit aims to: 1. Force test_import_fec_file to run in FR company. 2. Rename account: "Inventory item purchases - Raw materials and supplies" used for test_import_fec_export. 3. Replace tax tva_normale_ttc that used in TestFrenchFiscalRounding (tax was deleted in community). task-4920071
Resolved issues and error corrections
Removed an unnecessary developer log from the spreadsheet chart configuration area. This keeps the browser console cleaner and avoids exposing irrelevant internal messages during normal use.
Original PR description
Task: 0 Forward-Port-Of: odoo/enterprise#95135
Features or functions removed from Odoo
This update removes legacy permission-checking code from the HR Referral applicant flow as part of a broader cleanup. It helps keep the system aligned with the current access-control approach, reducing maintenance overhead without expected changes for business users.
Original PR description
odoo/odoo#226551
Code cleanup and technical improvements
This change removes unused legacy test helper code after most tests were moved to the newer testing approach. It reduces maintenance overhead for Documents, Sign, and Web Enterprise without changing customer-facing behavior.
Original PR description
*documents,sign,web_enterprise Now that almost all qunit tests have been converted to hoot, we can get rid of a lot of legacy helpers. This PR only aims at removing what is no longer used, or what can be trivially substituted. A further work will be necessary as some legacy helpers are used in tours. Moreover, the whole QUnit test suite system will still have to be removed, once the few remaining tests will be converted.
Searching from the Help page now waits for the needed background response before showing results. This prevents users from seeing an error screen and makes help content search work reliably.
Original PR description
Steps to reproduce: 1. Navigate to the Help menu. 2. Search for any term in the search bar. - A traceback occurs. Issue: The search method did not wait for the RPC call to complete and returned a promise prematurely, leading to an unhandled traceback. Fix: Ensure the method properly awaits the RPC call before returning the result. Forward-Port-Of: odoo/enterprise#94565
This fix prevents an error when the same Chilean electronic tax document is imported more than once. Instead of crashing, the system can now handle the duplicate import message correctly, improving reliability for Chilean localization users.
Original PR description
### Steps to reproduce: - Install 'l10n_cl_edi' and switch to a Chilean company - Import twice the same DTE XML file. ### Cause: This [commit](https://github.com/odoo/enterprise/commit/42744fcecdbd36ea0101070c68299227a9f204a6) forgot to add the `_()` method to format the message. As `append()` only needs one argument but two are given, there is a traceback. opw-5080094 Forward-Port-Of: odoo/enterprise#94929
Timesheet reports printed from sales orders now show the related helpdesk ticket alongside the helpdesk team. This makes billed support work easier to identify and avoids unclear report lines for customers and staff.
Original PR description
to reproduce: ============= 1. make helpdesk team billable and records timesheets 2. create a helpdesk ticket and link it to a sale order 3. log timesheets on the ticket 4. print the timesheet report…
to reproduce: ============= 1. make helpdesk team billable and records timesheets 2. create a helpdesk ticket and link it to a sale order 3. log timesheets on the ticket 4. print the timesheet report **from the sale order** -> the task column will contain only the helpdesk team name, while it should contain "helpdesk team / ticket name" Problem: ======== in helpdesk_timesheet we inherit `hr_timesheet.timesheet_table` to adapt it to helpdesk tickets, but we use `show_ticket` to display the ticket name, which is only set in `hr_timesheet.report_timesheet` and `hr_timesheet.timesheet_project_task_page` but not in `sale_timesheet.timesheet_sale_page` which is the one used when printing the report from the sale order. Solution: ========= `show_ticket` should be set with value `bool(lines.helpdesk_ticket_id)` which is equivalent to `line.helpdesk_ticket_id` in the t-if condition. so we can directly use `line.helpdesk_ticket_id` and remove the `show_ticket` variable. opw-5002650 Forward-Port-Of: odoo/enterprise#95179
Spanish translations for Peruvian electronic invoicing and stock documents were corrected where tariff fraction and withholding code labels were inaccurate or inconsistent. This helps users see the right wording on localization-related records and reduces confusion in compliant Peruvian reporting workflows.
Original PR description
## Issue: The latest `tariff_fraction` entries were not properly translated into Spanish There were also inconsistencies in the translation of some `withhold codes` ## Cause: The `.po` and `.pot` files were not correctly populated In addition, the translation of "Others" in `l10n_pe_withhold_code` conflicted with `l10n_pe_edi_reason_for_transfer__13`, because the `msgid` is the same but not the `msgstr` should be different opw-4741731 Forward-Port-Of: odoo/enterprise#95019 Forward-Port-Of: odoo/enterprise#92758
Restaurant POS orders no longer ask staff to send items to preparation when no preparation printer or display is configured. This prevents confusing checkout prompts and keeps payment flow smooth for configurations that do not use kitchen preparation routing.
Original PR description
Steps to reproduce: - Open a pos restaurant config that has no prep printer/display. - Add an orderline. - The order button appear and if you try to pay the popup ask for send to preparation is shown. Issue: If there is no preparationCategories for a config getOrderChanges consider that all the available categories are the preparationCategories. Fix: If there is no preparationCategories, set the orderline uiState hasChange to false. Note: When no preparation printer category is defined, no categories is to be return by default. For the preparation display, if no preparation categories is selected preparationCategories will return all the available categories. Task-5016231 Forward-Port-Of: odoo/enterprise#94672 Forward-Port-Of: odoo/enterprise#92541
A barcode workflow test was adjusted to wait for the correct step before continuing. This reduces false build failures caused by timing issues, helping keep validation of stock barcode processes more dependable.
Original PR description
The `test_put_packs_in_existing_pack` tour was using an erroneous trigger causing race condition. This commit replaces this trigger by another one to be sure previous step is completed before going forward. Runbot build error: [232638](https://runbot.odoo.com/odoo/runbot.build.error/232638) Forward-Port-Of: odoo/enterprise#95131
Salary offer pages now use the standard theme background color instead of a fixed color. This keeps the page readable and visually consistent when users work in dark mode.
Original PR description
With this commit the background-color is not hardcoded anymore; the background color is calculated with the bootstrap variable text-bg-secondary task-5089515 Forward-Port-Of: odoo/enterprise#94751
This update adds test coverage for Spain's Modelo 130 tax report to help ensure it continues to calculate and behave correctly. It reduces the risk of regressions in Spanish tax reporting without changing day-to-day user workflows.
Original PR description
opw-4933241 Forward-Port-Of: odoo/enterprise#94251 Forward-Port-Of: odoo/enterprise#90044
Unused AI-related code paths and an obsolete route were removed after the underlying methods had already been deleted. This reduces the chance of errors from outdated AI composer functionality and keeps the module easier to maintain.
Original PR description
Methods like **_ai_submit_to_model**, **_ai_add_message_to_context**, and **_ai_create_response** have been removed, along with the route **/ai/generate_w_composer**, from this [commit] [commit]: https://github.com/odoo/enterprise/commit/f8b9d475c0f19e5746ec47fe535c2030d117b534#diff-292213f329cde8a43c2882d1a0a972016a2fccb2f467fc79b196ebc2ae00f681L133-L191 In this commit, we are removing the method where the route and the referenced methods are called. sentry-6685514254 Forward-Port-Of: odoo/enterprise#95110
A test in the Indian payroll module is now allowed to run because the related salary contract app no longer causes it to fail. This improves confidence in payroll quality checks without changing day-to-day user workflows.
Original PR description
- Removed the test skip since the test is now working correctly task-5067701
This update corrects a failing automated test for printing the planning calendar. It ensures the test uses the expected response value, helping keep planning calendar quality checks reliable without changing user-facing behavior.
Original PR description
This commit's purpose is to fix the planning calendar print test. Source of the issue: the empty dict that the mockrpc returns is evaluated as a truthy value and leads to an extra execute of the doAction function with an invalid value. Solution: Return false instead of an empty dict task-5079063 Forward-Port-Of: odoo/enterprise#95023
Small visual alignment issues in the spreadsheet topbar were corrected. Filter badges and collaborator avatars now appear more consistently positioned, giving users a cleaner and more polished interface.
Original PR description
- the global fitler badge was slightly misaligned - the user avatars in the collaborative status had a border created by a padding with a background color. We should use an a actual border instead, as the padding had a decimal value leading to the items inside looking slightly misaligned. Borders don't have this issue, as they are rounded to the nearest pixel. Task: [5086022](https://www.odoo.com/odoo/2328/tasks/5086022) Forward-Port-Of: odoo/enterprise#94737
This fix prevents payslip creation from failing when an employee payroll input is set to zero while the payslip has its own value. Payroll teams can now use zero values reliably without unexpected errors during payslip generation.
Original PR description
Reproduce: 1. Create a salary rule based on a salary input and make it available for both employee and payslip. 2. Configure the input on both employee and payslip. 3. Set the property value to zero on the employee form and give it a value on the payslip. 4. Try to create a new payslip for this employee. Issue: `dict(payslip.version_id.payroll_properties)` does not return the property if its value is zero. Fix: Use `version_properties.get(key, 0)` to avoid the KeyError. Task: 5082135 Forward-Port-Of: odoo/enterprise#94475
This update adjusts an automated test for sales planning so it matches the latest Gantt scheduling behavior. It helps ensure the planning dialog opens correctly, reducing the chance of future scheduling issues going unnoticed.
Original PR description
Before this commit, the multi-create feature has been added to the gantt view of planning but the tour testing the planning gantt view has not been adapted accordingly. This commit adds a new step to make sure the plan dialog is opened as expected. runbot-error-230670 Forward-Port-Of: odoo/enterprise#95258
Sign requests in the Documents list are now ordered with the newest items at the top. This helps users find and open recent signature requests faster without scrolling through older entries.
Original PR description
Before: * New sign requests appeared at the bottom of the `Documents` list. * Users had to scroll down to find the latest requests. After: * The list is now sorted by creation date (newest first). * New sign requests appear at the top of the`Documents` screen. Impact: * Makes it easier for users to quickly find and access the most recent sign requests. task-5098740 Forward-Port-Of: odoo/enterprise#95104
This update reorganizes accounting-related configuration options to make them easier to manage and maintain. It affects several accounting services such as invoicing, payment processing, bank reconciliation, electronic document exchange, and online synchronization, with limited expected impact for day-to-day users.
Original PR description
account.bill.predict.history.limit int account.custom_templates_facturx_list str account.display_name_in_footer bool account.pdf_generation_batch int account.show_sale_receipts bool account.skip_create_bank_account_on_reconcile bool account.tests_shared_js_python str account.use_invoice_terms bool account_iso20022.force_iso_20022_pain_09 bool account_online_synchronization.proxy_mode str account_online_synchronization.request_timeout int account_payment.enable_portal_payment bool account_peppol.edi.mode str account_predictive_bills.predict_product int account_sepa_direct_debit.disable_sdd_pre_notification str