Tuesday, September 2, 2025
22 changes · master
Enhancements to existing features
This update aligns enterprise report and subscription portal templates with a core platform change. It helps keep PDF exports and customer portal pages working consistently after the template engine update.
This update allows accounting return periods to be adjusted when needed instead of always following the current configuration. It helps migration processes accurately recreate older returns whose dates may differ from today’s settings.
Original PR description
The method _get_period_boundaries not allow to override the targetted period and start_date. This is used for the migration script to recreate old returns that not always has the same period as the one configured. See: https://github.com/odoo/upgrade/pull/8288 Forward-Port-Of: odoo/enterprise#93100
The Appointment screens now use Odoo’s own plus and minus icons instead of older third-party icon styles. This keeps the user interface visually consistent with the rest of Odoo and helps maintain a cleaner, more unified experience.
Original PR description
Before this commit, some parts of the frontend were still using fa fa-* icons (plus/minus). This commit replaces `fa fa-plus` with `oi oi-plus`. task-5046832 Requires: https://github.com/odoo/odoo/pull/224700 <table> <tr> <td></td> <th>Current (master)</th> <th>This commit </th> <tr> <th> Appointment (Guests)</th> <td> <img width="786" height="484" alt="image" src="https://github.com/user-attachments/assets/3d6d5c5d-ae7b-4360-8059-54403de31416" /></td> <td> <img width="786" height="484" alt="image" src="https://github.com/user-attachments/assets/d095c5d2-cb35-4367-9d82-cac5ce1c27d1" /> </td> </table>
Product-related screens were polished with clearer labels, better ordering, and standard interface tools. These small updates make product setup and management easier to understand across sales, rentals, subscriptions, and barcode image lookup workflows.
Original PR description
Minor changes on the UI by renaming labels, adapting orders or using built-in tools to improve the user experience. task-4417236
The audit report PDF now uses a newer footer rendering method to stay compatible with upcoming platform changes. A dedicated footer template keeps the report clean by avoiding extra company branding and layout elements that are not needed for this document.
Original PR description
This PR updates the method for rendering the audit report PDF to use the `footer` option instead of the `footer-right` option, which is being removed in the COM PR. To render the footer, we now use a custom template, as the template used in the account report does not meet our needs. The account report footer includes the company name, logo, and other elements we don't want. It also loads numerous assets and applies a specific paper format. To avoid complicating the existing template, we are creating a new template from scratch. COM: odoo/odoo#222199 Task-4989809
PDF thumbnail generation for Documents now uses a shared Mail service that creates thumbnails from the first page of a PDF. This reduces duplicated logic and helps keep document previews consistent across Odoo.
Original PR description
PR community: https://github.com/odoo/odoo/pull/221006 Task-4605759
Resolved issues and error corrections
This update fixes automated website shop tests so they match a recent checkout page structure change. It helps keep rental purchase and wishlist checkout flows reliably tested, reducing the risk of unnoticed issues reaching customers.
Original PR description
This aligns the test steps with updated template structure, where the current checkout step is rendered using a added div name="active_step" instead of the older CSS class-based method. See also: - Enterprise PR: https://github.com/odoo/odoo/pull/210879 task:4766612
Features or functions removed from Odoo
An obsolete Swiss payroll report definition was removed because it was no longer loaded by the application. This cleanup reduces maintenance overhead without changing what users see or use.
Original PR description
hr_payroll_report.xml is not included in the manifest and therefore discarded Upgrade: https://github.com/odoo/upgrade/pull/8303 Task ID: 5026087
Code cleanup and technical improvements
The spreadsheet-related test setup was simplified now that all tests use the newer Hoot framework. This reduces hidden test interference between modules and helps keep future spreadsheet changes safer and easier to maintain.
Original PR description
All tests have been converted to Hoot now. And each hoot test suite only runs with its dependencies. Patches in other modules no longer impacts `web` tests.
This fix restores an optimization that avoids starting the IoT communication session until it is actually needed. It helps keep IoT-related point of sale and self-ordering flows efficient and prevents unnecessary background activity introduced by a previous refactor.
Original PR description
* : pos_iot, pos_self_order_iot The refactor introducing the `iot_http` service dropped by mistake the previous lazy_session optimisation [1], this commit reintroduce it. [1]: https://github.com/odoo/enterprise/commit/313bde6feb756c050a20a3459e1e8282d11ffa66 Forward-Port-Of: odoo/enterprise#93600
The Chilean electronic invoicing demo data now includes the required certificate serial number. This prevents setup errors when users test sending demo invoices to the Chilean tax authority, while leaving real production certificates unchanged.
Original PR description
**Issue** When installing l10n_cl_ed, the `subject_serial_number` field is left empty. This causes an error when attempting to send an invoice to the SII. **Steps to Reproduce** 1. Install Accounting and l10n_cl_edi 2. Create and confirm an invoice 3. Click "Send Now to SII" 4. Error: Invalid Operation **Root Cause** The `subject_serial_number` is not set during installation, and this field is required for electronic document generation. **Fix** Restore the behavior from version 17.0 by setting a default `subject_serial_number` if it's missing and the certificate is available. This ensures the demo data is functional and allows users to test the SII integration out-of-the-box. Opw-4961801 Forward-Port-Of: odoo/enterprise#90636
Finding duplicate bank transactions no longer fails when the Starting Date field is left empty. The system now uses today's date by default, helping accounting users complete the duplicate check without interruption.
Original PR description
Currently, an error occurs when attempting to find duplicate transactions in the bank. Steps to Reproduce: - Install the `Accountant` module. - In the `Accounting` Dashboard, click on `Bank`. - In…
Currently, an error occurs when attempting to find duplicate transactions in the bank.
Steps to Reproduce:
- Install the `Accountant` module.
- In the `Accounting` Dashboard, click on `Bank`.
- In Actions, click `Find Duplicate Transactions`.
- Clear the `Starting Date` and click save.
Traceback:
```py
psycopg2.errors.UndefinedFunction: operator does not exist: date >= boolean
LINE 6: AND move.date >= false
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
```
This error occurs when the system attempts to detect duplicate transactions without a `Starting Date`. During the check, it evaluates the condition `move.date >= date_from`. Since `date_from` is False, the comparison triggers an error.
This commit ensures that if the `Starting Date` is empty when finding duplicate transactions, it uses today’s date as the `Starting Date`.
Reference commit: https://github.com/odoo/enterprise/pull/87000/commits/806ab2d56952e9d0f597cf1ab36ea2f180a84323
Forward-Port-Of: odoo/enterprise#92497A date used in Belgian payroll accounting tests has been fixed so the tests remain reliable when the calendar year changes. This prevents avoidable failures in 2026 and helps keep payroll-related validation stable over time.
Original PR description
Some tests will fail in 2026. This adds a freeze time to prevent this failing. Task: 5034173 Forward-Port-Of: odoo/enterprise#93575 Forward-Port-Of: odoo/enterprise#92983
When duplicating accounting moves related to returns, the copied move is no longer incorrectly tied to the original return. This prevents confusion and reporting mistakes by ensuring duplicated records are treated as separate entries.
Original PR description
Duplicating some return's move also kept the duplicate linked to the return. This is wrong. task-5046319 Forward-Port-Of: odoo/enterprise#93390 Forward-Port-Of: odoo/enterprise#93323
The AI message action buttons now appear in a more logical order, with the copy option placed after sending as a message and logging as a note. This reduces confusion and makes the interface easier to use.
Original PR description
The copy button appears in between the 'Send as Message' and 'Log as Note' buttons. It should appear last (after both buttons). This commit along with the corresponding community commit update the sequence of these buttons to make the copy button appear last. See https://github.com/odoo/odoo/pull/224774
The Documents app now checks for existing redirect records when someone opens a shared document content link. This preserves access for older or migrated links, reducing broken document access for users and customers.
Original PR description
We do not currently check for `documents.redirect` records when accessing the `/documents/content/<access_token>` endpoint. This commit fixes this by redirecting if a `document.redirect` with the appropriate `access_token` was created for backwards compatibility. opw-4517698 Forward-Port-Of: odoo/enterprise#92342 Forward-Port-Of: odoo/enterprise#92313
Payroll users can now change salary rule colors reliably from both Salary Rules and Salary Structures. The fix ensures the chosen styling is applied directly in the salary rule preview and pop-up, making rules easier to identify and review.
Original PR description
Steps to Produce: - open payroll app - Go to Salary Rules or go to Salary Structures and open any salary rule. - try to change color of any rule. issue: - The color does not change in the Salary Rules. - Additionally, styles do not apply in the salary rule pop-up accessed through Salary Structures. Fix: - Instead of changing the color with formrenderer, a custom widget was created to apply styles directly to the field. opw-4716810 task-4774448 Forward-Port-Of: odoo/enterprise#93520 Forward-Port-Of: odoo/enterprise#83514
Spreadsheet pivot configuration now hides field relationships that cannot be stored and therefore cannot be reliably retrieved. This prevents users from selecting options that would create cell errors, and adds test coverage for many-to-many relationships.
Original PR description
Before this commit, it was possible to follow a non-store field relation in the pivot chain feature. It leads to an error in the cell as it's not possible to retrieve the value of a non-stored field. In order to ease the work of the user, we do not display non-store field relation. This commit also adds a missing test for the m2m relation. Task: 5059203
Creating a new salary offer from an employee's shortcut now automatically selects the correct employee again. This prevents manual correction and helps HR teams avoid offers being created without the intended employee attached.
Original PR description
Since this PR: https://github.com/odoo/enterprise/pull/91716, the context when creating a new offer for an employee via his smartbuttons was lacking the default employee_id. This commit fixes the issue by specifying the correct default employee_id.
The barcode app now handles manufacturing orders that have no by-products when opening the scrap window. This prevents a traceback and lets users scrap completed productions reliably.
Original PR description
Issue ----- Trying to scrap a production through the barcode app gives the user a traceback. Steps to reproduce ----- - Have a done MO - Go to barcode and try to scrap it --> Traceback Cause ----- When preparing the context for the scrap window, we try to map the MO's byProducts. When there is no byProduct, we end up trying to apply a mapping on "nothing". ----- Ticket: opw-4792599 Forward-Port-Of: odoo/enterprise#92925 Forward-Port-Of: odoo/enterprise#90623
A timezone is now set in a timesheet test calendar so automated checks use the expected dates and times. This helps keep test results reliable when demo data is included, reducing false failures during development and releases.
Original PR description
The timezone of a working calendar is not properly set in a test class, which causes datetimes to not match the expected values when running tests with demo data. This PR sets a timezone on the working calendar to solve the issue.
The appointment module no longer relies on legacy website editing components that are being phased out. This keeps the module aligned with Odoo's newer editor framework without changing appointment functionality for users.
Original PR description
This commit is part of an effort to remove dependencies on the legacy web_editor module. The appointment module already includes its AppointmentPlugin in the new editor's (html_editor module) list of plugins. This commit simply removes the code that patches the old Wysiwyg, which is being phased out, alongside the QUnit tests for it (which already have the equivalent ones using HOOT). task-5046471