Tuesday, January 27, 2026
9 changes · saas-18.2
Resolved issues and error corrections
Tour guidance pointers now hide when their target is not part of the currently active screen, such as when a dialog is open. This prevents unrelated help markers from appearing over pop-ups, making guided tours cleaner and less confusing for users.
Original PR description
POC for task-5490670 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#243852
Scanning a barcode that does not match any product no longer triggers an unnecessary full price list cache recalculation. This avoids needless processing in Point of Sale and helps keep checkout interactions responsive when invalid or unknown barcodes are scanned.
Original PR description
Before this commit, if scanning a barcode that does not correspond to any product, computeProductPricelistCache was called with no data, therefor it recomputed the cache for all records. opw-5476560 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243850
The Gantt view now handles long date range labels better on very small mobile screens, such as when using Dutch. This prevents the scale selector and related controls from covering each other, making project planning easier to use on narrow displays.
Original PR description
Steps to reproduce ================== - Switch to dutch - Emulate an iPhone SE viewport in the browser settings - Open a project - Switch to the gantt view - Use a custom date range -> The gantt controls are displayed on top due to the daterange format being to long Note ==== The fix is in the ViewScaleSelector component, but only the gantt view uses a custom scale opw-5340869
Sending customer invoices through Peppol now updates existing invoice attachments instead of creating extra copies. This keeps the invoice chatter and attachment sidebar cleaner, reducing confusion for users handling electronic invoices.
Original PR description
When sending a customer invoice via Peppol, the system creates duplicate attachments (4 instead of 2 expected), cluttering the chatter and the attachment sidebar. This commit: - Implements a search-and-update logic for attachments to ensure idempotency (updates existing instead of creating duplicates). task-5438951 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#245370 Forward-Port-Of: odoo/odoo#241130
This update corrects a technical error in the l10n_au_hr_payroll module that was causing a warning message to appear incorrectly on the TFN dashboard. The fix ensures accurate reporting of TFN status for employees, preventing potential confusion and compliance issues. This resolves a bug related to undefined variables in the payroll calculation.
Original PR description
Steps to reproduce: ------------------- 1. Install l10n_au_hr_payroll. 2. Enable multi-company and switch to an AU company. 3. Change an existing employee’s company to the AU company ([employee…
Steps to reproduce:
-------------------
1. Install l10n_au_hr_payroll.
2. Enable multi-company and switch to an AU company.
3. Change an existing employee’s company to the AU company
([employee created more than 28 days ago](https://github.com/odoo/enterprise/blob/7adab8bfdccf5f0e97eb2894e065b63ea8200d20/l10n_au_hr_payroll/data/hr_payroll_dashboard_warning_data.xml#L31)).
4. Under the payroll tab, set the TFN Status to:
"Employee applied for TFN but didn't receive it yet, less than 28 days ago".
5. Open Payroll.
Issue:
--------
A traceback occurred:
```
Error: NameError("name 'invalid_employees' is not defined")
```
Cause:
------
The evaluation code computes `warning_count` using
an undefined `invalid_employees` variable.
Solution:
---------
Define `invalid_employees` before using it to compute
`warning_count` and `warning_records`.
**NOTE:**
The [upgrade script](https://github.com/odoo/upgrade/blob/ed5bc3fd99ef6fba4bc7162934df36396ae9fc3f/migrations/l10n_au_hr_payroll/saas~18.4.1.0/end-migrate.py#L30) is already available from version 18 to 19.
opw-5459998
Forward-Port-Of: odoo/enterprise#103777This update fixes a potential error in the GST reporting module related to tax mapping during bill creation. Previously, an incorrect tax setting led to a database violation. Now, the system correctly uses the intended tax rate, ensuring accurate reporting and preventing data inconsistencies.
Original PR description
Before this PR: During chart installation, the template sets `sgst_purchase_5` as the default purchase tax, which becomes the default supplier tax (supplier_taxes_id) for product_a. When creating the…
Before this PR: During chart installation, the template sets `sgst_purchase_5` as the default purchase tax, which becomes the default supplier tax (supplier_taxes_id) for product_a. When creating the bill with partner_b, the [tax_map](https://github.com/odoo/odoo/blob/cade6bcf0d783a8b492f5e26afbd87f2a812303e/addons/account/models/partner.py#L47) field converts product_a.supplier_taxes_id to tax_purchase_b. Since tax_purchase_b is not referenced in account_fiscal_position_tax, unlink() succeeds. After this PR: Due to changes in this [PR](https://github.com/odoo/odoo/pull/242030), the template no longer sets default purchase tax. Test common.py runs before default taxes are set by `_inverse_l10n_in_is_gst_registered`, so tax_purchase_b becomes NULL. Later, when default taxes are set, product_a gets supplier_taxes_id = sgst_purchase_5. When creating the bill, it directly uses sgst_purchase_5, which is referenced in account_fiscal_position_tax. Attempting unlink() on sgst_purchase_5 causes a foreign key violation. task-5456351
This update corrects a nightly failure related to the default time zone used for appointments. The fix involves overriding the time zone setting within testing, rather than directly asserting its value. This ensures consistent appointment scheduling across different environments and prevents disruptions.
Original PR description
**Issue:** Default tz of `'appointment.appointment_default_resource_calendar'` is not always `"Europe/Brussels"`. **Fix:** Override in test instead of asserting its value. opw-5163892 Forward-Port-Of: odoo/enterprise#105501
This update resolves a bug that caused the follow-up report to crash when users unfolded partner lines while prefix groups were enabled. The fix corrects an error in how the report processed data, ensuring stability and preventing unexpected errors.
Original PR description
When prefix groups were enabled, and a prefix group line had been unfolded, the report crashed when trying to unfold the partner. This happened because res_ids_map is computed for each of the unfolded lines, including the prefix groups one, which then had no 'res.partner' key, causing a key error. Forward-Port-Of: odoo/enterprise#105525
This update fixes an issue where the IoT Box was incorrectly downloading standard drivers, potentially causing conflicts and reintroducing previous problems. To allow custom driver development, a checkbox was added, but this was corrected to prevent unnecessary driver downloads and ensure stability.
Original PR description
The stable IoT Box uses drivers from git repository: it doesn't download them from the database as it used to do. However, sh/on premise clients might want to develop custom drivers that the IoT Box would download. For that, they have to enable a checkbox on the IoT homepage, making the IoT Box download handlers as before. The issue is it will also download standard drivers that are already present on the IoT Box: on newer databases it would simply overwrite them, but on older ones, it would duplicate as names might have changed. Also, it would introduce issues back that were already fixed. To avoid this, we avoid adding drivers from standard modules to the downloaded archive, to prevent issues with the main ones. Forward-Port-Of: odoo/enterprise#105531