Daily updates from Odoo
Monday, May 25, 2026
8 changes · saas-19.2
Resolved issues and error corrections
This update corrects a problem during the migration of Malta taxes. Specifically, it prevents a crash when a tax XML ID is missing for a company, ensuring the migration process completes successfully. This improves the reliability of tax setup for Odoo users in Malta.
Original PR description
### Issue: During migration of Malta taxes, the script can fail when certain tax XML IDs are missing for a company. If the XML ID does not exist, `env.ref(..., raise_if_not_found=False)` returns…
### Issue:
During migration of Malta taxes, the script can fail when certain tax XML IDs are missing for a company. If the XML ID does not exist, `env.ref(..., raise_if_not_found=False)` returns None. Trying to combine a recordset with None causes the migration to fail. Due to recent [commit]
### Traceback:
```py
tax_7 |= env.ref(f'account.{company.id}_VAT_S_IN_MT_7_G', raise_if_not_found=False)
File "/home/odoo/src/odoo/19.0/odoo/orm/models.py", line 6589, in __or__
return self.union(other)
File "/home/odoo/src/odoo/19.0/odoo/orm/models.py", line 6603, in union
raise TypeError(f"unsupported operand types in: {self} | {arg!r}")
TypeError: unsupported operand types in: account.tax() | None
```
###
Solution:
Use a guard check with the walrus operator (:=) to assign and validate the tax record before union.
This ensures that only existing tax records are added to the recordset, preventing the crash.
Ticket [link1](https://www.odoo.com/odoo/project.task/6159300) [link2](https://www.odoo.com/odoo/project.task/6149387)
opw-6159300
opw-6149387
Forward-Port-Of: odoo/odoo#264327This update fixes a technical error that prevented users from correctly using the 'Ship Later' option in the Point of Sale system. The issue stemmed from how the system handled date formatting, specifically when clearing the 'Ship Later' date field. The fix ensures the system functions smoothly with this payment option.
Original PR description
Steps: = - Enable Allow Ship Later in POS configuration. - Open POS and add any product. - Proceed to the Payment screen. - Click Ship Later, clear the date field, and confirm Issue: = - A traceback occurs: `TypeError: this.state.shippingDate.toISODate is not a function` Reason: = - Here, shippingDate is a Luxon DateTime object when provided. when cleared, it becomes null, so converting it to ISO format is casung the error. Fix: = - Removed unnecessary conversion using `.toISODate()`. - Removed unnecessary hoot test. - Added validation on shippingDate to prevent selecting a past date. task-5406969 Forward-Port-Of: odoo/odoo#239827
This update fixes an issue where Time Off requests with hourly durations were incorrectly displaying 12:00 AM instead of calculated hours. The change ensures that 'request_hour_from' and 'request_hour_to' accurately reflect the specified duration, regardless of the Time Off type selected. This improves the accuracy of Time Off requests and simplifies the process for users.
Original PR description
…to hours ## Issue: 'request_hour_from' and 'request_hour_to' should be computed using the default calendar attendance values, but instead they display 12:00 AM, meaning their values remain 0.0. ##…
…to hours ## Issue: 'request_hour_from' and 'request_hour_to' should be computed using the default calendar attendance values, but instead they display 12:00 AM, meaning their values remain 0.0. ## Steps to Reproduce: - Open the Time Off app. - Configure a Time Off Type with the Duration Type (request_unit) set to Hours. - Set this Time Off Type as the default one while creating a new Time Off. - Create a new Time Off request. - Observe that 'request_hour_from' and 'request_hour_to' are not computed and display 12:00 AM (0.0). ## Root Cause: While fixing the issue related to preserving leave hours when changing Time Off Types, a regression was introduced. Related PR: https://github.com/odoo/odoo/pull/227235 During the creation of a new Time Off with the duration type set to Hours by default, the field 'request_unit_hours' is already True. This prevents the computation of 'request_hour_from' and 'request_hour_to', resulting in both values remaining 0.0. ## Solution: Compute 'request_hour_from' and 'request_hour_to' when their values are still 0.0 (initial Time Off creation case), and skip recomputation only when switching between Time Off Types in order to preserve manually entered hours. Steps to reproduce : [Video](https://drive.google.com/file/d/1P2MFIj8ZxFtFxv2FlX4Zdq6P-5veTxUb/view?usp=sharing) OPW: 6209992 Forward-Port-Of: odoo/odoo#265648 Forward-Port-Of: odoo/odoo#264707
This update fixes an issue where packaging unit information disappeared from delivery slip reports after a transfer was validated. The change ensures that packaging units and quantities are correctly displayed on validated transfer delivery slips, providing more accurate tracking of products with packaging units. This improves inventory visibility and reporting accuracy.
Original PR description
Issue before this commit: ========================= For products tracked by serial/lot with packaging units, the delivery slip correctly shows the packaging unit and quantity before validating the…
Issue before this commit: ========================= For products tracked by serial/lot with packaging units, the delivery slip correctly shows the packaging unit and quantity before validating the transfer. However, after validating the transfer, the packaging unit and its corresponding quantity are no longer displayed in the delivery slip report. Steps to Reproduce: ========================= 1. Install stock and sale_management modules. 2. Enable Units of Measure & Packagings and Display Lots & Serial Numbers on Delivery Slips from settings. 3. Create a product with tracking by lot/serial number and configure a packaging unit. 4. Create a SO using this product with a packaging unit and confirm it. 5. Open the related transfer and print the delivery slip before and after validation. Cause of the Issue: ========================= The delivery slip report template (stock_report_delivery_has_serial_move_line) does not display packaging unit information after validation for move lines when the packaging unit differs from the product unit of measure. With This Commit: ========================= This commit ensures that packaging units and their corresponding quantities are displayed on the delivery slip after validation when the packaging unit differs from the product unit of measure. Steps To Reporduce: [Video Link](https://drive.google.com/file/d/10DmFKW1Y_Tm-AyKzPrqtFMY8orBkKbIm/view?usp=sharing) opw-6142052 Forward-Port-Of: odoo/odoo#265206
This update fixes a bug where cancelled orders in the Point of Sale (POS) system weren't immediately reflected on the frontend. The system now automatically updates the POS interface when an order is cancelled from the backend, ensuring accurate order status visibility for staff. This improves operational efficiency and reduces potential customer confusion.
Original PR description
Step: --------- - Install point_of_sale. - Open a POS session with presets configured. - Add an order line and select the takeout order preset. - Cancel the order from the backend. Issue: --------- - The cancelled order is not reflected in the frontend. Cause: --------- - The frontend is not notified when the order is cancelled from the backend. Fix: --------- - Notify the frontend when a backend order is cancelled. Task-5406984 Forward-Port-Of: odoo/odoo#240725
This update fixes an issue where empty cells within styled tables weren't correctly recognized during selection using the HTML editor's move handle. Now, all table cells, even those with placeholder content, are properly selected when using the move handle and applying styling. This ensures a more reliable and intuitive user experience when working with tables in the HTML editor.
Original PR description
#### Description of the issue this PR addresses: - Empty `.o_table` cells containing only placeholder ZWS content were not considered visible - Full table selection via move handle failed to apply `o_selected_td` on styled empty cells #### Desired behavior after PR is merged: - Consider `.o_table` table cells visible Steps to reproduce: - Insert a table - Select it via move handle - Apply any color - Click the move handle again to select the table All table cells should have class `o_selected_td` task-6208949 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263836
This update corrects a bug where cancelled food delivery orders continued to appear as active on the Point of Sale (PoS) system. The fix synchronizes PoS order states with delivery status upon cancellation, ensuring accurate order tracking and preventing outdated information. This improves the user experience and data consistency for food delivery operations.
Original PR description
pos*: pos_urban_piper, pos_enterprise When a food delivery order is cancelled from the aggregator side, the PoS order remains active on the frontend instead of reflecting the cancelled state. Steps to reproduce: - Configure UrbanPiper with Atlas - Place an order via Atlas - Open the order from the notification bar - Cancel the order from Atlas Issues: - Cancelled orders continue to appear in `Draft` - Accepted/preparation orders are not cancelled on the preparation display Fix: - Synchronise the PoS order state with the delivery state on cancellation - Update preparation display orders when delivery orders are cancelled Task-6217704 Forward-Port-Of: odoo/enterprise#118288 Forward-Port-Of: odoo/enterprise#117374
This update resolves an issue where importing company data would trigger the installation of unnecessary language (L10N) modules, leading to server errors and incorrect data imports. The fix ensures that L10N modules are only installed when explicitly required, improving import stability and data accuracy.
Original PR description
# How to reproduce - Start from a fresh database - Install the account module - Import companies with a data file. These companies need to have a country set and the data file needs to contain some…
# How to reproduce - Start from a fresh database - Install the account module - Import companies with a data file. These companies need to have a country set and the data file needs to contain some bad data - Click on the Test button # The problem An Odoo Server Error is displayed saying : "savepoint xxx does not exist", which prevents the import or hides other potential error. More importantly, the date is imported even though it was a test run. # Cause Importing companies with a country will import their respective l10n modules using `button_immediate_install()` : https://github.com/odoo/odoo/blob/6de867f1c92bacedc0574b63e9e6a2a57fe805dd/odoo/addons/base/models/res_company.py#L319-L322 https://github.com/odoo/odoo/blob/661ddbb7f12e32394a3c11b5a4cd2f38a9e156f5/odoo/addons/base/models/res_company.py#L237 This import calls `cr.commit` : https://github.com/odoo/odoo/blob/661ddbb7f12e32394a3c11b5a4cd2f38a9e156f5/odoo/addons/base/models/ir_module.py#L632-L634 The issue is that when importing a data file, we create savepoints : https://github.com/odoo/odoo/blob/661ddbb7f12e32394a3c11b5a4cd2f38a9e156f5/odoo/orm/models.py#L971-L974 And if an error arise during our import, we rollback to the appropriate save point. Sadly, commiting erases any existing save point, so a savepoint error is rased and the data is not rolled back. The problem stems from the fact that importing module is simply not transactionnal and `button_immediate_install()` is not expected to be called with a savepoint. This was already partly adressed by : https://github.com/odoo/odoo/commit/66dcee9aa70dc72a332fde64dbc802266bbe4a5a But it did not cover the file importing case opw-6174983 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265188