Tuesday, July 7, 2026
12 changes · 19.0
Resolved issues and error corrections
When users set accounting lock dates and have unreconciled bank statement lines, the warning button now opens the related journal entries correctly. This prevents a broken screen and helps users quickly find the items blocking the lock date.
Original PR description
### Steps to reproduce 1. Have an unreconciled bank statement line dated before a date you want to lock. 2. Set a **fiscalyear** or **hard** lock date covering that date (Accounting settings, the…
### Steps to reproduce
1. Have an unreconciled bank statement line dated before a date you want to lock.
2. Set a **fiscalyear** or **hard** lock date covering that date (Accounting settings, the API, or any wizard that writes the company lock dates).
3. Core's `_validate_locks()` raises a `RedirectWarning`; click its button ("Show Unreconciled…").
### Issue
The action fails to render — `account.bank.statement.line` has no standalone list/form view in this version (statement lines are shown within their journal entry).
### Cause / fix
`ResCompany._get_unreconciled_statement_lines_redirect_action()` builds an `act_window` on `account.bank.statement.line`. Since that model has no standalone view, the window can't render. `account.bank.statement.line` `_inherits account.move` via `move_id`, so this redirects to the related **`account.move`** records instead (which have list/form views) — the native place those lines are shown in this version.
### Notes
- 19.0-only: 18.0 still ships standalone statement-line views, so its redirect renders fine — no backport needed (robodoo forward-ports to master).
- Does **not** re-introduce the removed standalone statement-line view; it only repoints the existing action at a renderable model.This fix lowers the severity of repetitive IoT driver log messages that do not require urgent attention. It helps prevent unnecessary Sentry alerts, making real issues easier for support and operations teams to identify.
Original PR description
This PR adapts the necessary log levels to avoid spamming Sentry in a loop. Currently there is a lot of logs which can be avoided to be logged in error/exception level. see https://github.com/odoo/enterprise/pull/122414
Email marketing alert blocks now keep the intended space between them when placed next to each other. This improves the visual presentation of outgoing campaign emails and prevents alerts from appearing stuck together in recipients' inboxes.
Original PR description
Commit https://github.com/odoo/odoo/commit/97e8cc8d664e66ba62e8282a67f069805682ae41 added the `row` class to the Alert snippet's outer div, intending to use Bootstrap grid for the icon and content…
Commit https://github.com/odoo/odoo/commit/97e8cc8d664e66ba62e8282a67f069805682ae41 added the `row` class to the Alert snippet's outer div, intending to use Bootstrap grid for the icon and content layout.
During convert_inline, any element with the `row` class is converted to a `<tr>`:
https://github.com/odoo/odoo/blob/97e8cc8d664e66ba62e8282a67f069805682ae41/addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js#L284
Bootstrap's `.alert { margin-bottom: 1rem }` still inlines onto the element, but `margin-*` on a `<tr>` is ignored by every browser and mail client, so two adjacent alerts collapse with no vertical space between them.
Drop the grid classes and lay out the icon with `float: left` plus `overflow: hidden` on the content, matching the structure mass_mailing used before the refactor. The alert root stays a plain `<div>`, so Bootstrap's `margin-bottom` is preserved and adjacent alerts render with their intended spacing.
Steps to reproduce:
1. Email Marketing > New > Start From Scratch
2. Drop two Alert snippets one after the other
3. Click Test, send to yourself, open the email
=> The two alerts are flush, no vertical gap between them
Ticket [link](https://www.odoo.com/odoo/project.task/6152061)
opw-6152061This fixes a website building issue where a title form snippet had centered text locked in place. Business users can now change the text alignment in the website editor as expected, making page customization easier.
Original PR description
`s_title_form` comes with the `text-center` utility class which forbids edition through the web_editor, it needs to use inline-style instead. task-6149380 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now select and copy totals in list footers even after selecting one or more rows. This removes a small usability issue that made it harder to work with displayed totals.
Original PR description
Before this commit, selecting one or more rows in a list view disabled text selection on the whole list, which also prevented users from selecting the totals displayed in the footer. This commit fixes the issue on the list footer, so totals remain selectable even when rows are selected. task:6240238 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change fixes a timing issue in an automated test for the avatar card activity counter. By using an overdue date that works consistently across time zones, the test should no longer fail at certain times of day, improving confidence in release checks.
Original PR description
The avatar card tour asserts the systray activity counter, which only counts activities whose state is today or overdue. The test scheduled its activities without an explicit deadline, so…
The avatar card tour asserts the systray activity counter, which only counts activities whose state is today or overdue. The test scheduled its activities without an explicit deadline, so activity_schedule fell back to context_today on the class environment, whose superuser has tz Europe/Brussels with demo data. When the test runs between 22:00 and 00:00 UTC, that deadline is tomorrow from a UTC point of view. The state of an activity is however computed in the timezone of its assigned user, and hr_user is created without one, falling back to the server date (UTC). Its activities were therefore planned instead of today, the counter stayed empty and the tour timed out. The admin iteration kept passing because demo data gives admin the same Brussels timezone as the environment that computed the deadline, which is why only half the runs failed (both occurrences at 23:56 and 23:31 UTC). Schedule the activities with a deadline one week in the past instead: an old deadline is overdue in every timezone, whatever timezone the scheduling environment or the assigned user has, making the counter deterministic at any time of the day. https://runbot.odoo.com/odoo/error/941407
This update fixes an unreliable automated test in the Mail app by making it follow the same user flow as the real product. It helps reduce false test failures and improves confidence in future Mail-related releases, without changing end-user functionality.
Original PR description
The `bus subscription is refreshed when channel is joined` test is sometimes failing. This test doesn't make sense: it opens the command palette and wait for a subscription to be made. However, a subscription is only done when needed (opening the thread or being a member of the channel). The step was satisfied by luck. This commit fixes the test to reflect production code: the subscription is made once the channel is opened. runbot-941462 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Grouped list views using sample data now load reliably instead of crashing when related group information is requested. This improves the stability of demo and empty-state experiences for users exploring records before real data is available.
Original PR description
Modified `SampleServer._mockWebReadGroup` to intercept `groupby_read_specification`. It now dynamically fetches the requested related fields using `_mockWebSearchReadUnity` and safely injects them into the `__values` payload for each mock group, perfectly mirroring the standard ORM behavior. Task: [6307582](https://www.odoo.com/odoo/project/133/tasks/6307582)
The update prevents automated Croatian e-invoicing tests from making an unnecessary external Peppol lookup. This keeps validation focused on the intended invoice flows and helps maintain reliable release checks without affecting customer-facing features.
Original PR description
In the current version, the `test_send_invoice_error` and `test_10_send_invoice` tests fail. The failure is caused by a peppol request being sent as part of `_peppol_lookup_participant`. This causes the `assertRequests` check to fail due to receiving an unexpected request. This PR adds a mock patch to stop `_peppol_lookup_participant` from executing to let the tests execute correctly. runbot error: https://runbot.odoo.com/odoo/error/242404
This update lowers the severity of recurring IoT device log messages that were incorrectly treated as errors. It helps reduce unnecessary Sentry alerts so teams can focus on real issues without changing business workflows.
Original PR description
This PR adapts the necessary log levels to avoid spamming Sentry in a loop. Currently there is a lot of logs which can be avoided to be logged in error/exception level. see https://github.com/odoo/odoo/pull/273277
Shopfloor operators can now see their own and other operators' profile photos instead of generic placeholder images. This makes it easier to identify the right operator when using or editing the shopfloor operator view.
Original PR description
Currently when a shopfloor operator modifies the operator, operator images are not visible and only place holder images are visible. ## Steps to produce: - Install Manufacturing with demo data -…
Currently when a shopfloor operator modifies the operator, operator images are not visible and only place holder images are visible. ## Steps to produce: - Install Manufacturing with demo data - Login as Marc Demo - Open shopfloor ## Observed Behavior: Operator is unable to see their own profile picture and when you press the Edit Operator the operator is not able to see their as well as other operators images as well. ## Root cause: This issue occurs because by default an operator's user does not have access right for `Employees` in Human Resources section as they are not an HR officer nor an administrator. So when the user tries to access the image url that is meant for users with those access rights (HR officer / Administrator) at [1] and at [2]. The system returns a placeholder image instead of the employee image since the operator does not have access to hr employee model but does have access to hr employee public as per this [commit](https://github.com/odoo/odoo/commit/c9ca3761464413327d2beb697553a3ccd7eef4d1) [1]- https://github.com/odoo/enterprise/blob/5fe2fb44f4c8a938390343f7cdc90674cbf09391/mrp_workorder/static/src/mrp_display/dialog/mrp_employee_dialog.js#L16 [2]- https://github.com/odoo/enterprise/blob/5fe2fb44f4c8a938390343f7cdc90674cbf09391/mrp_workorder/static/src/mrp_display/employees_panel.xml#L9-L10 ## Solution: Allowing operators to see images can be done by modifying the links to use the public model instead of the private model. This will allow operators see other operators based on images and should improve user experience. | Before | |--------| | <img width="1865" height="844" alt="image" src="https://github.com/user-attachments/assets/c28f4209-0a60-486a-bfec-2a4db39cd946" /> | | <img width="995" height="899" alt="image" src="https://github.com/user-attachments/assets/7541edd9-6cc9-42d1-b5c5-39e0740d9a93" /> | | After | |--------| | <img width="1881" height="903" alt="image" src="https://github.com/user-attachments/assets/df3f8357-5cc2-4688-83dd-9a009fd56957" /> | | <img width="1221" height="862" alt="image" src="https://github.com/user-attachments/assets/c9d72b07-e1ad-43e4-85f5-00d8f1db9095" /> | opw-6321989
Correct a translation to australian English to better fit the expectations.
Original PR description
Correct a translation to australian English to better fit the expectations.