Thursday, August 21, 2025
20 changes · master
Enhancements to existing features
This update modernizes internal automated tests for Helpdesk and Helpdesk Timesheets by moving them to a newer testing framework. It helps maintain product quality and makes future development safer without changing day-to-day user workflows.
Original PR description
Purpose of this commit is to convert the qunit testcases that depends on 'mail/../tests/helpers/test_utils' to hoot Part of: 3818666
This update aligns Enterprise modules with a core platform change that allows records to be grouped using ordered field sequences. It improves consistency across accounting, follow-up, and appointment features and supports more flexible reporting and list organization.
Original PR description
https://github.com/odoo/odoo/pull/209544
Work entry labels in the Gantt view now use available space more reliably across browsers and window sizes. Long names are shortened cleanly with an ellipsis, making schedules easier to read without layout issues.
Original PR description
Problem ---------- Depending on the browser or size of the window, the display name of the pill has a too short max-width. Solution ---------- Remove the `o_gantt_pill_title` used only to set the max-width of the display name If the display name is too long, it will be like "TooLoo..." in the pill task-4892209
Romanian SAF-T exports now use the Romania-specific unit of measure code when available, instead of the generic international code. This helps reports better match Romanian tax authority expectations and reduces the risk of unit code mismatches in submissions.
Original PR description
Adjusts the SAF-T export logic to prefer new ro_saft_code field over the default UNECE code in Romanian reports to the unit codes. 4976455
Tax return reports now keep the correct reporting frequency when opened from a specific return. This helps avoid ambiguity when multiple return types use the same report, making reporting more reliable for accounting teams.
Original PR description
Before when we would have two return type pointing to the same report, the report options would not generate the 'return_periodicity'. Now we added a way to pass manually the 'return_periodicity' option from the previous options. This is useful for instance when we open the report from the return as we know which return we target.
EC Sales Lists now use the appropriate review-and-submit status instead of a generic tax report status. This helps align the reporting workflow with the correct business process and reduces confusion during report handling.
Original PR description
Previously, ec sales list would use the default generic_state_tax_report state, but generic_state_review_submit is the right one to use. Formatting the account_intrastat _get_state_field to be identical to the one for ec sales list as using a set is better than or.
Resolved issues and error corrections
The link to Six payment setup documentation in the POS payment provider configuration has been fixed. This helps users reach the correct instructions when configuring payments, reducing confusion during setup.
Original PR description
Before this commit: ------------------- - The Six documentation link in the POS payment provider configuration was broken, leading to a poor user experience. After this commit: ------------------ - The Six documentation link has been corrected to ensure proper access to setup instructions. Task: 4797691 Forward-Port-Of: odoo/enterprise#91974
Code cleanup and technical improvements
The AI chat creation logic has been moved to the AI agent area where it more naturally belongs. This is an internal cleanup that should make the AI chat code easier to maintain without changing how users interact with chat.
Original PR description
`_get_or_create_ai_chat` method was defined on `discuss.channel` with `@api.model` decorator. `agent_partner` was always passed as a parameter to the method. Given that, the method relies on `ai.agent` and not on `discuss.channel` and so it is moved to `ai.agent`.
Odoo Studio now handles cases where a button refers to a server action that has since been deleted. Instead of showing an error, the button editor can continue to open, reducing disruption for users customizing forms.
Original PR description
The error is triggered when a user configures a button to execute a serveraction, deletes the associated server action, and then attempts to edit the button. This causes a failure at the line `self.env.ref(str_action)` due to the missing external ID. **Steps to reproduce:** * Install `crm` and `web_studio` * crm > Form View> Studio > `Add a button`> Run a server Action > Enrich * Settings > Technical > Actions > Server Actions > `Enrich` > Delete it * crm > Form View > Studio `ValueError: External ID not found in the system: crm_iap_enrich.action_enrich_mail` **Solution:** * Return `False` when the referenced server action cannot be found or has been removed. **Sentry-6608495874** Forward-Port-Of: odoo/enterprise#92683 Forward-Port-Of: odoo/enterprise#89218
The French VAT report export has been updated to use the 2025 filing version. This keeps the report aligned with the latest official version and avoids automated validation failures, while not changing the report’s export content.
Original PR description
The version for 2025 is out. As far as we can see, the changes don't concern the export of VAT report. So we just change the value to 2025. (2024 non blocking for prod is still accepted in 2025 but it fails for the server test). task-4617663 Forward-Port-Of: odoo/enterprise#92676 Forward-Port-Of: odoo/enterprise#92542
Installing Belgian payroll accounting no longer fails when a specific mobility budget salary rule is missing. This helps companies complete accounting setup even if the rule was deleted or their database was created before the rule existed.
Original PR description
Currently an issue occurs when the user tries to install `10n_be_hr_payroll_account/account` after follow steps: - Install `l10n_be_hr_payroll` and switch to `BE Company CoA` - Go to Payroll > Configuration > Salary > Rules - Delete `Mobility Budget Special Contribution` - Error occurs when trying to install accounting error: `ValueError: External ID not found in the system: l10n_be_hr_payroll.cp200_employees_salary_mobility_budget_tax` The salary rule mentioned above steps was added with commit [1], and the issue also occurs if the database was created before commit [1] with a module `l10n_be_hr_payroll` and the user tries to install the account after commit [1]. This commit fixes the issue by using `raise_if_not_found=False`, which prevents an error from being raised when the salary rule is missing. [1] - https://github.com/odoo/enterprise/commit/16c8a223beda4e4ebcf2c24f716687726f7230f3 sentry-6578747340 Forward-Port-Of: odoo/enterprise#84578
The Planning Gantt scheduling pop-up now hides date and resource columns when users choose an existing shift. This removes confusing duplicate information and keeps the scheduling workflow focused and easier to use.
Original PR description
Steps to reproduce: - 1. Go to the Planning module. 2. Open the Gantt view. 3. Click on a cell to schedule an existing shift. 4. The date and resource columns are visible in the pop-up list view. Issue: - When scheduling existing shifts from the Gantt view, the date and resource columns were still visible in the pop-up list view. Cause: - The `planning_slots_to_schedule` context flag was removed in commit c3c4f02, this was used to hide the columns. Fix: - Restore the `planning_slots_to_schedule: true` context in the Gantt renderer to ensure the columns are correctly hidden in the list view. task-4922511 Forward-Port-Of: odoo/enterprise#89641
Currently an exception is generated due to the variables translated into the `Spanish (Latin America)` language. `KeyError: 'tipo'` This commit fixes the issue by using the original variable name instead of translated terms. sentry-6046430921 Forward-Port-Of: odoo/enterprise#92716
Original PR description
Currently an exception is generated due to the variables translated into the `Spanish (Latin America)` language. `KeyError: 'tipo'` This commit fixes the issue by using the original variable name instead of translated terms. sentry-6046430921 Forward-Port-Of: odoo/enterprise#92716
The asset accounting test suite now handles missing spreadsheet support more gracefully in environments with limited dependencies. This prevents avoidable test failures when the optional package is not installed, helping teams keep validation runs stable.
Original PR description
Some environments run tests without installing all package dependencies, which causes `ModuleNotFoundError: No module named 'openpyxl'`. To align with the existing pattern in the repo, wrap the import in a try/except and skip the test suite when `openpyxl` is not available.
The salary calculator now preserves the amount entered by the user when switching budget types. This avoids unexpected recalculations and helps payroll teams compare options without losing their original salary input.
Original PR description
Prevent salary calculator (Payroll > Employee > Salary Calculator) from re-encoding value when switching budget type; preserve user input. Task ID: 5030704
This fixes a timing issue that could affect sending messages with Command + Enter in enterprise Discuss and live chat-related flows. It helps ensure message actions behave consistently during fast keyboard interactions, reducing flaky behavior and test failures.
Original PR description
\* = test_discuss_full_enterprise, website_helpdesk_livechat Enterprise counter-part. https://runbot.odoo.com/odoo/runbot.build.error/230977 https://github.com/odoo/odoo/pull/223601 Forward-Port-Of: odoo/enterprise#92772
Reopening Sign templates now works even when a signer field has no “Assign To” value selected. This prevents an error during template editing and makes the Sign template workflow smoother for users.
Original PR description
Version: - saas~18.5 Steps to reproduce: - Enable debug mode. - Create a template and add some fields for signer. - Do not set any “Assign To” value. - Reopen the template. Before: - Reopening the template caused a traceback. - The `assignTo` prop was defined as a string, but when no value was selected it received False (boolean), which led to the error. After: - Return an empty string when no “Assign To” value is defined. - This prevents the traceback as it will get string value and not boolean. Impact: - Fixes the traceback when reopening templates without an “Assign To” value. - Ensures smoother user experience in template editing.
A test setup was corrected by removing an unnecessary timesheet approval permission that could make automated checks fail in limited app configurations. This improves reliability of quality checks without changing day-to-day product behavior.
Original PR description
on the test `test_mrp_aa_employee_without_account_rights` the user was created with the group `hr_timesheet.group_hr_timesheet_approver` which is not needed and was causing the test to fail on Single app test as this module does not depend on hr_timesheet. This commit removes this group from the user creation. runbot-231137 Forward-Port-Of: odoo/enterprise#92747
This change prevents an internal asset accounting test from failing when an optional spreadsheet library is not installed. It helps keep development and quality checks reliable without changing any customer-facing accounting features.
Original PR description
The `openpyxl` package is optional. Skip test if it's not installed.
This fixes an issue in the Belgian salary contract process to ensure salary offers are handled correctly. It helps HR teams avoid errors when preparing or managing employee contract salary offers.
Original PR description
Forward-Port-Of: odoo/enterprise#88918