Friday, June 27, 2025
11 changes · saas-18.3
Resolved issues and error corrections
Printed documents no longer show extra blank lines when a customer address is missing one of the street fields. This keeps quotations, sales orders, invoices, and related PDFs looking cleaner and more professional.
Original PR description
**Issue**: Empty lines appeared in PDF reports (e.g. quotation, sales order, invoice...) when either the `street` or `street2` was empty. **Steps to reproduce**: - Open the Sales app - Create a new quotation - Set a customer with an incomplete address (either street or street2 left empty) - Click the "Print" button to generate the PDF **Cause**: The commit [29f7475](https://github.com/odoo/odoo/commit/29f7475437586363e473955315d74aef7d80028c) unintentionally removed a line of code that cleaned up whitespace before line breaks. This caused unwanted empty lines in the output: `name = re.sub(r'\s+\n', '\n', name)` **Solution**: -Rather than reintroducing a regex as a workaround to clean up formatting after the fact, the issue is now addressed directly in the `_display_address` method, preventing it at the source. -The test `test_import_partner_postal_address` has been adapted since the behaviour of `_display_address` changes. opw-4795300
The Kanban view now focuses the search bar only when the page first loads, rather than every time records are deselected. This prevents unexpected cursor jumps and makes bulk selection workflows smoother for users.
Original PR description
Before this commit, when deselecting multiple records in kanban view the focus is set on the searchbar. Like the list view it should take focus on first load but not each time it's displayed. Task-4813624
Addresses now skip the second street line when it has no content. This removes unnecessary blank space and makes customer or company addresses look cleaner wherever they are displayed.
Original PR description
When the address is shown, if the street 2 is empty, there is a empty line. Now, this line is removed. TASK-ID: 4900293 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an error that could appear when a customer paid through self-order while the related Point of Sale configuration was open. The system now avoids processing empty session data, preventing the checkout and ticket-printing flow from showing a traceback.
Original PR description
Step to reproduce: - Make an order in self order mode - Pay it, while the linked pos config is open - A traceback will be shown in the pos config Issue: When printing the ticket on the pos config, notify_synchronisation function is called with no records in the session model. _post_read_pos_data will be called with empty data array. Fix: Prevent calling _post_read_pos_data with empty records. 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
This fixes a small setup issue in the Austrian point-of-sale module by correcting a database script typo. It helps ensure automated checks and module installation work reliably without syntax-related failures.
Original PR description
Steps to reproduce: 1. install `l10n_at_pos` module 2. run `test_10_neutralize` test adding missing commas in the `neutralize.sql` file to ensure proper SQL syntax. Error [link](https://runbot.odoo.com/odoo/error/181676) build_error-181676
The update fixes a return review workflow issue so only newly created returns can be automatically marked as reviewed. This prevents already submitted returns from being moved backward in the process, helping preserve the correct approval status.
Original PR description
When we are trying to auto review returns, we are not checking if the return is a new return and it was possible for checks in the submitted state to be set back to the reviewed state. task-4900867
Bank statement matching now requires a longer reference before treating it as an exact match. This helps reduce incorrect automatic matches during reconciliation and improves accounting accuracy.
Original PR description
Before, aml.ref had to be at least 5char length to be a full match candidate. But it seems 5 is not enough and leads to unwanted matches, so let's increase the limit to 7. no-task
Selecting all documents now correctly focuses the first document when none was previously focused. This keeps the document details panel aligned with the current selection and avoids confusion for users working in list or kanban views.
Original PR description
Before this commit, when selecting all (ctrl-a) in kanban or list views the first document is shown in the detail panel but the focus is not set on it. This commit fix this issue, when no document is focused and we select all the focus is set on the first document, if a document is already selected when selecting all the focus will still be that document. Task-4813624
This fixes an issue where the tax returns page could fail for European companies when an optional VAT validation component was not installed. Users in affected localizations, such as Estonia, can now open returns without encountering a missing setting error.
Original PR description
the field vat_check_vies on res.company is added in the base_vat module, which is not a required dependency for account_reports. the function _generic_vies_vat_check might therefore result in an error with a missing field. runbot issue: 227603
Closing an AI agent chat no longer triggers an error when the chat session reference is missing. The fix also makes chat cleanup work consistently whether users close the chat from the window or the chat bubble.
Original PR description
Before when closing agent chat an exception occurred because the `channel_id` was undefined. This happens because when doing an await in the thread is set to `undefined`. This commit introduces a few…
Before when closing agent chat an exception occurred because the `channel_id` was undefined. This happens because when doing an await in the thread is set to `undefined`. This commit introduces a few modifications to the behaviour of the chat with the agent: Firstly, this commit moves the code calling the ORM to delete the chat history when closing the chat window to the `chat_window_model_patch.js`. This allows for the behaviour to also be applied when closing the chat from the chat bubble. Additionally, the function has been modified to ensure that the thread is defined when the ORM call is made. The ORM call to close the agent chat was simplified to use the already existing `close_ai_chat` from the `discuss.channel` override. The method now uses a new `channel_type` "ai_chat", to identify channels which contain an `ai.agent`. Along with the new `channel_type`, a new function `_get_or_create_ai_chat` was introduced to properly create the "ai_chat" channels. task-4796898
The spreadsheet filter side panel now uses less space for field labels, leaving more room for matching fields. This makes the panel easier to read and use when configuring spreadsheet filters.
Original PR description
reduce the size of the label that took nearly half the width of the sidepanel.