Daily updates from Odoo
Friday, January 16, 2026
27 changes · master
New functionality added to Odoo
This update adds estimated return dates to the EC Sales List and Tax reports. This provides customers with clearer timing information for reporting, allowing them to verify data accuracy before submission. It improves transparency and helps ensure accurate financial reporting.
Original PR description
The aim of this commit is adding returns for EC Sales List report and the Tax report. These returns allow customers to know when they have to report both reports and help them to check that every value are correctly set before sending the report. task-4893984 Forward-Port-Of: odoo/enterprise#100572
This pull request adds Uzbek translations for various Odoo modules. This expands Odoo's language support, making the software accessible to a wider user base who speak Uzbek. It improves the usability of Odoo for Uzbek-speaking customers and partners.
Original PR description
Related: https://github.com/odoo/enterprise/pull/104176 Forward-Port-Of: odoo/odoo#243574
This pull request adds Uzbek translations for several key Odoo modules, including accounting and financial management. This expands Odoo's support for the Uzbek language, making the software more accessible and usable for users in Uzbekistan. It improves localization and user experience for a significant user base.
Original PR description
Related: https://github.com/odoo/odoo/pull/243574 Forward-Port-Of: odoo/enterprise#104176
Enhancements to existing features
This update allows HR users to archive departure reasons that are no longer in use. Previously, HR users could only manage these reasons by naming them, leading to confusion. Now, HR users can actively archive unused reasons, preventing their continued use and simplifying HR processes.
Original PR description
An HR user has currently no way to prevent use of specific /deprecated departure reason other than specifying it in the name. This commit an active field on `hr.departure.reason` so that an HR user can archive departure reasons that should not be used (as he can't delete them if they are referenced at least once). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects the tax names and descriptions used in Odoo for Belgium. These changes ensure accurate reporting and compliance with Belgian tax regulations. The update impacts the accounting and point-of-sale modules within the Odoo system.
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 simplifies the process for sharing documents with partners who don't have existing user accounts. Now, when a partner accesses a document with a public link, they can create a user directly linked to that partner, streamlining document sharing and improving user experience. This change ensures partners can easily access documents without needing to create a full user profile.
Original PR description
Purpose ======= We can share a document to a partner without a user, and with `access_via_link == 'none'`. In that situation, the partner is forced to create a user, but if he clicks on signup, then the new user won't be linked to the partner set on the `documents.access` (a new partner will be created). Now, when inviting a member, if he doesn't have a user, we invite him to create a user. If the partner has a user, then we just redirect him to the login page. Task-5242208 Forward-Port-Of: odoo/enterprise#104374 Forward-Port-Of: odoo/enterprise#100628
This update enhances the appearance of full-size popups on the website to prevent content from blending with transparent backgrounds. A 10px margin and a default white background have been added to improve visual separation and readability, ensuring a clearer user experience.
Original PR description
The full-size option for popups could be misleading when using transparent backgrounds, as the dialog content could visually merge with the page and become hard to read. This change keeps the same…
The full-size option for popups could be misleading when using transparent backgrounds, as the dialog content could visually merge with the page and become hard to read. This change keeps the same behavior as other popup sizes while adding a 10px margin on both sides of the snippet. It also applies a default white background in full-size mode, ensuring better visual separation and improved readability. | Before | After | | ------------- | ------------- | | <img width="1646" height="456" alt="image" src="https://github.com/user-attachments/assets/122b266d-8391-45fe-a6be-08177b97f99c" /> | <img width="1659" height="466" alt="image" src="https://github.com/user-attachments/assets/df4e09de-850e-4735-9169-5115465c1372" /> | | <img width="1641" height="707" alt="image" src="https://github.com/user-attachments/assets/51d549f8-f7ff-42de-aba1-52ab0b4adaf0" /> | <img width="1655" height="687" alt="image" src="https://github.com/user-attachments/assets/2085b8ec-f318-4f04-a9ed-af8ecb0d6fa8" /> | task-5435802
This update adds helpful guidance to the Odoo POS pricing tool, specifically for the `pos.pricer` and `pricer.tag` models. This change simplifies the setup process for new users and administrators, making it easier to configure pricing strategies within the system.
Original PR description
Following this commit: ==== - Added help for pos.pricer and pricer.tag models to ease implementation for new user. task-5462933
Resolved issues and error corrections
This update fixes an issue where only the first attachment from an expense was included in the generated journal entry. The change ensures that all attachments associated with approved expenses are now correctly copied, improving the accuracy and completeness of financial records. This resolves a previous reporting discrepancy.
Original PR description
**Steps to reproduce:** * Install **hr_expense** and **accounting** modules. * Create two or more expenses, each with **multiple attachments**. * Submit and approve the expenses. * Create the **journal entry** of all approved expenses. * Open the generated journal entry and review its attachments. **Observed behavior:** * Only the **first attachment** from each expense is present on the journal entry. * Additional attachments are missing. **Cause:** * while creating journal entry, the logic of expense iterate on `message_main_attachment_id`. * `message_main_attachment_id` stores only a **single attachment**, so only one file per expense is copied. **Fix:** * Iterate on `attachment_ids` instead of `message_main_attachment_id`. * Ensures **all attachments** from each expense are included in the generated journal entry. opw-5414834 Forward-Port-Of: odoo/odoo#243962 Forward-Port-Of: odoo/odoo#241044
This update resolves an issue where applying a zero-amount discount in the sales order system caused an error. The fix ensures the system handles zero discounts gracefully, preventing a division-by-zero error and allowing users to correctly apply discounts when needed. This improves the reliability of the sales order discount functionality.
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
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 checks for read access to the related record before redirecting, ensuring a smoother signing experience.
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 resolves an issue where the date range picker in the website sale section was unintentionally resetting its selected dates, causing disruption for users. The fix targets overly broad selectors that triggered this restart. This change ensures a smoother and more reliable experience when selecting date ranges for sales.
Original PR description
The selectors in some of the `stopInteractions`/`startInteractions` calls were too broad, resulting in a restart of the daterange picker interaction. However, this interaction is stateful, and restarting it resets its dates. task-5118772 Enterprise PR: https://github.com/odoo/enterprise/pull/98161
This update corrects a bug where half-day leave requests were incorrectly calculated as full days. The fix removes a problematic filter, ensuring that half-day 'sandwich leave' requests (like December 12-15, 2025) now accurately display a duration of 2 days instead of 4. This improves the accuracy of leave time tracking for Indian companies.
Original PR description
**Steps:** 1. Install the `l10n_in_hr_holidays` module and create an Indian company 2. Create a time-off type that has `half-days` as the request unit and set "sandwich leave" to true 3. Create a leave request from December 12 to December 15, 2025 it should display a duration of 2 days instead of 4 **Cause:** The filter was removing leaves that had `half-day` set as the request unit **Fix:** The half-day filter is removed. In `_l10n_in_is_full_day_request` method we will check for actual half-day leave If the `request_date_from_period` and `request_date_to_period` are the same, then it is not considered a full-day leave, and it will not be calculated as a sandwich leave. Task-5427415 Forward-Port-Of: odoo/odoo#243617 Forward-Port-Of: odoo/odoo#240542
This update optimizes the ThemeSelector rendering in mass mailing tests to reduce delays and improve test reliability. Additionally, unnecessary assets used during testing have been removed, significantly speeding up test execution times. This ensures more consistent and faster testing of the mass mailing functionality.
Original PR description
The ThemeSelector rendering was optimized ([commit]) to minimize UX transition delays for the user, but that makes it a bit tricky to wait for in tests. This commit adds a function to properly wait for everything required to select a theme/favorite by clicking on it, in order to reduce non-determinism in `mass_mailing` tests. [commit]: https://github.com/odoo/odoo/commit/0f7ee1764e8b59029003c6ad7269e185b30c6b43 It also removes some assets loading during `mass_mailing` tests that are not relevant. This helps shave off 10-40% test time per test, depending on the complexity of the test. runbot-error-237513 runbot-error-237747 runbot-error-237769 runbot-error-237770 runbot-error-237772 task-5500038 Forward-Port-Of: odoo/odoo#243972
This update corrects a visual glitch in the HTML Builder module for Firefox, specifically preventing a white gap from appearing after undoing actions with tall snippets. The fix involves adjusting how snippets are scrolled to the top, improving the user experience and ensuring consistent rendering.
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 Gift Card and E-Wallet products to be treated as stock items, leading to inventory discrepancies. This fix prevents these products from being automatically converted back to service types, maintaining accurate stock levels. Given multiple similar requests, a more general solution is being considered.
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 fixes a technical issue where failed IoT driver actions were incorrectly recorded, preventing them from being re-executed. Now, actions are only registered upon successful completion, improving the overall reliability and efficiency of the IoT driver system. This ensures actions are properly tracked and can be retried if needed.
Original PR description
We currently reject an action if it has the same id of a previous one. If the action failed, we still registered it, making it impossible to be executed again. We now only register if the action succeeds. Forward-Port-Of: odoo/odoo#244045 Forward-Port-Of: odoo/odoo#243247
This update ensures that when a module is imported with demo data, a flag is set to indicate this. This improvement will enhance our testing process by providing more accurate information about demo data usage, particularly in industry-standard tests.
Original PR description
Currently even if an imported module was imported with demo data, the 'demo' field is not set to True. Setting this field properly will allow to have a better handling of demo data in industry tests.
This update resolves an issue where the USB printer functionality was intermittently failing due to a problem with how the system handled printer data reads. The fix ensures that the printer continues to function correctly, even when data isn't immediately available, preventing disruptions to printing operations.
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 resolves a recurring test failure in the HTML editor's toolbar. The issue stemmed from the toolbar being a popover, requiring more than just a single animation frame to fully update. By using a 'waitFor' mechanism, the test is now more reliable and consistent, preventing disruptions to automated testing.
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 the Point of Sale module. It now includes 'done' state invoices (completed sales) in the session sales statistics, providing a more accurate picture of sales performance. This ensures that all finished transactions are reflected in the session summary, leading to better business insights.
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 where browser translation plugins were interfering with article editing and auto-save functionality. By adding a 'translate="no"' attribute to article content, we've ensured that original content is preserved and edits are saved correctly.
Original PR description
Description: Browser translation plugins were altering articles by replacing the original content with translated versions, which caused issues when paired with auto-save. To prevent this behavior, the attribute `translate="no"` has been added to the `<div>` containing the article edits. task-5485078
This update fixes a visual inconsistency in the Odoo Enterprise application. Previously, the subtitle color within the 'Recent' tab didn't match the colors applied to other tabs. This change ensures a uniform and professional appearance across all tabs, improving user experience.
Original PR description
Since commit [1], the subtitle color has been changed but not for the "Recent" tab, which creates inconsistencies. This commit ensures that the subtitle color is consistent across all tabs. [1]: https://github.com/odoo/enterprise/commit/568d29af1e1d792642f0dc288d57871fc7781f38 task-5485493 | Before | After | |--------|--------| | <img width="800" height="662" alt="Capture d’écran 2026-01-12 à 11 19 34" src="https://github.com/user-attachments/assets/8beb175a-27c8-4d73-899c-6fc3ab22c0e6" /> | <img width="800" height="657" alt="Capture d’écran 2026-01-12 à 11 19 49" src="https://github.com/user-attachments/assets/e2542822-6b05-4b15-b3e8-a4aa7c1b611c" /> | Forward-Port-Of: odoo/enterprise#104206 Forward-Port-Of: odoo/enterprise#103996
This update ensures that product attributes are correctly displayed on refund orders and receipts. Previously, attributes were lost during the refund process. The fix correctly transfers attribute data from the original order to the new refund order, improving accuracy and reporting.
Original PR description
**Steps to reproduce:** - Make an order with a product that has variants and chose whatever in the popup - Pay for that order, then refund it - The attribute is not shown on the orderline anymore - The attribute is not shown on the receipt either **Why the fix:** When making a refund, we are actually making a new order, so we need to move the data from the old order to the new refund order. During this transit, the *attribute_value_ids* was forgotten on the moving lines, so the attributes were lost. We now give the old attributes to the new line. opw-5393332 Forward-Port-Of: odoo/odoo#243589 Forward-Port-Of: odoo/odoo#240602
This update corrects a potential error in how the system identifies location relationships. Previously, matching location IDs could incorrectly identify unrelated locations as sublocations, leading to test failures. This fix replaces a method that was susceptible to ID alignment issues with a more reliable approach, ensuring accurate location identification and preventing test failures.
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 a recurring issue that caused random errors during Odoo's tour process. By removing problematic assertions, the tour is now more reliable and stable, leading to a smoother user experience. This change focuses on internal improvements to the Odoo system.
Original PR description
With this commit, we remove synchrone assertions in steps that can cause random errors in tour. runbot-error-id~237552 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