Saturday, March 28, 2026
10 changes · saas-19.2
New functionality added to Odoo
This update adds a necessary report handler for TDS-TCS (IT Act 25) reports within the Odoo Enterprise system. This ensures businesses can now generate the required reports, complying with Indian tax regulations. It's a key improvement for businesses operating in India.
Original PR description
With this commit, the report handler will be added to TDS-TCS (IT Act 25) reports. task-6035844 Forward-Port-Of: odoo/enterprise#112418 Forward-Port-Of: odoo/enterprise#112417
Resolved issues and error corrections
This update resolves an issue where excessively long product names in the Master Production Schedule would cause other schedule columns to disappear from view. The fix wraps long product names within the HTML tag to prevent this visual disruption and ensure the entire schedule remains visible.
Original PR description
Problem: In the master production schedule, if a product on the schedule has a name that would extend to the right edge of the screen, all of the other colums for the schedule will be completely hidden. Solution: We will wrap the text in the <a> tag containing the product name. Steps to Replicate (Runbot v19): 1. Open the Master Production Schedule 2. Click the pencil on one of the products 3. Click into the product and change its name to be something very, very long 4. Navigate back to the MPS and notice that you cannot see the actual schedule elements, even if you scroll to the end. opw-6066088 Forward-Port-Of: odoo/enterprise#111896
This update resolves problems with exporting the trial balance and working files in Odoo Enterprise. Specifically, incorrect dates in the working file exports and issues with the custom template were addressed, ensuring accurate reporting.
Original PR description
Steps to reproduce: - Export the PDF of the trial balance OR - Export a working file Both use the custom template of the trial balance. The date of the working file was also incorrect.
This update resolves an issue where the system incorrectly identified direct deposit accounts due to changes in Wise's API response format. The fix ensures the system consistently handles both 'swift_code' and 'SwiftCode' variations, preventing errors and ensuring accurate processing of direct deposit payments. This improves the reliability of the direct deposit feature.
Original PR description
Internally, Wise has changed their return value of their API to sometimes return `swift_code` and other times return `SwiftCode` depending on the create time of the recipient account. If the account is older than a few months it will use `SwiftCode` as the return value of GET /v2/accounts when they are created with type `swift_code` in the POST. As such, to be defensive this code handles both cases to not make any assumptions in case users have old or new accounts. This stops a traceback where the system doesn't think it's a swift account and tries to access abartn even though it doesn't exists. task-6070033 Forward-Port-Of: odoo/enterprise#112075
This update resolves a technical issue that was causing instability in Odoo's VoIP testing. The fix removes unnecessary event listeners that were previously leaking memory, ensuring the test suite runs reliably. This improves the overall quality and stability of Odoo's VoIP features.
Original PR description
Forward-Port-Of: odoo/odoo#256376
This update fixes an issue where Odoo's translation caching wasn't working correctly when related fields were updated. Specifically, when a translated field changes, dependent calculations using that field's translation in another language were incorrectly dropping the cached translation. This change ensures that existing translations are retained in the cache, improving performance and data consistency.
Original PR description
when related translated field (field_x) is changed when onchange, if another computed fields which depends on the field_x is recomputed but using another language value of the field_x. The orm should keep the existing translations in the cache but not drop them. 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#256324 Forward-Port-Of: odoo/odoo#256111
This update resolves a technical issue preventing a key test from running correctly within the sale order management module. The test has been moved to the related module, ensuring proper functionality and stability. This change improves the reliability of our sales order processing system.
Original PR description
Issue: --- `is_optional` does not exist in `sale` module, leading to runbot issue. The test needs to be moved to `sale_management`. runbot-242127 Forward-Port-Of: odoo/odoo#256099
This update corrects an issue in Odoo invoices' PDF reports where section formatting caused column misalignment, specifically when 'Hide Composition' was enabled. The fix ensures consistent alignment of subtotal information, improving invoice presentation and readability. This improves the professional appearance of invoices.
Original PR description
**Problem:** In invoice PDF reports, when a section has Hide Composition enabled having a product inside, the description cell reserves too many columns (that are not available like quantity, unit…
**Problem:** In invoice PDF reports, when a section has Hide Composition enabled having a product inside, the description cell reserves too many columns (that are not available like quantity, unit price) while the quantity is still rendered as (1.00 Units), and unit price/discount/tax cells are conditionally omitted for section/subsection display types. This adds the extra table cells (quantity "1.00 units", total amount) after the first few reserved columns, this shifts the quantity/amount column a few positions to the right resulting in inconsistency mapping between the values and the name of the column. Before: <img width="1622" height="867" alt="2026-03-25_10-56" src="https://github.com/user-attachments/assets/57d6857a-7763-48d3-8131-fdc4e37a6704" /> After: <img width="1628" height="771" alt="2026-03-25_13-55" src="https://github.com/user-attachments/assets/d9df6cbe-3c23-4874-b50f-6797ef644c03" /> **Steps to reproduce:** 1- Create a customer invoice 2- Add a section. 3- Add products under the section with quantity and price 4- Enable hide composition on the section 5- Confirm and print the invoice PDF 6- Observe the section subtotal rows shifted by one column **Cause:** In grouped rendering, line_colspan for non-product rows still reserves Quantity,Unit Price columns, while hide_details also renders a dedicated quantity cell (1.00 Units). This makes the row consume extra columns and breaks alignment. **Solution:** For grouped rows in hide_details mode, We need to render the description cell with a minimal colspan (1) and explicitly keep the remaining column slots stable: keep Quantity cell (1.00 units), Unit Price, Discount, taxes as an empty placeholder cells if not available. --- opw-6030372 Forward-Port-Of: odoo/odoo#256233 Forward-Port-Of: odoo/odoo#255334
A technical problem with how Odoo processed spreadsheet data was causing errors. This update removes a formatting issue (a trailing line break) from JSON files before they're used, ensuring the spreadsheet data can be correctly processed and used. This prevents errors when sharing and opening the Sales Commission spreadsheet.
Original PR description
Steps to reproduce: - Share the Sales Commission spreadsheet - Open the shared link ⮕ traceback This was caused by the trailing line break in the json, so the last character was not a `}`. Task: 6064328 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#256475 Forward-Port-Of: odoo/odoo#255523
This update corrects a timezone discrepancy in the generation of EDI export files for sales orders. Previously, the date used in the EDI file didn't align with the order's creation time, leading to potential errors. This fix ensures the EDI date matches the order's UTC timestamp, improving data accuracy and consistency.
Original PR description
The Issue: Before this commit, the generated EDI XML used `sale_order.create_date.date()` to populate the IssueDate node, while the test used `datetime.today().date()` to build the expected value. Since `create_date` is a UTC timestamp set by the database and `datetime.today()` returns the local system time, these diverge when the server timezone is ahead of UTC and the test runs shortly after local midnight (e.g., runbot at 01:00 CET produces UTC date Jan 11 vs local date Jan 12). The Fix: Align the test to derive its expected date from `so.create_date.date()` instead of `datetime.today().date()`, ensuring both sides use the same timezone-consistent source of truth. runbot-237841 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256065