Thursday, October 30, 2025
11 changes · 18.0
Enhancements to existing features
This update adds the stock movement identifier to Romanian EDI export data. It makes it easier for businesses to trace electronic delivery records back to the exact stock movements they represent.
Original PR description
Added `move_id` field in the export structure for EDI documents to include the stock move identifier. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: This enhances traceability and allows better linkage between stock moves and their corresponding EDI records. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The IoT hardware setup now uses a password generation method that works with Python 3.13 and later, avoiding reliance on a removed system library. Compatibility links were also added so system processes can still find moved setup files, reducing upgrade disruption.
Original PR description
To ensure compatibility with python 3.13+, we updated the method to generate the rpi's password to avoid using the removed `crypt` lib. We also ensure that files moved between `point_of_sale/tools/posbox/`, `addons/iot_box_image/` and `setup/iot_box_builder` can still be found by system processes using symlinks. Forward-Port-Of: odoo/odoo#233423
This update adds shared helper methods for accounting tests, making it easier for developers to create invoices, sales orders, reversals, and down payment scenarios consistently. It does not change customer-facing behavior, but it supports more reliable and maintainable accounting-related testing in future work.
Original PR description
This commit adds bunch of helper methods on AccountTestInvoicingCommon to make it easier to do generic accounting test actions, such as: - creating invoice - creating sale order - reversing invoice - skipping test if module isn't installed - creating down payment invoice ... and many more. We're aware that there are thousands of different helpers for creating invoice out there in different localizations. This commit serves as the first necessary step to create one standard that can be extended across all other test helpers. This is a simplified version of the merged commit in master. We are not refactoring/rewriting any other test to use these new helpers. Our goal is just to make it available for everyone to start using this helper on their accounting-related tests. task-4891206
Resolved issues and error corrections
The Chilean electronic invoicing flow now only selects one recipient company when multiple company records share the same tax ID. This prevents errors in cases such as branch structures where duplicate RUT values exist, helping email-based document processing run more reliably.
Original PR description
Before this commit, if multiple companies shared the same RUT (VAT), for example companies with branches, searching a recipient could return more than one company record. This could lead to errors when accessing variables that expect a single record. To prevent this issue, the search is now limited to one company record. OPW-5128543 Forward-Port-Of: odoo/enterprise#98352
This fix ensures Turkish Nilvera e-invoice tax setup only runs for main companies, not their branch companies. It prevents duplicate tax records during setup, reducing accounting configuration errors for businesses using branch structures.
Original PR description
Adds parent_id check on the domain to ensure taxes are only loaded for root companies. This prevents duplicate tax creation on branch (child) companies when initializing tax templates. task-5176333 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale session names now only advance after cash details are posted successfully. This prevents skipped session numbers when an error occurs, making records easier to track and audit.
Original PR description
Before this commit, if an issue occurred while posting the cash details, the session sequence would still increment even though the operation failed, leading to gaps in session names. With this commit, the sequence only increments when the operation succeeds, ensuring continuous session naming without gaps. related: https://github.com/odoo/enterprise/pull/98157 opw-5180712 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Belgian POS session numbering now only advances after cash details are posted successfully. This prevents missing session names after failed operations, supporting cleaner records and easier compliance checks.
Original PR description
Before this commit, if an issue occurred while posting the cash details, the session sequence would still increment even though the operation failed, leading to gaps in session names. With this commit, the sequence only increments when the operation succeeds, ensuring continuous session naming without gaps. related: https://github.com/odoo/odoo/pull/233183 opw-5180712
The website loading progress bar now uses the site's primary color instead of black. This improves visibility in dark mode and creates a more consistent branded experience for visitors.
Original PR description
This commits changes the website loader progress bar color, from black to `$primary`. This provides a better contrast in dark mode as well as better consistency. task-5170115 | Before | After | |--------|--------| | <img width="1920" height="1186" alt="image" src="https://github.com/user-attachments/assets/cd9525cf-b9d6-40dd-9ffb-ed0027020ab5" /> | <img width="1920" height="1172" alt="image" src="https://github.com/user-attachments/assets/3f7d9a4b-4a3e-4fbd-a1be-826c898466cd" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents internal product references from appearing before product names after a product is edited and saved in Point of Sale. It keeps the product display consistent without requiring staff to refresh the page.
Original PR description
In PoS, when editing and saving a product’s information, there was a bug where the product reference was shown before its name. Steps to reproduce: ------------------- * Add a reference to a product available in PoS * Open PoS * Click on the 'i' on the top right of that product * Click on Edit * Click on Save (no need to do any modification) > Observation: The reference appears before the name. Refreshing the page removes, as it triggers a new read. Why the fix: ------------ Reference are never shown in pos thank to this context key `display_default_code: false` opw-5001355 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The printed approval request report now has cleaner spacing and more consistent text sizing. This makes the report easier to read and better aligned when users print or share approval request details.
Original PR description
Steps to Reproduce: - Install approvals module. - Navigate to Approvals → My Approvals → My Requests → Print report. Issue: - The formatting of the report is not proper. Solution: - Fixed the report's QWeb template (approvals.report_aprroval_request_document). - changed col-2 to col-3 to give the labels more space and improve alignment with the field values - changed h5 to h6 for more consistent and appropriate font size throughout the document **before :** <img width="777" height="818" alt="image" src="https://github.com/user-attachments/assets/86cbaf50-191a-412b-9b8e-149442256819" /> **after :** <img width="829" height="623" alt="image" src="https://github.com/user-attachments/assets/da237a87-7a7b-45db-8347-d64e1e987469" />
This fix makes an automated test for discussion sub-channel search more reliable under heavy system load. It helps prevent false test failures while confirming that discussion threads continue loading correctly when users search and clear results.
Original PR description
The `test_discuss_sub_channel_search` tour ensures that lazy loading of threads works correctly with the search feature. Technically, the component uses the `useVisible` hook which waits for a trigger to be visible before loading more threads. However, under high CPU load, the `IntersectionObserver` might not detect the change. For example, clearing the search input will make the element disappear, but scrolling afterward may make it reappear. As a result, the component might not detect that it should load more threads. In practice, this should never happen. The test now waits for the state to update before scrolling. fixes runbot-181951