Daily updates from Odoo
Saturday, March 28, 2026
11 changes · saas-19.2
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 enhances the Project Budget reporting experience by clarifying key metrics, adding a progress graph, and streamlining the user interface. It also resolves an issue where billable types were incorrectly classified when installing the sale_timesheet module, ensuring accurate tracking of project costs.
Original PR description
This task provides corrections and follow‑up work related to PR IMP #104599. ## Expected Behavior After This Commit 1. Renamed the stat buttons in the Project form view to make their purpose clearer.…
This task provides corrections and follow‑up work related to PR IMP #104599. ## Expected Behavior After This Commit 1. Renamed the stat buttons in the Project form view to make their purpose clearer. 2. Corrected breadcrumb generation when accessing the Project form view from the top menu. 3. Adjusted the project update form view to remove excessive padding. 4. Added a graph to the project update view to visualize project progress over time. 5. Updated filters in the margin search view. 6. Improved billable type labels for better user clarity. 7. Ensured billable types are updated correctly when sale_timesheet is installed. 8. Added navigation from analytic lines to their parent record in the margin list view. 9. Added three colors (gray, green, red) to the Milestone stat button. 10. Improved the kanban view of projected margins. ## Additions ### Point 2 — Breadcrumb Fix When navigating from the top menu to the Project Overview, breadcrumbs were not generated correctly. To resolve this, a multi‑step flow was implemented: - Clicking the "Overview" button triggers the action `project_embedded_action_project_overview`. - This action calls the Python method `action_open_project_form`, which then triggers the client action `project_top_menu_overview`. - The client action uses the `doAction` service to open the Project form view. This approach is required because: - Breadcrumbs are generated correctly only when `doAction` is executed inside a client action. - The "Overview" button cannot directly trigger a client action, making the Python intermediary necessary. ### Point 7 — Billable Type Synchronization The `sale_project` module defines the `billable_type` field on `account_analytic_line`, including the generic types *Other Revenues* and *Other Costs*. The `hr_timesheet` module adds additional, more specific billable types. A problem occurs when: - `sale_project` is installed first, causing analytic lines that should belong to `hr_timesheet` billable types to be incorrectly classified under *Other Revenues* or *Other Costs*. - When `hr_timesheet` is installed afterward, these analytic lines are not automatically updated. This fix ensures that potentially misclassified analytic lines are corrected when both `hr_timesheet` and `sale_project` are installed. ## Task : task-[5955934](https://www.odoo.com/odoo/project/4105/tasks/5955934)
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
This update enhances the Project Budget module by clarifying navigation, adding a progress graph, and resolving issues with billable type synchronization when the sale_timesheet module is installed. It ensures accurate reporting and a better user experience for managing project finances.
Original PR description
This task provides corrections and follow‑up work related to PR : IMP #236971 . ## Expected Behavior After This Commit 1. Renamed the stat buttons in the Project form view to make their purpose…
This task provides corrections and follow‑up work related to PR : IMP #236971 . ## Expected Behavior After This Commit 1. Renamed the stat buttons in the Project form view to make their purpose clearer. 2. Corrected breadcrumb generation when accessing the Project form view from the top menu. 3. Adjusted the project update form view to remove excessive padding. 4. Added a graph to the project update view to visualize project progress over time. 5. Updated filters in the margin search view. 6. Improved billable type labels for better user clarity. 7. Ensured billable types are updated correctly when sale_timesheet is installed. 8. Added navigation from analytic lines to their parent record in the margin list view. 9. Added three colors (gray, green, red) to the Milestone stat button. 10. Improved the kanban view of projected margins. ## Additions ### Point 2 — Breadcrumb Fix When navigating from the top menu to the Project Overview, breadcrumbs were not generated correctly. To resolve this, a multi‑step flow was implemented: - Clicking the "Overview" button triggers the action `project_embedded_action_project_overview`. - This action calls the Python method `action_open_project_form`, which then triggers the client action `project_top_menu_overview`. - The client action uses the `doAction` service to open the Project form view. This approach is required because: - Breadcrumbs are generated correctly only when `doAction` is executed inside a client action. - The "Overview" button cannot directly trigger a client action, making the Python intermediary necessary. ### Point 7 — Billable Type Synchronization The `sale_project` module defines the `billable_type` field on `account_analytic_line`, including the generic types *Other Revenues* and *Other Costs*. The `hr_timesheet` module adds additional, more specific billable types. A problem occurs when: - `sale_project` is installed first, causing analytic lines that should belong to `hr_timesheet` billable types to be incorrectly classified under *Other Revenues* or *Other Costs*. - When `hr_timesheet` is installed afterward, these analytic lines are not automatically updated. This fix ensures that potentially misclassified analytic lines are corrected when both `hr_timesheet` and `sale_project` are installed. ## Task task-[5955934](https://www.odoo.com/odoo/project/4105/tasks/5955934) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr