Thursday, January 9, 2025
18 changes · 18.0
Resolved issues and error corrections
Discuss call notifications are now only sent while a call is active. This prevents stray peer-to-peer notifications after a call has ended, reducing confusing or unnecessary communication behavior for users.
Original PR description
Before this commit, a race condition could allow attempts to send peer notification to go through despite not having a call. This could happen if a `_busNotify()` call follows a promise that is resolved after the end of a call. This commit fixes this issue by ensuring that notifications can only be sent when a call is active.
Fixes a live chat chatbot issue where a visitor's selected answer could briefly fail to appear correctly after being posted. This improves reliability in chatbot conversations and reduces flicker or inconsistent message display for website visitors.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/192076 PR above fixes issues regarding question-answer step of chatbot: to detect which answer was picked, it was comparing item selected text content…
Follow-up of https://github.com/odoo/odoo/pull/192076 PR above fixes issues regarding question-answer step of chatbot: to detect which answer was picked, it was comparing item selected text content with each possible answers. This worked as long as each possible answer had mutually exclusive text content. If one proposition had X and another had no X, one option could be unreachable. To solve the issue, PR above tracks the `select_answer_id`. When the user posts a message, the selected answer is returned in RPC response as store data. The selected answer is put in the question message of chatbot. This means the `message_post` store data contains 2 messages. The implementation of message_post in JS is naive and assumes the data contains only 1 message. Therefore when inserting the store data, it was assuming the 1st inserted message in store was the newly posted message. However in this particular case, the 1st inserted message was the question message of chatbot, not the user answer message. As a result, the test `test_complete_chatbot_flow_ui` had the following non-deterministic issue because of this: ``` Failed to find 1 of ".o-mail-Message" inside a specific target with text "I'd like to buy the software" (as parent). Found 0 instead. ``` This commit fixes the issue by putting the message_post message (the answer of user) before the question message of chatbot. This is the chosen fix as this is minimal. The destruct of store.insert() in message_post is too naive and should be changed by something more robust in the future. Note that this problem was not present in practice: the visitor message was visible but with minimal flicker. This is because the bus notification was adjusting the UI from the erroneous message_post result. runbot-111747
This fix ensures that when users create or edit bank statements from the transaction or reconciliation screens, manually entered statement names are no longer overwritten automatically. It also allows draft or newly imported bank statements to be saved before any transaction lines are added, reducing save errors during import workflows.
Original PR description
Step to reproduce * open the reconcilation widget and toggle the list view * multi edit bank statement lines and assign them a new bank statement with name 'BLABLA 1' * click save and see how Odoo…
Step to reproduce * open the reconcilation widget and toggle the list view * multi edit bank statement lines and assign them a new bank statement with name 'BLABLA 1' * click save and see how Odoo just didn't keep your name at all The reason is that the module account_bank_statement_extract forces the recomputation of the name when the statement's date changes which happens at the creation (and triggers our bug) but also when the OCR fills that value (in which case we still want that). So to fix that, * the default name of the statement line now check if the statement date is falsy, to avoid having a default name as 'BNK1 Statement False', and fallback on the create_date * when filling the OCR values, we check if the statement still has the same structure, we can assume it wasn't manually changed and we can safely replace the default name ticket-4424021 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 an error that occurred when multiple stock lot records were created at once through external integrations. Businesses using automated inventory workflows can now create batches of lot records reliably without running into a missing argument failure.
Original PR description
Before this commit: creating stock lot records (multi) via the xml.rpc resulted in a bug: missing argument 'vals_list'. After this commit: It is possible to create multiple stock lot records without this bug --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Self-ordering now sends the assigned stand number to the server when an order is meant to be served at a table. This helps staff identify where to deliver orders and prevents missing location details in the point-of-sale flow.
Original PR description
Before this commit, if the order was set to be served at a table, the assigned stand number was not sent to the server because the draft order was sent to the server before opening the stand number page. opw-4457394 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users in an active Discuss or live chat call now get a browser confirmation prompt before refreshing, closing the tab, or navigating away. This helps prevent accidental call drop-offs and keeps conversations connected when users change pages by mistake.
Original PR description
Before this commit, when there's an ongoing Discuss call in a browser tab, page refresh or closing the tab was quitting the call immediately. Sometimes the closing of tab happens by mistake, but when navigating on the website with livechat, visitors in a call were likely to quit the call from loading another page in place. This commit prevents the closing of tab when there's an ongoing call, so that user can dismiss it if this was a mistake and wants to stay in call. Note that the dialog text is generic, as it cannot be customised on browsers. Partial port of https://github.com/odoo/odoo/pull/189428 Task-4453087
This fixes a database upgrade issue in the Vietnam localization that could block upgrades with an error. It restores the correct migration logic so affected customers can upgrade more reliably.
Original PR description
The post-migration script _fix_accounts_type attempted to use the field company_id, which no longer exists in the account.account model in the 18 version. This caused a traceback ValueError: Invalid field during the database upgrade process. The original fix was introduced here: https://github.com/odoo/odoo/pull/190187, but it was accidentally reverted by this pull request: https://github.com/odoo/odoo/pull/191324 [reference](https://github.com/odoo/odoo/commit/854c3b2#diff-19ef5a530c506fdee93fe0d113e61946b87fae7dd2d360558da69c0014f766b2R102) tbg-1602 upg-2406964 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an automated website editor test that could fail depending on timing when switching languages. The change helps keep quality checks stable, reducing false failures during development and releases.
Original PR description
In this commit, we fix the tour snippet_translation_changing_lang. The problem is that we don't wait for the DOM to be re-rendered before clicking on the dropdown to open the editing dropdown. So, if we click before the DOM is re-rendered, it also re-renders the dropdown menu and it disappears. So depending on the execution speed of the tour, it may fail. This commit fixes this behavior. 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
The Point of Sale now refreshes product cards based on the selected order, so separate free orders no longer show the wrong product when quantities match. This helps cashiers avoid confusion and reduces the risk of processing an incorrect order.
Original PR description
Steps to reproduce: 1. Create a new free order and add 2 quantities of any product. 2. Create another free order and add 2 quantities of any product different from 1st order. 3. Switch to orders 1 and 2, and you'll see the same product and quantity loading in both orders. Issue: - Both free orders show same product card if quantity is same. Fix: - UseEffect was set to update on order rather than quantity. task-4438675
Odoo now keeps a user-entered bank statement name when statements are created from the transaction list. Default names are only regenerated when appropriate, preventing manual names from being overwritten while still using OCR dates when available.
Original PR description
…nsaction list view Step to reproduce * open the reconcilation widget and toggle the list view * multi edit bank statement lines and assign them a new bank statement with name 'BLABLA 1' * click save and see how Odoo just didn't keep your name at all The reason is that the module account_bank_statement_extract forces the recomputation of the name when the statement's date changes which happens at the creation (and triggers our bug) but also when the OCR fil> So to fix that, * the default name of the statement line now check if the statement date is falsy, to avoid having a default name as 'BNK1 Statement False', and fallback on the create_date. Same for the journal_code since journal_id isn't required. * when filling the OCR values, we assume it wasn't manually changed (why whould it be?) and we replace the default name since we now know the real date ticket-4424021
Fixes issues in Knowledge article comments where comment highlights could disappear while zooming and newly created comments could open unexpectedly after clicking the article overlay. This makes reviewing and adding comments more reliable and less disruptive for users.
Original PR description
## [FIX] knowledge: fix disappearing comments overlay This commit fixes an issue with the comments overlay when zooming and dezooming on the article. At certain sizes the overlay of the comment would…
## [FIX] knowledge: fix disappearing comments overlay This commit fixes an issue with the comments overlay when zooming and dezooming on the article. At certain sizes the overlay of the comment would disappear without reason. This is caused by the rect computations done to identify the correct overlay to draw. The target selected by the coordinates given to the `elementFromPoint` method would be incorrect. This happens because the coordinates weren't the center of the rectangle but the top. Which means that for certain resolutions the element selected is the whole body instead of the correct paragraph/text node. Now, the coordinates are computed so that we are indeed at the center of the rect. ## [FIX] knowledge: avoid opening new comments on click This commit fixes an issue with the knowledge comments small UI. When you create a comment in small UI and click on the overlay in the body of the article, the newly created comments open its popover. This behavior shouldn't happen in any circumstances except when in readonly mode. task-4463401
Starting or resuming a timer in the timesheet grid now correctly shows which row has the active timer, including after refreshing the page. This helps users see their current tracked work at a glance and avoids confusion when recording time.
Original PR description
Before this commit, when the user starts a new timer on the grid view and a timesheet is created, the timer is not marked as running on the row contained the project. Same issue when a timer is running and the user refreshes the page. This commit adds the needed data to make sure the grid view finds which row has the timer running.
The sales external tax test now clears pricelist settings before running so expected prices stay consistent. This prevents false test failures when a pricelist would otherwise change product values during the portal tour.
Original PR description
Since #76586 the tour checks for exact values, if a pricelist happens to apply, then the product value will be altered and not match expectations. Reset pricelists to ensure consistent execution environment.
Documents can no longer be saved after renaming without a valid name. This prevents unnamed documents from displaying as “False” and helps users catch the issue immediately with a clear save warning.
Original PR description
When we rename any doc without a name, it shows 'False' because the field isn't set as 'required.' Making it mandatory will trigger a red alert on save, ensuring a valid name is entered. Task-4367684
This fix prevents an error when users create a foreign fiscal position after generating a tax closing entry. It keeps accounting configuration workflows working smoothly for companies managing foreign tax registrations.
Original PR description
After creating the tax closing, users attempting to create a foreign fiscal position will see a traceback Steps to reproduce: - Go to Accounting / Reporting / Statement Reports / Tax Return - Click 'Closing Entry' and generate the report - Go to Accounting / Configuration / Accounting / Fiscal Positions - Create a new Fiscal position with: - Detect Automatically: true - Country: Germany - Foreign Tax ID: DE123456789 - Save Issue: Traceback will raise `AttributeError: 'account.fiscal.position' object has no attribute 'filter_multi_company'` opw-4376837
Fixes an issue where the Trial Balance could not display additional balance-related columns after a performance change in version 18.0. This helps users see the expected financial figures without losing the speed improvements from the earlier update.
Original PR description
Since 18.0[^1], the ending balance is done by summing the values fetched instead of querying the database again. While this is a great performance gain, it also means that we can't get other values like the balance. Note that the Trial Balance has been refactored in 18.1[^2], so a simple fix is enough. opw-4435450 [^1]: e598fcb48b5e4f0126406a4008f175a88528ba85 [^2]: a7e1ec20e07efc39bca44d3ae613a54770175273
Swiss ISO 20022 payment files will now include the recipient bank identifier when it is available, instead of always omitting it. This helps avoid rejected EUR payments at banks that require this information while keeping it optional where not needed.
Original PR description
The fix previously done[^1] was always removing the BIC number because it is "optional". While it should be optional, some banks require it for payments done in EUR. The reason the previous fix was done was to avoid having the `Othr` tag, but that tag won't be used outside of methods returning `False` explicitly for `_skip_CdtrAgt`. opw-4423834 [^1]: 1a221f2f3160a48dc7ba08ea59c6781071b1adf3
This update makes the Italian point of sale payment setup include the split payment index field so it can be configured properly. It helps prevent checkout errors caused by multiple payments sharing the default value.
Original PR description
This field is used to manage split payments on the PoS. If this field is not set and remains at its default value (`0`), it causes an error on the PoS. Error message: `OwlError: Got duplicate key in t-foreach: 0`