Daily updates from Odoo
Friday, January 9, 2026
14 changes · saas-18.4
Enhancements to existing features
This update adjusts the chart of accounts for Odoo's Vietnamese localization to comply with new accounting regulations (Circular 99/2025). This change is necessary to ensure accurate financial reporting starting in January 2026, aligning with current Vietnamese accounting standards.
Original PR description
Update the COA for the vietnamese localization, which is based on the circular 200/2014 by the new one based on the circular 99/2025. This new COA applies starting in Jan. 2026 task-5357470 Forward-Port-Of: odoo/enterprise#103769 Forward-Port-Of: odoo/enterprise#102843
Resolved issues and error corrections
This update prevents unnecessary email reminders for timesheet approvals. The system now only sends reminders when there are actual timesheets needing approval, ensuring users aren't overwhelmed with notifications. This change optimizes the approval workflow and reduces email clutter.
Original PR description
prevent cron from sending approver reminder if no timesheet assigned to approver Send the reminder email if: - there are timesheets to validate - AND if the user is set as either the manager or timesheet approver of an employee with timesheets left to be validated - OR if the said employee has no manager or timesheet approver set Task-3624610 Forward-Port-Of: odoo/enterprise#102860 Forward-Port-Of: odoo/enterprise#52355
This update fixes an issue where the summary lines in the Barcode app appeared in light colors when Dark Mode was enabled. The fix uses dynamic color variables to ensure the summary lines correctly adapt to the user's chosen theme, improving the user experience across different settings. This ensures consistent visual presentation regardless of the user's preferred dark mode setting.
Original PR description
## Issue In the Barcode app (`stock_barcode`), the summary line appears in its light color scheme, even if the user is using dark mode. <img width="1914" height="989" alt="before"…
## Issue In the Barcode app (`stock_barcode`), the summary line appears in its light color scheme, even if the user is using dark mode. <img width="1914" height="989" alt="before" src="https://github.com/user-attachments/assets/39f47454-6dc5-4fe6-927d-8ebc984b13b7" /> ## Cause The `background` property was set to a constant (light) color. ## Steps to reproduce 1. Install the Barcode (`stock_barcode`) and Purchase (`purchase`) apps. 2. In Inventory / Configuration / Settings, enable *Lots & Serial Numbers*. 3. Turn on Dark Mode by clicking in the upper-right corner and toggling *"Dark Mode"* 3. Create a product tracked *By Unique Serial Number*. 4. Create a Purchase Order for the product created in step 3 with a quantity greater or equal than 2, then click *Confirm*. 5. Go to the Barcode app, click *Operations*, then *Receipts*, and select the picking created from the PO. 6. The summary line appears in white (or light blue when selecting it). ## Solution We can use variables instead of constant colors. The `--list-group-bg` variable holds a different color depending on whether the line is selected, faulty, or completed. https://github.com/odoo/enterprise/blob/999009c859a1fb8e244f754a530fe39d71ede506/stock_barcode/static/src/components/line.scss#L27-L47 ## After this commit <img width="1912" height="983" alt="after" src="https://github.com/user-attachments/assets/899366fc-0290-42e8-9c50-fd3298e262d6" /> opw-5364654 Forward-Port-Of: odoo/enterprise#102270
This update fixes a UI issue where long email messages would overflow the message bubble, causing a broken display. The change makes email content scrollable within the bubble, ensuring a consistently readable experience for users sending and receiving messages. This improves usability for the subscription module.
Original PR description
Current behavior before PR: When the email template (message_type = `comment`) has content that is longer (in width), the content tends to overflow out of the bubble which breaks the UI. Desired behavior after PR is merged: This commit fixes the issue by making the content scrollable inside the bubble. Task-5363388 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242934 Forward-Port-Of: odoo/odoo#237878
This update fixes an issue where refund alerts were incorrectly triggered due to rounding differences in order totals. The change ensures that the system accurately compares refund amounts to order totals, preventing false alerts and improving the reliability of the Point of Sale system. This ensures accurate financial reporting and reduces potential customer service issues.
Original PR description
Before this commit, if the total amount of the order had rounding differences compared to the sum of its lines, the system could incorrectly trigger an alert stating that the refund amount exceeds the original order amount. This was due to a direct comparison between the two amounts without considering potential rounding issues. opw-5402240 Forward-Port-Of: odoo/enterprise#103551 Forward-Port-Of: odoo/enterprise#102224
This update resolves a problem where scanning barcodes on picking orders with kit product variants would cause errors. The fix ensures that packaging information is correctly captured during barcode scans, allowing for accurate tracking of kit components. This improves the reliability of the barcode scanning process for inventory management.
Original PR description
In the barcode application, scanning a picking order containing a kit product variant with packaging will raise a Traceback. ### Steps to reproduce: 1. Enable packagings on inventory configuration.…
In the barcode application, scanning a picking order containing a kit product variant with packaging will raise a Traceback. ### Steps to reproduce: 1. Enable packagings on inventory configuration. 2. Create a product, that as a least 2 variants. 3. Add a packaging to one of the variants. 4. Create a BoM for created product (kit type). 5. Create a picking order for the variant with packaging. 6. Print the picking operation to scan the code through barcode. 7. Go to barcode and try to scan it, this will trigger the traceback. ### Cause of the issue: Scaning a barcode will call get_barcode_data during this call it will retrieve the information about the picking order and call _get_stock_barcode_data: https://github.com/odoo/enterprise/blob/f2dd6326c2084ed467c3e4c3e9d931f41309ad79/stock_barcode/controllers/stock_barcode.py#L91 _get_stock_barcode_data will obtain the packaging methode for the products. https://github.com/odoo/enterprise/blob/f2dd6326c2084ed467c3e4c3e9d931f41309ad79/stock_barcode_mrp/models/stock_picking.py#L13-L16 since in our use case the product has variant the packaging information is not inside product_tmpl_id.packaging_ids and thereof it will not retrieve the packaging information. ### Fix: We don't need to use product_tmpl_id.packaging_ids because of its compute and set methods (and the fact that the product_variant_ids field is required), the product_tmpl_id.packaging_ids will always be included in the product_tmpl_id.product_variant_ids.packaging_ids: https://github.com/odoo/odoo/blob/eb88370e2fc1887e8c88dfd8dbeadce23bb7abe5/addons/product/models/product_template.py#L430-L441 our fix will allow for packaging in the variant to be considered when there is more than only one variant. opw-4852875 Forward-Port-Of: odoo/enterprise#103155 Forward-Port-Of: odoo/enterprise#87867
This update corrects a technical issue where the IoT test button incorrectly reported successful connections even when errors occurred (like timeouts or other websocket problems). By standardizing the data format and adding timeout checks, the button now accurately reflects the true status of the IoT device, improving reliability.
Original PR description
This commit fixes several situations where a positive status would be given by the test button despite the presence of an error: - If the websocket connection was used but there was a timeout - If the websocket connection was used but there was any other error - If any 6-digit error code was returned when using the stable IoT box To fix these issues, we stop using the `data['message']` field, since it gets ignored by the websocket confirmation controller. We now use the same result format as the other requests (and the stable IoT box). We also add a check for the `"timeout"` that we receive when a websocket request times out.
This update resolves a technical issue where order completion with UrbanPiper resulted in an 'undefined street' error. The fix ensures the system correctly checks if a customer is assigned before completing the order, preventing this error and allowing users to successfully mark orders as ready and print receipts.
Original PR description
Steps to produce: ==== - Place an online delivery order through urbanpiper - Edit the order and remove customer - Complete the order as Marks as Ready - Print Reciept Issue: ==== - TB occurs stating undefined street Fix: ==== - Check whether partner is assigned or not task-5407001 Forward-Port-Of: odoo/enterprise#103633 Forward-Port-Of: odoo/enterprise#102100
This update ensures the Helpdesk dashboard's styling is consistent with other Odoo dashboards. Specifically, the conditional formatting for the Top Customers pivot has been extended to include all rows, and border styles have been aligned. This improves the overall visual appearance and user experience.
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) Forward-Port-Of: odoo/enterprise#103284 Forward-Port-Of: odoo/enterprise#103019
This update resolves an issue where read-only accounting users couldn't access customer statements. The fix corrects a restriction in the system that previously limited button visibility to 'Invoicing' users, ensuring all authorized users can now view customer statements. This improves usability for a wider range of users.
Original PR description
Steps to reproduce: - Have a user with Accounting rights set to 'Read-only' - Login with the user - Open customer record - Button 'Customer Statement' won't be there Analysis: This occurs because we restrict the button visibility to 'Invoicing' users, even if all fields and views are accessible also for 'Read-only' users. opw-5357692 Forward-Port-Of: odoo/enterprise#103148 Forward-Port-Of: odoo/enterprise#102683
This update resolves a technical issue that caused a traceback when users accessed the bank reconciliation popover in debug mode, specifically when reconciling statements with invoices in different currencies. The fix ensures the popover component receives the correct data, improving stability and usability for users.
Original PR description
In Bank reconciliation widget, when reconciling a statement with a move in different currency, users may display a popover to access some reconciliation info. Currently, accessing this component in debug mode may raise a traceback. Steps to reproduce: - Have a Bank statement in company currency - Reconcile with an invoice in foreign currency - Go in debug mode - From the reconciliation widget, locate the reconciled bank statement - Click on the reconciled bank statement popover button Issue: Traceback is shown `OwlError: Invalid props for component 'BankRecLineInfoPopOver': 'exchangeMove' is not a object` It occurs because props validation of the Owl component will fail BankRecLineInfoPopOver opw-5355964 Forward-Port-Of: odoo/enterprise#103731
This update fixes an issue where the 'Out of Contract' duration was incorrectly calculated, leading to inaccurate reporting of employee contract overlap with payslips. The change ensures that contract overlap dates are accurately limited to the payslip period, improving payroll accuracy and reporting.
Original PR description
Steps to Reproduce: 1. Create a contract ending early in the year (e.g., February). 2. Compute a payslip for a much later period (e.g., November). 3. The "Out of Contract" line shows an excessive number of days (counting from Feb to Nov). Reason: - If a contract ends before the payslip period, it adds all days from the end of the contract until the end of the payslip period as "Out of Contract", ignoring the payslip start date. - If a contract starts after the payslip period, it adds all days from the payslip start date until the contract start date, ignoring the payslip end date. Solution: Constrain the calculated "Out of Contract" dates using `max()` and `min()` to ensure they never exceed the payslip's `date_from` and `date_to`. Task: 5350519 Forward-Port-Of: odoo/enterprise#103500 Forward-Port-Of: odoo/enterprise#100700
This update resolves a problem preventing connections to IAP Codaclean, which is a key integration for Belgian accounting. The issue was caused by a missing parameter in the system, now corrected to ensure seamless data exchange and proper functionality.
Original PR description
Connections to IAP Codaclean are failing because of missing `enterprise_number` param. no-task-id Forward-Port-Of: odoo/enterprise#103724
Features or functions removed from Odoo
This update removes outdated configuration settings from tests related to the CO Dian localization module. These settings were no longer needed after the saas-18.4 release and were causing unnecessary complexity in the test suite. This cleanup improves test efficiency and maintainability.
Original PR description
The configuration parameter `account_edi_ubl_cii.use_new_dict_to_xml_helpers` was removed in saas-18.4. However, this parameter was still being set in various tests across `account_edi_ubl_cii`, `l10n_account_edi_ubl_cii_tests`, `l10n_hr_edi`, and `l10n_co_dian`. This commit removes these unnecessary configuration lines to clean up the tests. Related PR : https://github.com/odoo/odoo/pull/242749