Friday, December 26, 2025
9 changes · saas-19.1
Resolved issues and error corrections
This update fixes a reporting issue where the Expected Arrival Date wasn't displayed on DIN 5008 Purchase Order reports. The fix adds this crucial information to the report template, aligning with previous versions and confirmed requirements from internal teams. This ensures accurate reporting for DIN 5008 transactions.
Original PR description
**Steps to reproduce:** 1. Install l10n_din5008 and purchase modules. 2. Switch the Document Layout template to DIN 5008. 3. Create or open an existing Purchase Order. 4. Print the Purchase Order…
**Steps to reproduce:** 1. Install l10n_din5008 and purchase modules. 2. Switch the Document Layout template to DIN 5008. 3. Create or open an existing Purchase Order. 4. Print the Purchase Order report. **Issue:** The Expected Arrival Date does not appear on the DIN 5008 Purchase Order report. Both functional experts and PO (CHKL) confirmed that the Expected Arrival Date should appear by default on the Purchase Order report in DIN 5008. **Cause:** The date_planned (Expected Arrival) field was introduced in standard Purchase Order report in v18.0, but DIN 5008 report template was not updated accordingly **Fix:** Add the Expected Arrival information to the DIN 5008 Purchase Order template. Before: <img width="606" height="162" alt="image" src="https://github.com/user-attachments/assets/e11f5b1f-5898-4ec9-a4f2-087db5dfeced" /> After: <img width="605" height="147" alt="image" src="https://github.com/user-attachments/assets/57419d00-50c9-4508-9bfc-307c0a54dc67" /> **opw-5376176** Forward-Port-Of: odoo/odoo#239619
This update enhances security by granting necessary permissions to the account batch payment process. Previously, a restriction prevented non-HR users from accessing employee address information, now addressed by using 'sudo' to ensure proper functionality. This change improves data access and avoids potential issues.
Original PR description
In commit a6ed1bd, new logic for handling employee addresses was introduced. However, the _get_all_addr function requires employee_ids, which implicitly requires access to the Employees model and, therefore, be in HR groups. During the compute process, _get_all_addr is only used to check whether an employee has an address; no address data is exposed. To fix this issue, the call to _get_all_addr should be executed with sudo(). OPW-5428523 Forward-Port-Of: odoo/enterprise#102851
This update allows users to easily copy and paste error messages from the Point of Sale interface. Previously, users couldn't copy these messages, making it difficult to report issues or troubleshoot problems. This change improves usability and support efficiency.
Original PR description
Before this commit, it was not possible to select and copy text from the error popup shown in the POS interface. This limitation hindered users from easily copying error messages for reporting or troubleshooting purposes. task-id: 5411067 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240570
This update addresses a technical error that prevented some USB printer devices from working correctly within Odoo. The fix handles a device incompatibility issue, ensuring broader printer support and preventing disruptions to printing workflows. This improves the reliability of the IoT drivers.
Original PR description
This PR fixes the exception thrown by the usb devices incompatible with escpos code.
It fixes the following exception:
```
2025-12-22 14:49:59,724 1433 ERROR ? odoo.addons.iot_drivers.exception_logger: File "/home/pi/odoo/addons/iot_drivers/iot_ha
ndlers/drivers/printer_driver_L.py", line 42, in init
self._init_escpos(device)
2025-12-22 14:49:59,724 1433 ERROR ? odoo.addons.iot_drivers.exception_logger: ValueError: The device has no langid (permission issue, no string descriptors supported or device error)
```
Forward-Port-Of: odoo/odoo#240976This update fixes an issue where the survey session link copy button wasn't working correctly, displaying 'Copied!' without actually copying the link. Additionally, repeated clicks on the button caused a system error. The fix ensures the link is reliably copied and prevents errors related to the session management component.
Original PR description
Issue 1: Steps to reproduce =============== 1. Go to the survey. 2. Create a live session for any survey. 3. On the session screen, click the copy button after the url. ------> Popover will show…
Issue 1: Steps to reproduce =============== 1. Go to the survey. 2. Create a live session for any survey. 3. On the session screen, click the copy button after the url. ------> Popover will show `Copied!` but nothing is copied. Issue 2: Steps to reproduce ================ 1, 2: same as issue 1. 3. Click the copy button 2,3 times. 4. Click the button start survey. ------> TypeError: Cannot read properties of null (reading 'closest') Technical ======== Issue 1: The event listener callback `onCopySessionLink` was using `event.target.textContent` to insert into clipboard of the browser. As the event.target is icon with no text content, the empty string is _copied_. Issue 2: At each click of the copy button, we register cleanup to dispose the _same_ instance of `window.Popover` component. Therefore more than one click will register the cleanup each time. While cleaning, the second cleanup will actually dispose the already disposed instance raising an error at this [line] because the instance has `this._element` null. This commit makes the `onCopySessionLink` to copy the text of the element with the url and makes sure the cleanup is registered only once. [line]: https://github.com/odoo/odoo/blob/058212e12b5079eba870bde9775fe98f27928935/addons/web/static/lib/bootstrap/js/dist/tooltip.js#L173 Task-5347197r Forward-Port-Of: odoo/odoo#239621
This update fixes an issue where the displayed price in the Point of Sale system was showing the total price instead of the unit price. The fix ensures that the correct unit price is shown, improving accuracy and clarity for users. This resolves a display discrepancy related to currency calculations.
Original PR description
Steps to reproduce ------------------ 1. Insall `l10n_fr_pos_cert` and set the company to the french one 2. Open PoS, and select a product, it will have a price say X 3. Using the numpad, change the price of that product to Y Observe that the line now says "Old price unit: Y * Qty / Unit", instead of it being "X / Unit". Why it's happening: ------------------- We were displaying the `currencyDisplayPrice`, which is the total amount to be paid, instead. The fix ------- We add a getter on the product model `displayPriceUnit`, it shows the original product unit price. We therefore introduce a new getter that compute the unit price using the original lst price. opw-5365735 opw-5378158 Forward-Port-Of: odoo/odoo#238135
This update resolves an error that occurred when creating invoices with journal items that lacked labels. The fix ensures the code handles missing label values gracefully, preventing a traceback and allowing invoices to be validated correctly. This improves invoice processing reliability.
Original PR description
Creating an invoice containing journal items without a label triggers a traceback because the code unconditionally slices the 'name' field (line.name[:64]) without ensuring it is not False. Since 'name' is not a required field on account.move.line, it must be safely handled.
This commit ensures that the label is always a string by falling back to an empty string when the value is missing.
Steps to reproduce the bug:
- Create a storable product
- Create an invoice:
- Add the product to the invoice
- Set any customer
- Go to the journal items tab
- Remove the label of the journal item corresponding to the product
- Try to validate the invoice
- A traceback is raised
opw-5360602
Forward-Port-Of: odoo/odoo#240150
Forward-Port-Of: odoo/odoo#239188This update resolves a potential error in the Point of Sale system that could occur when reloading data. Specifically, if certain records were inaccessible due to security restrictions, it would trigger an error. This change prevents these errors, ensuring a smoother and more reliable Point of Sale experience for users.
Original PR description
Before this commit, when reloading the PoS, during the filtering of local data, if some records to be filtered were inaccessible due to record rules, an AccessError was raised. opw-5394929 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239028
This update now displays the full list of industry modules (available through Apps > Industries) instead of a limited selection of 80. The change removes a technical restriction that previously prevented users from seeing all available industry modules, improving navigation and usability.
Original PR description
Before this commit, when displaying the list of industry modules (from Apps > Industries), it is not possible to display more than 80 modules. This is because the override of web_search_read is not handling the full count of modules, as it was relying on the number of modules returned from the appstore, ignoring there is a limit (80 by default). This commit removes the limit on the query to appstore so that all modules are retrieved, allowing the users to navigate through all modules. This solution is acceptable since the number of industry modules is rather limited for now (around 100). Forward-Port-Of: odoo/odoo#241147