Daily updates from Odoo
Monday, January 5, 2026
18 changes · 18.0
Resolved issues and error corrections
This update corrects an issue with how Odoo sends electronic invoices (EDI) to ECPay in Taiwan. The change removes the company name from the address and formats it as a comma-separated line, ensuring compliance with ECPay's requirements and improving data accuracy. This ensures seamless invoice processing.
Original PR description
In this commit: --- Update EDI address formatting to remove the company name and send a comma-separated single-line address. task-5410619
This change corrects a display inconsistency in loyalty rewards by removing a technical field that allowed users to incorrectly link discount products. This fix ensures that discount descriptions are accurate and aligned with the intended promotion, improving the customer experience. The change was implemented to address a reporting issue and a previous workaround.
Original PR description
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: -…
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1 point 2- Using debug mode, in promotion's reward view, change the `Description on order` to `AAA 10%`. Save the promotion and you can see the `Discount product`'s name is set to the same description. 3- Create another promotion called `BBB`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1000 points. 4- In promotion reward's view change the `Discount product` to `AAA 10%` which is promotion `AAA`'s discount product. 5- Change the `Description on order` to `BBB 10%` and save. 6- You can see the name of `Discount product` is changed as well. 7- In promotion `AAA` and you can see the description and the name of `Discount product` mismatch. 8- Navigate to shop, and add a product to cart with a price of more than 50. 9. You can see after applying promotion `AAA` the description from promotion `BBB` is shown. ### Cause: The technical field `Discount product` is never meant to be changed, and this field is introduced for reporting purposes and showing the discount applied in cart. However, this field is added to view in #132857. This is done as a hack to find the `Discount product` created for the promotion, as a workaround for an accounting issue due to adding account to `Discount product`, and originally `discount_line_product_id` was not supposed to be shown or changed through form. After discussion with PO, we decided this field should be removed from the view. Also removing this field will not undo the main fix of #132857, and that workaround was introduced only to find the `Discount product` for that specific client's use case. However, in stable, it is kept for customization compatibility. It's set invisible in order to prevent the issue. opw-5229633
This update corrects a technical issue that prevented the system from creating emails when the user account was empty. The fix ensures the system handles all user scenarios correctly, preventing potential errors and improving email functionality. This resolves a bug introduced during recent development.
Original PR description
'self.env.user' can be empty. User 'has_group' method has ensure_one check, so it must not be called on empty recordsets. Bug introduced here: https://github.com/odoo/odoo/commit/3056facc07024d02829bf2e27c9ee2f56695c99e
This update resolves a visual glitch that appeared when using Bootstrap modals. Specifically, pressing the Escape key while a modal was open caused a temporary display issue with the cookies bar. The fix prevents a Bootstrap event from triggering a conflicting UI change.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#240334
This update fixes an issue where DIN5008 invoices weren't showing Incoterm information. The change adds the necessary logic to include Incoterm codes and locations on this invoice template, ensuring compliance with DIN5008 reporting requirements. This improves invoice accuracy and reporting for international transactions.
Original PR description
**Steps to reproduce:** 1. Install the modules account and l10n_din5008. 2. Go to Settings and set DIN5008 as the default invoice report template. 3. Navigate to Configuration → Settings and set a default Incoterm. 4. Create a new customer invoice. 5. Print the DIN5008 Invoice Report. **Issue:** The DIN5008 invoice report did not display the Incoterms, while other invoice layouts printed them correctly. **Cause:** This was due to missing logic in l10n_din5008 report to include Incoterm data. Confirmed with TSB that the DIN5008 layout should display Incoterms. **Fix:** This commit adds the Incoterm information to the DIN5008 template data: - Always include the Incoterm code - If an Incoterm location is set, display it as `CODE - LOCATION` **opw-5349267** Forward-Port-Of: odoo/odoo#238682
This update corrects a previous issue where delivery prices weren't accurately reflected in the order's currency. The change ensures that delivery costs are consistently displayed in the customer's local currency, improving the ordering experience and reducing potential pricing discrepancies. This update addresses a technical issue impacting order accuracy.
Original PR description
WIP ----- Ticket: opw-5419724
This update fixes a visual issue on the user profile page where course tags were being cut off at the bottom. The change adjusts the layout to ensure all tags are fully visible, providing a cleaner and more professional user experience. This resolves a minor aesthetic problem related to consistent card sizing.
Original PR description
In the website profile page, the course tags are slightly cut on the bottom. This commit adapts the block size to fit the entire tag. Note that the combo of fixed height / hidden overflow is actually intended to only show a single line of tags and not all of them, to avoid having a variable course card total height. Task-5457464
This update resolves an issue where IoT report handlers prevented the wizard from closing after a report was downloaded. Previously, users experienced open wizards and unexpected behavior when using custom report actions. The fix ensures the standard wizard closure logic is consistently applied, regardless of the report handler used.
Original PR description
Problem: When an alternate ir.action.report handler is used (such as for IoT), the logic to close the wizard after the report is downloaded (printed) is skipped, so the wizard stays open. Steps to Reproduce: - Go to "Acoustic Bloc Screens" product and click "Print Labels" - Select "ZPL labels" and confirm - The report downloads and the wizard closes as expected - Go to Settings > Technical > Reports and select "Product Label (ZPL)" - Set an IoT device on the report - "Print Labels" again, selecting a printer and the IoT toasts in the top right appear after the wizard closes - Refresh the page, and try printing again - The wizard stays open (wrong) and the IoT toasts appear Solution: When returning from the custom handler, check if close_on_report_download and close the wizard. opw-5153139
This update fixes a visual inconsistency in the Helpdesk dashboard by extending the conditional formatting range for the Top Customers pivot and aligning border styles with other Odoo dashboards. This ensures a more uniform and professional appearance for users.
Original PR description
## Description - The Top Customers pivot shows 10 rows, but the conditional format covered only 9. Extend the CF range so the last row is formatted. - Adjust border ranges so the helpdesk dashboard matches the styling used in other dashboards. Task: [5448434](https://www.odoo.com/odoo/project/2328/tasks/5448434)
This update resolves issues identified during testing that were impacting the HR EDI module's functionality. Specifically, the team addressed errors in the flow tests and corrected a problematic SQL query, aligning the module with recent Odoo versions. This ensures smoother and more reliable HR data processing.
Original PR description
- Fixing runbot errors raised by the flow tests, consistent with 19.0+ version - Fixing neutralize.sql runbot-237635 runbot-237637 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a critical issue in the l10n_tw_edi_ecpay module by implementing a standard neutralization process. This ensures that database copies created for support investigations won't inadvertently impact the live production system or customer data. It's a necessary step for safe troubleshooting and maintenance.
Original PR description
This commit adds the missing neutralization necessary for the l10n_tw_edi_ecpay module introduced in [1] The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. [1] https://github.com/odoo/odoo/pull/223132
This update clarifies the purpose of the 'force_create' function within the account module. Previously, it was unclear that this function didn't actually create new records but instead updated existing ones. This change ensures better understanding and consistent usage by the team.
Original PR description
I have adding a docs for force_create that I have added in a previous task as it was not clear for some colleagues that it do not create but still updates the available records 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
This update fixes a reporting error in the French P&L reports. The 'owner remuneration' account (644) was incorrectly categorized as 'tax and duties'. It has now been moved to the correct 'wages and salaries' category, ensuring accurate financial reporting for French businesses.
Original PR description
Account '644 owner remuneration' was in the 'tax and duties' category in the french P&L but it belongs to the 'wages and salaries' category task-5446018 Forward-Port-Of: odoo/enterprise#103061
This update resolves an issue where color fields weren't correctly saved when editing records within a list view using the 'bottom' editing mode. Previously, changes to color fields were lost. This fix ensures that color selections are reliably saved when using this common list view editing method, improving data accuracy and user workflow.
Original PR description
This commit fixes the issue where editing a field with widget="color" does not save it when the list is in editable="bottom" mode. project.task~5262582 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
This update fixes a crash that occurred when deleting an employee hierarchy element (like a department) while a default filter was applied. The change ensures the system correctly handles record existence during filter operations, preventing the 'Missing Record' error and improving stability. This resolves a potential disruption to employee data management.
Original PR description
Reproduce the crash: 1- Create departement in Employees. 2- Create a default filter with child_of or parent_of on the previously created departement. 3- Delete the departement. 4- Go back to Employees => Crash 'Missing Record' This commit adds a check for record exitence in `child_of_domain` and `parent_of_domain` in the case where `_parent_store` is True. This change prevents the `Missing Record` Error. task-5217722
This update addresses a critical issue in the l10n_gt_edi module by implementing a 'neutralization' process. This ensures that database copies created for support investigations won't inadvertently impact the live production system or customer data. It allows for safer database analysis and troubleshooting.
Original PR description
This commit adds the missing neutralization necessary for the l10n_gt_edi module The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates.
This update corrects an issue where product move lines on delivery slips were printed in the wrong order. The fix ensures that move lines are always printed in the correct sequence based on their move IDs, preventing misprints and improving delivery slip accuracy. This impacts the presentation of delivery information.
Original PR description
**Steps to reproduce:** - Add 2 products in a delivery - Add the second's product move lines before the first one. - Validate and print delivery slip **Issue:** We iterate the `move_line_ids` directly which means if we have a new move line for a move with a lower id, it will push the product to the end of the delivery slip. **Example:** If we have `stock.move(1,)` with `stock.move_line(52,)` and `stock.move(2,)` with `stock.move_line(51,)`. `stock.move_line(51,)` will be printed first, which introduces a change in the order of the delivery slip. **Fix:** Iterate on `move_ids` and access `move_line_ids` through it, to print `move_lines_ids` in the same order of the `move_id`. Task: 4570203 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a visual inconsistency in the Point of Sale system. Previously, when searching for partners with wildcard characters, the system would display a 'x partners found' message but not show the results in the list. This change ensures that search results are always displayed, resolving user confusion and improving the overall search experience.
Original PR description
When the client typed `a%t%` into the search bar and pressed 'Enter', we load the partners from the backend using `getNewPartners` and showed a dialog "x partners found", however, we never show those results in the partner list since the search bar didn't support the wildcard ilike pattern. This commit adds support for searching wildcard patterns, to match the SQL behavior more or less. Clients now won't be confused by seeing "x partners loaded" and at the same time seeing an empty list. opw-5395340