Daily updates from Odoo
Wednesday, June 25, 2025
14 changes
13 changes
Enhancements to existing features
This update standardizes how HR-related features define and apply filtering rules behind the scenes. It helps keep payroll, attendance, appraisal, contract salary, and planning workflows consistent and easier to maintain without changing day-to-day user behavior.
Original PR description
odoo/odoo#206645
Quote PDFs for subscriptions now show the subscription end date when one is set. This gives customers clearer contract timing and reduces the need for manual edits before sending quotes.
Original PR description
Before: The subscription end date was not displayed on the quote PDF, requiring users to manually adjust end of the subscription period. After: If a subscription end date is defined, it is now displayed next to the recurring plan on the quote PDF, reducing manual effort and improving clarity for customers. task-4801402
Recurring planning shifts now update more predictably when a user changes dates. Depending on whether changes apply to all or only future shifts, the system rebuilds the affected recurrence from the right shift, reducing inconsistent schedules and avoiding errors when deleted shifts are involved.
Original PR description
If the user doesn't change any date field, the recurrence should be impacted as expected. However, when at least one date field is changed, with option: - "all": the changes should be applied to the first shift, then all other shifts in the recurrence should be deleted and recreated, using the first one as template. - "subsequent": the previous shift's recurrence should be unset, the changes should be applied to current shift, the subsequent shifts should be deleted and recreated, using the current one as template. task-3765142
Salespersons can now view commission adjustment records when they are directly involved in the adjustment. This helps them better understand changes affecting their performance while keeping unrelated adjustment records restricted.
Original PR description
Purpose: Salespersons previously had no access to achievement adjustments, even when directly involved. This change introduces conditional read access so they can view adjustments related to their own performance. Before: - Salespersons could not see any adjustment records — not even those they were involved in (`add_user_id` or `reduce_user_id`). - Managers already had full access to all adjustment records. After: - Salespersons now have read access to adjustments only when they are involved (as `add_user_id` or `reduce_user_id`). - Added a record rule to enforce salesperson-level visibility. - Updated the security CSV to grant the Salesperson group read access to the adjustment model. task:4783916
Renewed subscriptions now carry over customer-facing notes and relevant section headings from the original order. This helps sales teams preserve important context and makes renewal documents clearer without manual re-entry.
Original PR description
Prior to this commit, it wasn't possible to keep the sections and notes when renewing a subscription. This commit modifies the behaviour to keep the notes and non-empty sections (sections that have at least one subscription product), in the renewed `sale.order`. task-4554471
Appointment and Helpdesk website pages now use a clearer heading structure. This helps search engines and accessibility tools better understand the content, supporting improved discoverability and user experience.
Original PR description
*: website_helpdesk Refactored enterprise modules templates to use a consistent and semantically correct heading structure (h1, h2 etc.). This improves SEO.
Spreadsheet users can now open the filter search dialog directly from the filter control, making it quicker to find and apply filters. Filter creation and editing remain available in the side panel, preserving existing configuration options while improving day-to-day use.
Original PR description
This commit changes the behavior of the filter component (top right corner of the spreadsheet) to open the filter search dialog instead of the side panel to configure filters. Filters can still be created and edited in the side panel, but the search dialog provides a more efficient way to search and apply filters directly from the spreadsheet. Task: 4816193
This change streamlines an internal accounting report test by preparing accounting entries once during setup instead of repeatedly switching them back and forth for each report. It reduces unnecessary test work and should make the test suite faster without changing business functionality.
Original PR description
In `test_balance_sheet_balanced`, during the balance test the case first sets a bunch of lines to `posted`, then sets them (back?) to `draft`. However this is done per report, even though in the default mode the amls involved don't change between reports. Not only that, but since f2100c2654a068fe197025aecc605fdada3a919a each CoA's test case is within a savepoint, so the AMLs get reverted implicitly. Hence rejigger the thing to activate the relevant AMLs while setting up localization if not in `IDENTIFY_INCORRECT_ACCOUNTS` mode, that way we don't even pay for the activation, let alone do so repeatedly for each report we test.
Email and SMS templates now rely on the main customer's language automatically instead of showing technical language expressions. This makes template setup clearer for users while preserving the same customer-language behavior across affected business flows.
Original PR description
This PR streamlines mail templates by removing redundant `lang` assignments when the language matches the main partner's. Specifically, it eliminates calls such as `object._mail_get_customer().lang` and `object.partner_id.lang` when they are unnecessary. By unsetting these values, the form view will now display the new placeholder "Main partner's language" in the `lang` field for those records. This change provides a clearer and more user-friendly alternative to technical inline expressions. See: odoo/odoo#189743 task-4365019
The online sales experience for rentals, subscriptions, and appointments was updated to stay compatible with recent platform changes. This helps keep product selection, order handling, and related checkout tests working consistently for customers using these sales options.
Installing the main AI module now automatically includes AI Fields and AI Server Actions. This makes setup simpler and ensures users get the full AI feature set without needing to install related modules separately.
Original PR description
Improving UX by adding all of the AI related functionalities when AI module is installed. issue ticket task-4855178 Divagations --- In the future the ai_fields and ai_server_actions modules should be merged into the ai module. with ticket task-4889610
Documents gets a clearer default folder structure, including Inbox, Finance, Legal, HR, Project, Marketing, and Admin areas, so teams can organize files more consistently. Related document actions are simplified and better scoped, while the Support folder is now created only when needed for traceback uploads.
Original PR description
#### **Objective** Enhance the server actions management and folder structure. --- #### **1. Server Actions** * **Add Domain Filter**: When accessing server actions from **Documents**, apply a domain…
#### **Objective**
Enhance the server actions management and folder structure.
---
#### **1. Server Actions**
* **Add Domain Filter**: When accessing server actions from **Documents**, apply a domain filter to show **top-level actions only** (not a default search).
* **Update Existing Server Actions**:
* Refactor “Send to Finance” and any server action in `documents_account` to use **Update Records** instead of custom code with `sudo`.
* **Convert Server Actions to MultiAction**:
* Change demo/data server actions from **Code** to **MultiAction** to eliminate the requirement for user coin usage.
---
#### **2. Folder Structure Updates**
* Rename folder `Administrative` to `Admin`.
* Remove folder `Administrator`.
* Add and order folders as follows:
* **Inbox**
* **Finance**
* **Social**
* **Taxes**
* **Annual Closing**
* **2025**:
* **Legal**
* **Insurances**
* **Loans**
* **Registrations**
* **Contracts**
* **HR**
* **Project**
* **Marketing**
* **Admin**
* **Support Folder**: Create folder when explicitly needed (saving a traceback).
---
#### **3. Tags Clean-up**
Task-4690653The budgeting app can now be used without installing the purchasing app, making it suitable for simpler budget management needs. Purchase-related committed amount tracking is moved into a separate add-on, so businesses can choose a lighter setup or keep purchase integration when needed.
Original PR description
Allow using budgets without installing purchase, for simple budgetting without committed amounts. Currently, there are two ways of doing budgets: * using accounting entries, using the budget feature of account reports: this works in some cases where we only need one plan, and that plan can be reduced to accounts or groups of accounts determined by the accounting reports * using `account_budget`: it gives a lot more flexibility, can be integrated with other apps/concepts, can use multiple plans, but it requires `purchase` to be installed. This gives the opportunity to use the budget feature for simpler use cases, including on the one-app-free plan of Accounting.
1 change
Enhancements to existing features
When a lead is converted into a helpdesk ticket, the original lead will now show a chatter message linking to the new ticket. This makes it easier for teams to trace customer history from either record and keeps lead-to-ticket conversions consistent with other Odoo workflows.
Original PR description
Odoo’s current behaviour - When a Lead is converted into a Ticket, the resulting Ticket contains a reference to the Lead in its chatter. However, the original Lead does not display any reference or information about the created Ticket. - This behaviour differs from how Odoo handles conversions between Tickets and Tasks, where both records include reciprocal chatter messages indicating the link between them. Expected behaviour after PR is merged When a Lead is converted into a Ticket: - The Ticket should continue to include a reference to the originating Lead (existing behaviour). - The Lead should also display a chatter message referencing the newly created Ticket.