Tuesday, July 22, 2025
11 changes · saas-18.1
Resolved issues and error corrections
A flaky automated test around chat notifications was fixed so it reliably waits for messaging to be ready before checking for new conversation alerts. This improves confidence in release validation without changing the experience for end users.
Original PR description
Before this commit, new test "Show conversations with new message in chat hub (outside of discuss app)" would non-deterministically crash with following error: ``` Failed to find 0 of…
Before this commit, new test "Show conversations with new message in chat hub (outside of discuss app)" would non-deterministically crash with following error: ``` Failed to find 0 of ".o-mail-ChatBubble[name='Dumbledore']" (Timeout of 3 seconds). Found 1 instead. ``` This happens because the test `start()` and immediately simulate a new message from another user to show a chat bubble with badge "1". The badge is shown when this is a new message from init messaging, which doesn't necessarily mean `await start()` has messaging fully initialized. When discuss is not fully initialized, the new message post would be considered as not a new message and thus wouldn't open a chat bubble with badge. This commit fixes the issue by using a similar pattern as many other tests to ensure discuss is fully loaded initially: have it open a conversation with at least 1 message and assert the message is visible on the UI. Fixes https://runbot.odoo.com/runbot/build/85195954 Forward-Port-Of: odoo/odoo#219824
Electronic invoice exports now include product barcode information in the standard item identification field, matching what the system already reads during imports. This improves consistency between imported and exported invoice data and helps trading partners identify products more reliably.
Original PR description
[FIX] account_edi_ubl_cii: export product barcode too Currently we use the `Item/StandardItemIdentification` as the barcode when importing a product. But we do not export the same information. In 18.0+ the `Item/StandardItemIdentification` was added to the UBL XML (for exporting) in commit 72e312815f372de88388c47c612bb5f44b4d8b4e. But there it is only used in `l10n_co_dian`. After this commit we export and fill the tag "by default". task-4941855 Forward-Port-Of: odoo/odoo#219391 Forward-Port-Of: odoo/odoo#218779
This fix prevents the website editor from crashing when users press Tab after clicking a header menu without placing the cursor in editable content. It improves editing stability by safely handling cases where no text selection is available.
Original PR description
This PR fixes traceback issue: Steps to Reproduce for 1st traceback: 1. Go to Website in edit mode. 2. Click on the menu in the header such a way that the cursor is not placed inside. 3. Press the tab key. 4. You will receive the traceback. Issue: When the selection is null, the anchorNode also becomes null, resulting in closestUnbreakable being null. Therefore, we should avoid accessing nodeName on a null element to prevent errors. Fix: Safely access elements using optional chaining to prevent errors when elements are not found. task-4577864 Forward-Port-Of: odoo/odoo#200548
This fix makes automated website tours handle page changes more reliably when navigating to a new URL. It reduces unpredictable test behavior, helping teams catch real issues instead of intermittent failures.
Original PR description
In this commit, we add expectUloadPage to goToUrl util. This util redirect to another page an involves a unload event so we need to add this key to this util to avoid undeterministic behaviors in tours that use it. 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 Forward-Port-Of: odoo/odoo#219672
This update makes an automated test for messaging connection warnings more reliable by reducing artificial wait times during the test scenario. It helps prevent false test failures in busy environments without changing the user-facing messaging experience.
Original PR description
The "show warning when bus connection encounters issues" test simulates a disconnected WebSocket that fails to reconnect. In this scenario, an alert is shown to warn the user that some features may…
The "show warning when bus connection encounters issues" test simulates a disconnected WebSocket that fails to reconnect. In this scenario, an alert is shown to warn the user that some features may be unavailable or slow. However, the websocket worker’s initial reconnect delay is 1.5s, with an added random jitter up to 1 second which means the first reconnect attempt can take up to 2.5s. The test waits up to 2.5s for the alert to show, which is not always enough. The reconnect attempt alone may be that long, and under high CPU load, processing the resulting event can take even longer. This commit reduces the initial reconnect delay and the jitter during this test, ensuring that the reconnect attempt fails and the alert is shown within the expected time. fixes runbot-226443 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 Forward-Port-Of: odoo/odoo#219649
The automatic invoice sending scheduled job now reports how many invoices it actually processed and how many remain. This avoids misleading progress logs that previously suggested no records were handled, making monitoring and support clearer.
Original PR description
The scheduled action for the automatic sending of invoices currently does not explictly use the `_notify_progress` method introduced since Odoo 18 to track the progress of CRON jobs. This means that implicitly, by default the CRON will log `processed 0 records, 0 records remaining` at each run. This can be confusing, as the automatic invoice sending CRON is batched, and might run multiple times in sucession, reporting each time that it processed 0 records (which might not be true). ## Proposed fix: We correctly count the total account moves that need to be processed (using a `search_count`) and calculate the number of processed records and the remaining ones. opw-4926541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218763
The partner invoicing tab now keeps the General section, including bank details, visible for basic invoicing users. Advanced accounting fields are only shown when the full accountant module is installed, reducing confusion and ensuring users see fields relevant to their setup.
Original PR description
In this PR: - Keep General section with bank field visible for basic invoicing users and hide account fields (receivable/payable/autopost) when only account or account_accountant is installed. - Show account fields only when full accountant module is installed . Task-4953707
The Dutch reporting settings page now reliably shows the SBR certificate option. This fixes a configuration display issue caused by overlapping settings views, helping users find the needed certificate setup without confusion.
Original PR description
Due to concurrent settings views, one of them wasn't displayed. Changed to be in one file, with different ids
Users with Invoicing & Banks access can now see the General section on partner forms, including bank-related fields. This fixes a visibility issue without expanding access to accounting configuration fields reserved for full accounting users.
Original PR description
In this PR: Changed General section groups from `account.group_account_user` to `account.group_account_basic `to ensure users with **Invoicing & Banks** access can see bank fields in partner form. This resolves the issue where the General section was completely hidden when only account_accountant was installed, while maintaining restriction of account configuration fields to full accounting users only. Task-4953707
Users without administration settings access can now use the Reload AI Data button without encountering an error. This keeps invoice digitization workflows running smoothly for day-to-day accounting users.
Original PR description
When clicking on the "Reload AI Data" button (`account.move::action_reload_ai_data`), a user not in `base.group_system` group encounters an access rights error when searching on `ir.module.module` model in `account.move::is_indian_taxes()`:
```python
def is_indian_taxes(self):
l10n_in = self.env['ir.module.module'].search([('name', '=', 'l10n_in')])
return self.company_id.country_id.code == "IN" and l10n_in and l10n_in.state == 'installed'
```
This commit adds `sudo()` to the `search` call to ensure that the check for the 'l10n_in' module does not fail for users not belonging to "Administration/Settings" group.
This prevents a traceback and ensures that functional users can reload AI data.
Forward-Port-Of: odoo/enterprise#90021This update adjusts an internal subscription billing test so it no longer depends on a specialized recurring invoice process. This helps keep automated checks reliable for customized deployments without changing customer-facing subscription behavior.
Original PR description
The commit 0d1b3dd03629c8e0499f537056c5ccd45cf094cd introduces a new test `test_subscription_invoice_after_second_period_payment` that uses `_create_recurring_invoice` to create a first invoice. However, overriding modules might consider that recurring invoices should only create invoices for subscriptions that have a payment token (as we do in our internal codebase). Since this test wants to check that the second invoice won't include the non-recurring lines, and not how the `_create_recurring_invoice` method behaves, it can use more basic calls to create this invoice.