Friday, August 8, 2025
11 changes · saas-18.3
Enhancements to existing features
The bank reconciliation statement button has been repositioned to the right side of each statement line. This prevents it from overlapping with other actions on smaller screens, making it easier for users to click the intended button.
Original PR description
This commit will move the statement button on the right of the statement line because when having a small screen the button was at the place of the other button of the statement line which could cause problems for the users to click on it task: 5004109
Resolved issues and error corrections
Invoice PDFs now handle very long product descriptions more reliably when line-item tables continue onto additional pages. This prevents text from overlapping the table header, making printed invoices clearer and more professional for customers.
Original PR description
**Steps to reproduce**: 1. Install the `account` module. 2. Create a Invoice using this any product. 3. add long descripition (approx. 40-45 lines). 4. Print the PDF of Invoice (via gear icon).…
**Steps to reproduce**: 1. Install the `account` module. 2. Create a Invoice using this any product. 3. add long descripition (approx. 40-45 lines). 4. Print the PDF of Invoice (via gear icon). **Observation**: The long product description overlaps with the table header when the table spans multiple pages in the generated PDF. **Issue**: wkhtmltopdf does not handle multi-page table headers properly by default. causing header/content overlap when the table breaks across pages. **Solution**: Apply a known wkhtmltopdf workaround by explicitly setting: `<thead style='display: table-row-group;'>` This ensures headers will not repeat same as this. [#53909](https://github.com/odoo/odoo/pull/53909) before: <img width="818" height="231" alt="image" src="https://github.com/user-attachments/assets/8bcc6ced-5911-4abd-b91e-97ffa8fb735e" /> after: <img width="821" height="253" alt="image" src="https://github.com/user-attachments/assets/2ccc6995-c239-4beb-8f68-53d548b7f2f2" /> opw-4982735 Forward-Port-Of: odoo/odoo#222286 Forward-Port-Of: odoo/odoo#221681
Survey invitation emails now respect the subject line configured on the email template instead of replacing it with the default survey subject. This ensures customized survey invitations keep the intended wording when users share surveys by email.
Original PR description
Description of the issue/feature this PR addresses: When a user updates the subject on a template used for a survey, it does not pull the subject from the template. It uses the default subject that…
Description of the issue/feature this PR addresses:
When a user updates the subject on a template used for a survey, it does not pull the subject from the template. It uses the default subject that is used when computing the subject for a survey email that is sent out. This bug came as a part of [this commit](https://github.com/odoo/odoo/commit/220e0271bf43e914950b8ae0d4a1cca5f3ea6d9c).
I've used an elif condition over here as opposed to calling super which was being done before so that the default of Participate to X survey still becomes the default subject.
opw-4654411
Steps to reproduce on runbot:
1. Go to mail templates and search for Survey
2. Open the Survey: Invite template
3. Update the subject on this template
4. Open the Surveys app and select any survey
5. Click on Share and then enable send by email
6. The subject here will default to "Participate to {Survey Name}"
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#219122
Forward-Port-Of: odoo/odoo#211153This update rolls back a previous web interface change that caused an unwanted horizontal scroll bar on form pages. The revert restores the prior behavior while the team prepares a better fix for editor avatars overlapping the status bar during scrolling.
Original PR description
This reverts commit 72acbe0 because of unexpected horizontal inner scroll on `o_form_sheet_bg` element. A better fix will be found in the futur.
Accounting administrators without expense permissions can now create their own expense reports without triggering a confusing validation error. To prevent mistakes, those users are no longer allowed to create expenses on behalf of other employees unless they have the proper expense access rights.
Original PR description
- Create a user and its related employee without any expense access rights but with accounting admin rights. - With that user create a new expense. - On the employee field select a different employee…
- Create a user and its related employee without any expense access rights but with accounting admin rights. - With that user create a new expense. - On the employee field select a different employee and save. - The following error appears: Validation Error The operation cannot be completed: Missing required value for the field 'Description' (name). Model: 'Expense' (hr.expense) - create/update: a mandatory field is not set - delete: another model requires the record being deleted, you can archive it instead Since b1ac6f52d37cd59fdb973ce87f93d1d0a69dd204, the field employee_id is no longer invisible for users without hr_expense rights. However, in the method _search_filter_for_expense, users without hr_expense rights but with account rights are able to select every employee (commit 87cca4a9ee64c890ccbd24e2d6766f9f8799a0c0). But in hr_expense, the method _compute_is_editable only considered hr_expense rights, which meant that users trying to create a new expense with only accounting rights would get an error if they were not the approver of the employee they tried to create the expense for. After this commit: If the user has no hr_expense rights but has account rights, they will only be able to create expenses for themselves. opw-4780218 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215452
The Task Analysis report in Field Service now keeps the correct Field Service filter when users drill into pivot report numbers. This prevents unrelated tasks from appearing and helps teams review accurate operational details.
Original PR description
Issue: - When the user drills down in the pivot view, all tasks are displayed. Cause: - The action was not passing the FSM project domain. Fix: - In this commit, we have passed the FSM project domain, so that only the relevant FSM tasks will be displayed during drill down. Steps to reproduce: - Install the industry_fsm module. - Go to Industry > Reporting > Task Analysis. - Group by Assignees. - Check any count column number and drill down. task-4688139 Forward-Port-Of: odoo/enterprise#83295
This fix keeps the standard expiration message when an expiration is related to upsells rather than renewals. This avoids showing renewal-specific messaging in cases where it does not apply, making the customer-facing notice clearer and more accurate.
Original PR description
Upsell expiration are not handled the same way as renewal expiration, so we can keep the default expiration message for any expiration reasons other than a renewal Forward-Port-Of: odoo/enterprise#91839 Forward-Port-Of: odoo/enterprise#91730
EC Sales List reports now correctly populate values when a country-specific report has more than the standard three columns. This prevents extra required columns, such as those used in Slovenia, from appearing empty and supports more accurate tax reporting.
Original PR description
Before this commit, when an ec sales list report had more than the 3 bases columns (goods, service, triangular) the value was not filled. For example in slovinia, the ec sales list has 5 columns, the two extras columns where always empty. task-4963633 Forward-Port-Of: odoo/enterprise#90669
Demo employee contracts for Egypt, Saudi Arabia, and Turkey now use the appropriate local payroll structures. This prevents Belgian payroll settings from being applied accidentally when the Belgian payroll module is also installed, making demo data more reliable for evaluations and testing.
Original PR description
*: eg, sa, tr - Assign the correct payroll structure to employee contracts in demo data to prevents incorrect assignment of the Belgian payroll structure when l10n_be is installed. Task: 4862722 Forward-Port-Of: odoo/enterprise#87409
The VoIP softphone now avoids taking focus back after a call when the user is typing in another field. This prevents interruptions and accidental input issues during everyday call handling.
Original PR description
Before switching the focus back to the softphone after a call, make sure the user isn't typing somewhere else. Only autofocus if the focus is not on an editable element. Task-4997513.
Hong Kong payslips now show the employee's regular name when surname and first name fields are not filled in. This prevents payslips from displaying an empty or incorrect legal name, improving clarity for payroll documents.
Original PR description
Explanation: In hong kong payroll, the legal name is joined by surname and first name. However both fields are not madatory therefore it will display False on Payslip. After this commit, it will display the name field when both surname and first name are not used. opw-4944968 Forward-Port-Of: odoo/enterprise#90250