Friday, July 18, 2025
16 changes · saas-18.2
Enhancements to existing features
Nilvera API request logs are now shorter and easier to read in monitoring tools. Sensitive request details such as parameters and payloads are no longer included, helping protect user privacy while keeping key performance and status information available.
Original PR description
This change streamlines the Nilvera API request logs to a single-line format, making them easier to parse and visualize in tools like Grafana. The new format includes only the HTTP method, URL, response status, and request duration, removing parameters and payloads to avoid leaking sensitive information and to ensure user privacy. No task Forward-Port-Of: odoo/odoo#218045
The IoT box image build process now includes the upcoming IoT drivers component during its limited source checkout. This helps ensure future upgrades can fetch the needed files smoothly when older driver components are replaced.
Original PR description
In order for the image (built in `saas-18.1`) to be ready for the replacement of `hw_drivers` and `hw_posbox_homepage` by `iot_drivers` in `saas-18.4`, we add it to git's sparse-checkout. This way, we ensure it is fetched by git when upgrading. Forward-Port-Of: odoo/odoo#218991
The Demo payment provider now receives the same default outstanding account setup as other online payment providers. This keeps test payment flows aligned with real provider behavior and reduces manual configuration during demonstrations or testing.
Original PR description
Purpose: Set default outstanding account for `Demo` payment provider as well,
as it is a test version of an Online Payment Provider.
Followup on commit: https://github.com/odoo/odoo/pull/213554/commits/24f06192f4c6f747d2096603b6895481483138ab
task-4907646
Forward-Port-Of: odoo/odoo#216806Resolved issues and error corrections
This fixes an issue where an automation rule using an Update Record action could fail if the update path was left blank. The system now safely skips that incomplete action, preventing scheduled automation errors and reducing disruption for CRM users.
Original PR description
When executing an automation rule with an "Update Record" action, if no update path is configured, an error occurs. **Steps to reproduce:** 1. Install the **CRM** and **Automation Rules** modules. 2.…
When executing an automation rule with an "Update Record" action, if no update path is configured, an error occurs.
**Steps to reproduce:**
1. Install the **CRM** and **Automation Rules** modules.
2. Create a new **automation rule**:
- Model = Lead, Trigger = After Creation
3. Add an **action**. Type = Update Record (do not configure the update path)
(Tip: select another action type and switch back to reset the path.)
5. Create a new lead.
6. Run the scheduled action: Automation Rules: check and execute.
**Error:**
```
AttributeError: 'bool' object has no attribute 'split'
....
ValueError: AttributeError("'bool' object has no attribute 'split'") while
evaluating 'model._cron_process_time_based_actions()'
```
**Cause:**
In `_traverse_path`, the `update_path` is expected to be a string for `.split()`, but if not configured, it is `False`, leading to the traceback. - [1]
[1] - https://github.com/odoo/odoo/blob/5842c9f4821772fe44cfe7244162edec1ffff88e/odoo/addons/base/models/ir_actions.py#L701
**Fix:**
This commit ensures that no action is performed if the update path is not defined, avoiding the traceback.
sentry-6722927119
Forward-Port-Of: odoo/odoo#217723Fixed an issue on shop product pages where product tags could be duplicated in the page structure after variant changes. This keeps the storefront page cleaner and helps avoid display or behavior problems for shoppers and site editors.
Original PR description
Steps: - Open Odoo 18. - Go to Website > Shop. - Open any product with tags. - Inspect the DOM. Issue: - The `.o_product_tags` div was duplicated. - This resulted in a nested `.o_product_tags` block in the DOM. Reason: - The system was inserting the full HTML tags, including its wrapper, causing the nesting. Solution: - Now only the inside content of the tags is updated, not the whole wrapper. - This keeps the structure clean and avoids duplication. Result: Now, there will be no duplication in the `.o_product_tags` block div section. OPW:4863967 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219001 Forward-Port-Of: odoo/odoo#218320
Users can now return to the expense list after opening a record from dashboard filters such as "To Submit". This fixes a navigation issue caused by hiding breadcrumbs too broadly, making the expense workflow smoother.
Original PR description
**Steps to reproduce:**
- Install the `hr_expense` module.
- Go to the Expense menu and click on "To Submit" in the My Expense dashboard.
- Open any record from the list view.
**Observation:**
- You can't go back to the list view after opening a record.
**Cause:**
- A tag `menu` was added to the action to hide breadcrumbs, but it removed all breadcrumb navigation, unable to go back.
https://github.com/odoo/odoo/blob/92993d7790bb641e5822a5358db35c7fcc7bd091/addons/hr_expense/static/src/components/expense_dashboard.js#L44
**Solution:**
- Used a better way by passing `{ clearBreadcrumbs: true }` to stop the breadcrumb from changing when a filter is applied.
opw-4790643
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#217492The chat “Seen by” popup no longer shows dates that could imply someone viewed an older message recently. This avoids confusion by only showing who has seen a message, not an unreliable timestamp.
Original PR description
Before this commit, the “Seen by” tooltip displayed each member’s channel-level `last_seen_dt`, which for older messages could misleadingly be interpreted as “seen today” even if the user hadn’t actually viewed it recently. Furthermore `last_seen_dt` isn’t kept up to date client-side (and only gets fetched on reload), thus causing more confusion. This commit removes the date from the “Seen by” popup. Tracking a true per-message “seen at” timestamp for every user would require significantly more complex modeling and will be revisited later if necessary. task-4630168 Forward-Port-Of: odoo/odoo#211490
This fix adds a missing database index used by the Indian withholding feature. It helps avoid slow invoice lookups on large databases, improving performance without changing user workflows.
Original PR description
FK columns in large tables like `account.move` need to be indexed if an opposite one-to-many relationship is defined, otherwise reading that o2m requires a full Seq Scan of the table. Introduced via #183335 Forward-Port-Of: odoo/odoo#218497
This update makes an internal mail component available for custom adaptations. It helps teams and partners apply tailored mail-related changes more reliably without changing core behavior for regular users.
Original PR description
Useful for custom patches. Forward-Port-Of: odoo/odoo#219470
The CRM Lost filter now correctly shows opportunities that were marked as lost. This matters because sales teams can reliably review lost records for follow-up, reporting, and analysis instead of seeing an empty result.
Original PR description
#### Issue: The `Lost` filter does not reveal any records, as any records moved to the lost status are archived. #### Solution: Override default context that hides archived records when using the filter. opw-4937003
Several country accounting templates now classify bank suspense accounts as current assets instead of current liabilities. This keeps financial reports from overstating both assets and liabilities while bank statement lines are waiting to be reconciled, and prevents issues when reselecting suspense accounts on bank journals.
Original PR description
Since V14, suspense accounts are classified as current assets. They were previously classified as current liabilities while the liquidity accounts were current assets. It would artificially inflates the current assets and current liabilities as long as the bank statements lines weren't reconciled. We noticed that the belgian default suspense account is still classified as current liability. On the bank Journal, there is a domain so only current assets type can be set as default suspense account. There is no issue at the package installation but if the suspense account is removed from the journal, it can't be added back afterwards. task-4829826 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212935
This fix ensures that when employees take a one-day leave, the related timesheet entry reflects their average daily working hours. It improves consistency for flexible schedules and aligns timesheet recording with leave calculation rules.
Original PR description
After https://github.com/odoo/odoo/pull/209570 , the way work intervals are computed might not reflect real working time for flexible employees, since the virtual schedule is based on a weekly span. In this PR we chose to allocate a timesheet for single day leaves corresponding to average hours per day to be consistent with hr_holidays calculation. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218492 Forward-Port-Of: odoo/odoo#218353
The web module now correctly respects the setting that enables or disables quick user login. This helps businesses control whether the convenience feature is available, aligning login behavior with their preferences or policies.
Original PR description
This commit adds a missing parameter, allowing to disable this feature. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219313 Forward-Port-Of: odoo/odoo#219030
When an employee submits an expense and chooses a manager other than the default, the follow-up activity is now assigned to that selected manager. This helps ensure expense approvals reach the intended person and reduces delays or missed notifications.
Original PR description
When an expense is submited and you've selected a different manager than the default one, this is not the right person that gets the activity linked to the expense. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix removes an incorrect preset value from a Swiss payroll transmission setting. It helps ensure company payroll configuration uses the right underlying value and avoids setup inconsistencies.
Original PR description
…lated field Forward-Port-Of: odoo/enterprise#90425
Spreadsheet pivot autofill has been corrected so columns created through autofill can be filled again without causing a crash. This improves reliability when users extend spreadsheet data, especially around date-based pivot measures.
Original PR description
Fix crash when autofilling columns which where created by autofill. Task: 4719884 Forward-Port-Of: odoo/enterprise#86846 Forward-Port-Of: odoo/enterprise#83314