Friday, January 16, 2026
45 changes · saas-19.1
Enhancements to existing features
This update modifies the tax names and descriptions used in Odoo's accounting system for Belgium. These changes ensure accurate reporting and compliance with Belgian tax regulations. The update aligns with internal task 5363874.
Original PR description
### With this commit:- - We are updating the current tax name and its description in Belgium. - Please visit the task for more reference. task-5363874 Forward-Port-Of: odoo/odoo#243142 Forward-Port-Of: odoo/odoo#236242
This update enhances the Point of Sale interface by visually indicating payment status. Remaining amounts are now highlighted in green when positive and red when negative, providing clearer feedback to users about outstanding balances. This improves the user experience and helps ensure accurate order processing.
Original PR description
The aims of this pr is to put the payment status and amount in green when the Remaining amount is positive. And in red for negative amount. task: 5491579 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243760
This update makes the 'Open Cashbox' button in the Point of Sale (PoS) interface more visible and user-friendly. The change is a small UI adjustment that enhances the overall customer experience. This improves ease of use for cash-based transactions.
Original PR description
Little UI changes on the Open Cashbox button in the PoS. task: 5441682 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243224
This update clarifies the labels and settings related to Peppol reception within Odoo Enterprise. It adjusts requirements based on a company's Peppol participation role and prevents unnecessary fields from being required for companies only sending data. This ensures smoother integration with Peppol networks.
Original PR description
In this commit: Clarify Peppol reception mode labels to better reflect actual behavior. Update Settings field requirements based on the Peppol participation role. Prevent document-related fields from being required when the company is configured as sending-only. Task-5438539 Co-authored: [Soham Zadafiya (soza)](soza@odoo.com) Forward-Port-Of: odoo/enterprise#104430
Resolved issues and error corrections
This update resolves an issue where applying a zero-amount discount in the sales order system would trigger an error. The fix ensures the system handles zero discounts gracefully, preventing disruptions to the sales process. This improves the reliability of discount application.
Original PR description
The system raises an error when the user tries to apply a fixed amount discount of 0.0. **Steps to produce:** - Install `Sales` module with demo data. - From the settings enable `discount`. - Make a sale order with product > click on Discount > click Fixed Amount and set amount as `0.0` > click on apply. **Error:** `ZeroDivisionError : float division by zero` **Cause:** - When the discount amount is set to 0.0, at [1] we attempt to compute the factor, which causes an error due to a division by zero. **Solution:** - Added a condition to check that current_base_amount_currency is not zero, and if it is, set the factor to 0.0. [1]: https://github.com/odoo/odoo/blob/10887c3081afbfd0734c6a3ac24301c94d14bc24/addons/account/models/account_tax.py#L3718-L3720 **sentry-6967181350** I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233151
Miscellaneous changes
This update resolves an issue where users would encounter access errors when closing the 'Thank You' dialog after signing a document from a record they couldn't access. The system now verifies read access to the related record before redirecting, ensuring a smoother sign-off experience for all users.
Original PR description
Version: - 18.0 Steps to reproduce: - Send a signature request to an internal user from a record that the signer cannot access. - The user signs the document and then tries to close the Thank You dialog. Before: - When a user signs a document sent from a record they don’t have access to, closing the "Thank You" dialog triggers an access error. - This happens because the system tries to open the related record after signing, but the signer does not have permission to view that record. After: - Now the system first checks if the signer has read access to the related record before redirecting. Impact: - Users will not see an access error message after signing a document. task-5353126 Forward-Port-Of: odoo/enterprise#104161 Forward-Port-Of: odoo/enterprise#100961
This update fixes an issue where formatting applied to text using shortcuts didn't consistently transfer to newly typed content. Previously, the cursor would jump outside the formatting element after applying a shortcut. Now, formatting will correctly inherit when using shortcuts, ensuring a smoother and more reliable experience for users creating and editing formatted content within the HTML editor.
Original PR description
#### Description of the issue this PR addresses: - When using shortcuts (e.g. typing '1. ') after applying inline formatting, newly typed text did not inherit the formatting. - This occurred because extracting the shortcut text left the formatting element empty, causing the cursor to move outside it. #### Desired behavior after PR is merged: - Ensure the caret remains inside the formatting element by filling the closest element of `focusNode` when it becomes empty during shortcut handling. #### Steps to Reproduce: - Go to To-Do, Create a new record. - Type formatted text (e.g. Ctrl+[b|u|i]). - Press Enter. - Type '1. ' to create a list. - Type text inside the list item. => The text inside the list does not retain the formatting. task-5468358 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242209
This update resolves a bug where the HTML editor incorrectly inserted tab characters into content, even when selecting mixed block types. The fix now ensures that tabs are only applied to contenteditable paragraph blocks (like headings and paragraphs), preventing unwanted indentation and improving editor usability. This ensures consistent formatting within the editor.
Original PR description
#### Description of the issue this PR addresses: - Tab indentation was applied to non-paragraph and non-contenteditable blocks, leading to incorrect indentation behavior when a selection contained mixed block types. #### Desired behavior after PR is merged: - Filter selected blocks to indent only contenteditable paragraph-related elements (h1–h6, p, pre, blockquote, and div.o-paragraph), while excluding blocks marked as contenteditable="false". #### Steps to Reproduce: - Open a new to-do record. - Insert: Table, Table of Content, Banners, attachment, (18.2 - Toggle List) - Select all editor content using Ctrl + A. - Press the Tab key multiple times. => Multiple editor tab characters are inserted at unintended positions. task-5452410 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241806
This update fixes an issue where pressing the Backspace key in empty HTML editor banners or code blocks did nothing. Now, Backspace will correctly remove these elements, transforming them into a standard base container. This improves the editor's usability and ensures consistent behavior.
Original PR description
### Description of the issue/feature this PR addresses: - Pressing `Backspace` inside an empty banner or code block did nothing. ### Desired behavior after PR is merged: - Pressing `Backspace` in an empty banner or code block will transform them into a base container. task- 5384545 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238640
This update removes a redundant CSS class from the Point of Sale module. The class was previously used to limit button width but is no longer needed. This cleanup improves the codebase and reduces potential maintenance overhead.
Original PR description
The issue was to put the button css class at a max width of 200px. But it's not used anymore. So it can be deleted bug was created from this pr : https://github.com/odoo/odoo/pull/243770 task : 5493872 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243831
This update resolves an error that occurred when users deleted the 'Balance' line in the General Ledger Report. The fix prevents the report from crashing when a balance isn't present, ensuring a smoother user experience. This improves the reliability of a core accounting function.
Original PR description
Currently an error is generated when the user deletes the `Balance` line of `Column` tab from the General Ledger Report as in the below steps: - Install accountant with demo data - Go to Accounting >…
Currently an error is generated when the user deletes the `Balance` line of `Column` tab from the General Ledger Report as in the below steps: - Install accountant with demo data - Go to Accounting > Configuration > Accounting (section) > Accounting Reports - Open the General Ledger report - Delete the balance line from the Column tab - Go to Reporting > General ledger >> Error occurs (If an error does not occur, try opening the detailed view of the journal in the report.) Error: `KeyError: 'balance'` This issue was generated because at code line [1] tries to access `balance` key from the `colname_to_idx[col_group_key]` but since the user deleted `balance` it will not fount there and we got an error. This commit fixes the issue by preventing the processing of `line_balance` when the balance key is not present in `colname_to_idx[col_group_key]`. [1]: https://github.com/odoo/enterprise/blob/340abdc1b00df4d3d6130b26650519ae8354d199/account_reports/models/account_general_ledger.py#L326 sentry-7105657812 Forward-Port-Of: odoo/enterprise#102113
This update fixes a visual glitch in Firefox where the page would jump after undoing actions involving tall snippets. The team adjusted how snippets are scrolled to the top, which is now the more intuitive behavior. This ensures a smoother user experience.
Original PR description
Steps to reproduce: - On Firefox, drop a snippet taller than the page height. - Remove it. - Undo. => The page shows a white gap until you scroll again. Same issue when showing a hidden tall snippet. After investigation, no real explanation was found for this bug in Firefox. We only observed that changing the "center" parameter to "start" in the "scrollIntoView" function fixes the issue. In the end, this is not a bad idea, since scrolling a snippet to its beginning arguably makes more sense than centering it, especially when the snippet’s height is larger than the viewport. task-5194559 Forward-Port-Of: odoo/odoo#241518
A customer modified their Gift Card and E-Wallet products to use stock, causing an inventory inconsistency. This fix prevents the system from reverting these products to their original service-type status, resolving a test case error. Given the recurring nature of this request, we're considering a more general solution.
Original PR description
The customer changed the service-type products “Gift Card” and “E-Wallet” to storable products and used them in stock. May be they could use as physical gift cards, and physical e-wallets for company. As a result, these products now have on-hand quantities, which creates an issue. After the upgrade, they will be converted back to service-type products, causing an on-hand quantity inconsistency in the test case. To avoid this error, we need to keep these products as storable. TO do that we have to mark them noupdate. This is a customer-specific change, but since we have received many similar requests, we should consider making a generic fix if possible. 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#242555 Forward-Port-Of: odoo/odoo#237517
This update removes unnecessary system notifications (like user joins/leaves) from appearing on leads. These notifications were distracting and irrelevant to users. This change improves the lead management experience by streamlining information.
Original PR description
Before this commit, system notifications such as "user join/leave the chat" would be displayed in the created lead/ticket. Those messages are not useful in anyway and should be excluded. task-5491212 enterprise: https://github.com/odoo/enterprise/pull/104336 Forward-Port-Of: odoo/odoo#243856
This update resolves an issue where the USB printer functionality would unexpectedly stop working when a printer lid was open. The fix ensures the system gracefully handles situations where printer data isn't immediately available, returning an empty byte string instead of a failure result. This maintains consistent printer operation.
Original PR description
When using the `python-escpos` library with a USB printer, we had to patch the read method to retry due to the result not always being immediately available. However, in the case where all the retries are exhausted, it currently returns `None`, whereas the library always expects a `bytes` result. This commit fixes the issue by returning `b""` when no result can be read. This prevents the `python-escpos` functionality from being disabled when the printer lid is open. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244043
This update ensures that survey spreadsheet exports consistently use the originally recorded date/datetime format for all answers, regardless of changes to the question type. Previously, modifying a question type after a response could cause formatting issues. This change guarantees data integrity and avoids errors when exporting historical survey results.
Original PR description
Current behavior before PR: - Survey spreadsheet export derived date and datetime formatting from the current question type. - Changing a question type after submission (date to datetime) could lead to incorrect formatting or export errors for existing answers. Desired behavior after PR is merged: - Spreadsheet export now derives value conversion and formatting from the stored answer type instead of the question definition. - Historical answers keep their original date or datetime format, even if the question type is modified later. Task: [5410758](https://www.odoo.com/odoo/project/2328/tasks/5410758) Forward-Port-Of: odoo/enterprise#102930
This update fixes a technical error that could cause a failure when displaying complex web pages. The fix ensures that the system only attempts to unfold and read data when a specific specification is provided, preventing a 'NoneType' error. This improves overall stability and prevents unexpected disruptions to web page functionality.
Original PR description
An error occurs when `web_read_group` is called without an unfold specification. **Error:** `TypeError - 'NoneType' object is not iterable` **Cause:** Here the method `web_read_group` unconditionally calls `all_records.web_read(unfold_read_specification)` - [1] However, `web_read` requires a valid read specification. If `unfold_read_specification` is None [2], it fails when trying to iterate over it during record mapping. **Fix:** This commit only unfold and reads group records when `unfold_read_specification` is given. [1] - https://github.com/odoo/odoo/blob/e8a41b5b50ac71974d98c18fa9d47e37e0f7763f/addons/web/models/models.py#L449-L449 [2] - https://github.com/odoo/odoo/blob/e8a41b5b50ac71974d98c18fa9d47e37e0f7763f/addons/web/models/models.py#L317 sentry-7112641140 Forward-Port-Of: odoo/odoo#241754
This update fixes an issue where dynamic snippet templates weren't fully updating their container widths after a change. The fix ensures all container classes are cleared, preventing outdated styles from persisting and guaranteeing consistent layout updates for dynamic content. This improves the overall visual presentation of the website.
Original PR description
Steps to Reproduce: 1. Drop a dynamic snippet from debug block. 2. Set the fetched elements to 1. 3. Set the content width to Thin (o_container_small). 4. Change the template of the snippet. When changing a dynamic snippet's template, previously set container widths (e.g., "Thin") could persist even though the option resets. Issue: Only template defined containerClasses were removed, leaving manually set classes like "o_container_small" behind. Fix: All container classes are cleared before applying the new template's containerClasses or falling back to "container". Forward-Port-Of: odoo/odoo#241804
This update ensures that users who have set their status to 'do not disturb' are no longer receiving inbox messages. Previously, this functionality was inconsistent with push notifications, leading to unnecessary alerts. This change improves user experience and reduces potential distractions.
Original PR description
Users shouldn't be notified when they set their status as "do not disturb". It's already done for push notifications but inbox messages follow a different path. 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#244059
This update fixes a problem where inviter notifications were sent for all invited users, including portal users, leading to unnecessary alerts. Now, inviter notifications are only triggered when an internal user connects for the first time, streamlining the process and improving the user experience.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ When a user was invited to Odoo, the inviter received a first-connection notification when the invited…
**Description of the issue this PR addresses:** ------------------------------------------------ When a user was invited to Odoo, the inviter received a first-connection notification when the invited user connected for the first time. This notification was triggered for **all user types**, including portal users. For portal users, this resulted in unnecessary toast notifications and chat window pop-ups. **Current behavior before PR:** --------------------------------- - The inviter is notified when any invited user connects for the first time. - This includes portal users. - Unnecessary notifications and chat pop-ups are shown for portal user connections. **Desired behavior after PR is merged:** ----------------------------------------- - The inviter is notified **only when an internal user** connects for the first time. - Portal users no longer trigger first-connection notifications. - The notification message is updated to: “[Username] just connected for the first time. Wish them luck!” **Task:** [4105780](https://www.odoo.com/odoo/project/1519/tasks/4105780) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242235
This update resolves a recurring test failure in the HTML Editor's toolbar. The issue stemmed from the toolbar being a popover, requiring a longer wait time for updates. By using a 'waitFor' mechanism, the test is now more reliable and consistent, ensuring smoother operation for users.
Original PR description
Waiting one animation frame for the toolbar to update is not enough because the toolbar is a popover and is therefore affected by [1]. Use `waitFor` to avoid non-deterministic test failures on runbot. runbot-237773 [1]: https://github.com/odoo/odoo/commit/54da715df84789f9a1acc0cfc91be41dcdbab140 Forward-Port-Of: odoo/odoo#243568
This update fixes a reporting issue in our Point of Sale (POS) system. Previously, sales statistics didn't fully account for completed transactions with 'done' statuses. Now, all invoiced orders in the 'done' state are included, providing a more accurate and complete picture of each POS session's sales performance.
Original PR description
When computing the sales statistics for a POS session, include invoiced orders (state 'done') along with paid orders (state 'paid'). This ensures that all completed transactions are accounted for in the session summary. opw-5475876 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242808
This update resolves a technical issue that caused a traceback error when removing a pay category selection for employees in the payroll section. The fix ensures the system handles data removal correctly, preventing unexpected errors and improving payroll stability.
Original PR description
Fixed a traceback bug that appears when removing unselecting the Pay Category in the Employee's form payroll tab Steps to reproduce: - Select a pay category for an employee - Delete your selection - Traceback appears Cause: _compute_display_be checks on the name of the structure_type_id without checking that this field is not null, producing a bug when its value is removed task-5453432
This update addresses a technical issue where clicks within editable lists were unintentionally triggering unwanted actions. A new feature was added to allow developers to 'ignore' clicks within specific list elements, ensuring proper list editing functionality. This resolves a bug impacting user experience.
Original PR description
Since commit 37d78a4, the global click listener sets `capture: true`, which prevents other components to stop the propagation of the click event in order to maintain the focus on the selected list element. This commit introduces a special data key that can be set on an element so that any click occurring within it will be ignored by the list renderer. task-none but necessary for https://github.com/odoo/enterprise/pull/103732
This update resolves a test failure within the 'test_discuss_full' module. The fix ensures the correct time zone is set for a test record, preventing an assertion error. This improves the reliability of our automated testing process.
Original PR description
This commit fixes a failing assert in `test_10_init_store_data`. The test fails since [1] due to asserting the value of the OdooBot time zone as False. This commit explicitely sets the time zone of the OdooBot partner record and asserts it. [1] https://github.com/odoo/odoo/pull/210094 runbot-237777
This update corrects a reporting issue where live chat response times continued to track even after a customer closed the conversation. The fix ensures response times accurately reflect the actual chat duration by stopping the tracking when the chat is closed, preventing inflated reporting figures. This improves the accuracy of live chat performance data.
Original PR description
Before this commit, the response time for a live chat conversation did not stop until the operator leaves the conversation, even if the customer had already closed it. This leads to response times that are longer than the conversation duration. The reason for this behavior is that the response time is indiscriminately checking for the first agent message. If the live chat gets closed by the customer without answer, the first message will be "Agent left the channel", posted upon the agent leaving the conversation. Once the conversations is closed the response time should stop as it can be expected that an operator does not pay attention to already closed chats This commit fixes the issue by setting the `time_to_answer` to NULL if the first message is posted after the live chat is closed. task-5117556 Forward-Port-Of: odoo/odoo#242895
This update fixes an issue where appointment dates were displayed out of order in the online booking cart. The fix prevents dates from being split into multiple lines, which previously caused the reversal of date order when the data was processed. This ensures accurate date presentation for customers during the booking process.
Original PR description
**Steps to produce:** - Install `appointment,website_sale` modules. - Go to website > appointment > Online Cooking Lesson. - Book a slot > Proceed to payment. - Open the cart. **Issue:** - The…
**Steps to produce:** - Install `appointment,website_sale` modules. - Go to website > appointment > Online Cooking Lesson. - Book a slot > Proceed to payment. - Open the cart. **Issue:** - The appointment dates are displayed in an incorrect order in the cart. **Root cause:** - In the linked commit, the logic reverses the `self.name` lines to fix a display issue. - However, since appointment dates are split across multiple lines, reversing the list also unintentionally reverses the appointment date order. **Solution:** - Ensure that the appointment dates are formatted to appear on a single line, preventing them from being split into multiple list entries and incorrectly reordered when the lines are reversed. [commit]: https://github.com/odoo/odoo/pull/223433/changes/5b69176e64e6a4cc46966a8c41b675ed3d98dd0a Before: <img width="554" height="138" alt="image" src="https://github.com/user-attachments/assets/3e13a2a5-61d5-48c5-8e6a-85f313f7b6ca" /> After: <img width="566" height="120" alt="image" src="https://github.com/user-attachments/assets/f0b04592-7fd4-4104-b200-cf9b6f080962" /> opw-5420805 --- Forward-Port-Of: odoo/enterprise#104100
This update fixes an issue where the HTML editor would incorrectly display extra lines when multiple lines were selected. The change filters out empty text nodes to prevent unnecessary font wrappers, resulting in a cleaner and more accurate display of the editor's content. This ensures a better user experience when editing rich text.
Original PR description
**Current behavior before PR:** - When multiple lines were selected within a block, any empty text nodes between them would also receive a font wrapper when applying a color. - As a result, it appeared as though an extra line was being inserted when the color was applied. **Desired behavior after PR is merged:** - Empty text nodes that are not visible and are not zero-width space or line-break nodes are now filtered out before the font tag is created. - This prevents font wrappers from being created around those nodes. task-5344051 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236824
This update ensures that internal users can still invite colleagues to closed live chat conversations, as previously the invite link was hidden by mistake. This change removes a restriction, allowing for seamless collaboration and ensuring users can easily extend access to chats when needed. It's part of a larger effort to improve chat functionality.
Original PR description
Invite link is hidden on closed live chat but it doesn't make sense. Internal users still want to invite collegues to the chat (e.g. inviting salesperson to the chat). Morever, the link is hidden but nothing prevents users to user it technically. This commit shows the invite panel, even on closed live chats. part of task-4873812
This update corrects a bug in how the system determines if a stock location is a child of another. The fix replaces a potentially misleading check with a more reliable method, ensuring accurate location relationships. This resolves a previous issue that could cause test failures and maintain data integrity.
Original PR description
Previously, in the `_isSublocation`, to check if a location was a children of another location, we did that: ```javascript return childLocation.parent_path.includes(parentLocation.parent_path); ```…
Previously, in the `_isSublocation`, to check if a location was a children of another location, we did that: ```javascript return childLocation.parent_path.includes(parentLocation.parent_path); ``` The issue with that is, if locations' id are aligned, they can match even if they are not related. For example, imagine tested child location has ID 127 and the parent location has ID 7, we then check their `parent_path` (for example, '4/127/' for the child location and '7/' for the parent location), it can happen the child parent path can include the parent's parent path (in our example, '4/127/' includes '7/'.) To fix that, this commit replaces `includes` with `indexOf`, the result of the `indexOf` should always be 0 if the child location is indeed a sublocation of the parent location. Because of this issue, the second run of the tour `test_put_in_pack_new_lines` could sometime fail when the locations IDs are aligned. runbot build error: [233292](https://runbot.odoo.com/odoo/runbot.build.error/233292) Forward-Port-Of: odoo/enterprise#104350
This update resolves an issue where our automated testing for online typing status was unreliable due to how the tests simulated time. The fix ensures the tests accurately reflect real-time typing behavior, preventing intermittent test failures and improving the stability of our system. This primarily impacts the reliability of our internal testing processes.
Original PR description
Backport of odoo/odoo#243138 Before this commit, the following discuss typing HOOT tests were failing non-deterministically: ``` [text composer] other member typing status "is typing" refreshes of…
Backport of odoo/odoo#243138
Before this commit, the following discuss typing HOOT tests were failing non-deterministically:
```
[text composer] other member typing status "is typing" refreshes of assuming no longer typing
other member typing status "is typing" refreshes of assuming no longer typing
```
This happens because these tests advance time for 10 to 60 seconds to assert presence of "Demo is typing..." text. The text relies on 2 asynchonous pieces of code:
1. a bus notification that the server returns `is_typing_dt` when someone explicitly notifies start or stop typing
2. a client-side internal timeout `typingTimeoutId` for long typing of more than 60 seconds (it expects receiving a is_typing: true in the mean time if the member is still actually typing)
The test had no control over these 2 asynchronous pieces of code. This is a problem because HOOT tests show extreme condition where bus notifications come much later than RPC returns, and also simulation of passing of time with `advanceTime()` acts as a jump to the future and consumes all registered timeouts.
The bus notification problem can mistakenly have it consumed way later than a long typing with simulated advanced time of test. This commit fixes the issue by awaiting the notification `notify_typing`.
`advanceTime()` that jumps to future and consumes timeout can mistakenly register and consume timeouts in the wrong order. We can't know for sure when the timeout is consumed so we cannot reliably provide a specific value to `advanceTime()`. This commit fixes it by patching a dedicated function that registers the timeout, so that the test can patch and asynchronously step when the long typing timeout is registered, also ensuring proper awaiting to simulate advance of time in a reliable way.
This commit also fixes an issue with recent PR [1] were `Demo is typing... { count: 0 }` were mistakenly turned into `Demo is typing...`. Diff in PR was big so some mistakes were expected!
Fixes runbot-error-237516
[1]: https://github.com/odoo/odoo/pull/238887This update fixes a scheduling issue in the autovacuum cron job that was causing delays in database maintenance. The change ensures the cron job correctly reports partial progress, allowing for quicker rescheduling and preventing tasks from being delayed for an entire day. The code was also simplified for better readability.
Original PR description
**NOTE** the problem regarding the auto-vacuum was fixed in 18.3 and above (including master) at https://github.com/odoo/odoo/pull/216483, this PR now solely exists for branlette intellectuelle. Have…
**NOTE** the problem regarding the auto-vacuum was fixed in 18.3 and above (including master) at https://github.com/odoo/odoo/pull/216483, this PR now solely exists for branlette intellectuelle. Have a ir cron action with the following code: time.sleep(MIN_TIME_PER_JOB) self.env['ir.cron']._commit_progress(remaining=1) return The code looks stupid, but we tracked down a bug we had in the autovacuum cron in 18.3, and the minimum code to reproduce the problem is that above line of code. Since there are remaining stuff to do, the cron worker should report a `PARTIALLY_DONE` status, and reschedule to call the cron action asap. But the system currently determine a `FULLY_DONE` status and reschedule the cron action *later* (next day for a cron with an interval of 1 day). It is pretty bad for the autovacuum cron in 18.3 We used the opportunity to rework the `status` computation to one big match-case, for extra readability. 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#216116
This update resolves an issue preventing non-administrator users from archiving channels. By using `sudo`, users can now archive channels without needing specific permissions, improving channel management flexibility. This change enhances user experience and simplifies channel organization.
Original PR description
**Purpose of this PR:-** Allow users to archive channels using `sudo` so the action is not blocked by missing discuss role access error. task-5478832 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a minor issue within the Point of Sale (POS) testing process. Specifically, it ensures that a key step – verifying the existence of at least one paid order – is completed before the automated tour ends. This prevents potential errors and ensures the tour runs smoothly, providing a more reliable testing experience.
Original PR description
By adding a last step ( that check that there is at least one paid order), we ensure that the RPC is done before closing the tour. error-runbot-id~233511 error-runbot-id~232677 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#243815
This update resolves issues with the Knowledge editor, specifically preventing problems when copying and pasting headings and improving the responsiveness of the heading link button. The changes ensure consistent URL redirection and a smoother user experience when editing knowledge articles.
Original PR description
### [FIX] knowledge: prevent heading link id duplication on copy/paste Prior to this commit, copy/pasting a heading would preserve its `data-heading-link-id` resulting in mismatches for URL redirections. After this commit, such ids are always reset to guarantee unicity. ### [FIX] knowledge: throttle mousemove for heading link button Prior to this commit, every `mousemove` event could cause a layout trashing to reposition the heading link button. After this commit, the repositioning is debounced at a more reasonable rate. task-5384684 Forward-Port-Of: odoo/enterprise#104460 Forward-Port-Of: odoo/enterprise#101445
This update fixes an issue where numbers extracted from OCR boxes were incorrectly formatted due to language-specific decimal separator handling. The change simplifies the parsing process by consistently using a standard Javascript `Number` parser, ensuring accurate number representation regardless of the user's language settings. This improves data integrity for financial and reporting processes.
Original PR description
When using a language that doesn't use a dot as decimal separator, the number parsed from the box content was incorrect. For example, if the content of the box was "1234.56", the parsed value would have been "123456". This happened because the float parser available through the registry takes into account the language of the user and its configured thousands/decimal separators. Since the content of the boxes are always formatted as "1234.56", without thousands separator and with a dot as decimal separator, the regular `Number` parser of Javascript can be used to get consistent results. opw-[5427979](https://www.odoo.com/odoo/49/tasks/5427979) Forward-Port-Of: odoo/enterprise#104467
This update corrects a data inconsistency in Odoo. Previously, Bulgaria was linked to the Bulgarian currency (BGN). Now, it's correctly linked to the Euro (EUR) to reflect Bulgaria's adoption of the Euro as its official currency on January 1, 2026. This ensures accurate financial reporting and data for users operating in Bulgaria.
Original PR description
Description of the issue/feature this PR addresses: Bulgaria adopted the euro as official currency as of 2026-01-01. Update the base country data accordingly. Current behavior before PR: In `res_country_data.xml`, Bulgaria is linked to BGN. Desired behavior after PR is merged: Bulgaria is linked to EUR in `res_country_data.xml`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241957
This update fixes a usability issue in the Sign editor where the document dropdown didn't close correctly after selection. The fix adds a click listener to the PDF iframe to manage dropdown interactions, ensuring a smoother user experience. It also includes styling updates for consistency and clarity.
Original PR description
- Fix hover and pointer behavior on update document action - Apply consistent danger styling to delete action - Ensure dropdown closes correctly after interaction (PDF iframe has its own document so outside-click logic did not apply; add a click listener on the iframe document to close open dropdowns. ) task: 5384677 Forward-Port-Of: odoo/enterprise#102447
This update fixes an issue where right-clicking on links within messages was obscured by extra message actions. Now, users will see the standard browser context menu options like 'Open Link' and 'Copy Link' when right-clicking on a link, providing a smoother and more intuitive experience.
Original PR description
Before this commit, when right-clicking on a link in a message body, this was showing the list of message actions in dropdown. This is a problem because right-click on link has features like "Open link" / "Copy link" and so on. They were over-shadowed by the right-click on message for showing of message actions. This commit prevent the showing of message actions in dropdown from right-click in links in message body, so that the browser context menu is open instead in that scenario, showing features like "Open link" and "Copy link".
This update fixes a technical issue that caused tracebacks when a member typed in group chats with multiple users. The fix restricts the display of typing indicators to direct messages (DMs) only, aligning with the expected behavior of group chats. This ensures a smoother user experience for all Odoo users.
Original PR description
Before this commit, when another member of a group chat with more than 2 members was typing it would result in a traceback. Steps to reproduce: 1. Have `hr_homeworking` and/or `hr_holidays` installed 2. Create group chat with 2 other users 3. Open said group chat 4. Have another member start typing -> traceback This happens because since [1] the condition to show the `ImStatus` component became `showImStatus`, which is true in group chats when another member is typing. However since group chats with more than 2 members have no correspondent, this leads to the `ImStatus` component having no `persona` attribute, which in turn causes a crashes in templates without a guard on `persona` access. This commit fixes the issue by making `showImStatus` only true in DMs, since it's not expected for group chats to have a correspondent and hence an IM status should not be shown. [1]: https://github.com/odoo/odoo/pull/234715
This update fixes a bug that prevented read-only accounting users from seeing the 'Customer Statement' button when viewing a customer record. The issue stemmed from a restriction in the system's access controls, which was unintentionally limiting access for read-only users. This change ensures all users with accounting rights can access this important feature.
Original PR description
Steps to reproduce: - Have a user with Accounting rights set to 'Read-only' - Login with the user - Open customer record - Button 'Customer Statement' won't be there Analysis: This occurs because we restrict the button visibility to 'Invoicing' users, even if all fields and views are accessible also for 'Read-only' users. opw-5357692 Forward-Port-Of: odoo/enterprise#103715 Forward-Port-Of: odoo/enterprise#102683
This update fixes an issue where invalid warehouse addresses caused continuous geolocation requests to OpenStreetMap. Now, when a location's coordinates cannot be determined, the system sets default coordinates, preventing further attempts and improving location accuracy for warehouse listings. This enhances the user experience and data reliability.
Original PR description
When a warehouse location had no coordinates, a request to geolocate the address was made to OpenStreetMap every time the location selector was open. However, when the address was invalid, the geolocation failed, and no coordinates were set, which caused further geolocation requests being continuously sent. This commit changes the geolocation behavior to set invalid coordinates for the address when the request fails, thus disabling future geolocation attempts for that address. Forward-Port-Of: odoo/odoo#243523
This update resolves a potential error in how accounting calculations handle specific scenarios, particularly when all factors are zero. The change ensures the system correctly distributes remaining amounts, preventing tracebacks and maintaining accurate financial reporting. This improves the stability and reliability of the accounting module.
Original PR description
In 614dcf23b89 `_distribute_delta_amount_smoothly` was changed to use a half-up round rather than a ceiling, and incorporate an additional step of distributing any remaining cents. However, the step that distributes any remaining cents relies on the assumption that there are less remaining cents than the number of factors. This assumption generally holds true because most cents are already allocated in the first step which uses the `round` function; except in one edge case, which is if all factors are zero. In that case, the `_normalize_target_factors` method will return an all-zero list of normalized factors, and so no cents will be allocated in the first step. The fix is to change `_normalize_target_factors` so that in this edge case, the list of normalized factors allows most cents to get allocated in the first step. See #240136 task-none Forward-Port-Of: odoo/odoo#240616
Related: https://github.com/odoo/enterprise/pull/104176 Forward-Port-Of: odoo/odoo#243574
Original PR description
Related: https://github.com/odoo/enterprise/pull/104176 Forward-Port-Of: odoo/odoo#243574
Related: https://github.com/odoo/odoo/pull/243574 Forward-Port-Of: odoo/enterprise#104176
Original PR description
Related: https://github.com/odoo/odoo/pull/243574 Forward-Port-Of: odoo/enterprise#104176