Thursday, January 23, 2025
10 changes · 17.0
Resolved issues and error corrections
Merging duplicate contacts could fail when certain stored property records had no company assigned, typically after manual data edits or migrations. This fix lets those contacts merge successfully and safely logs duplicate property conflicts instead of blocking the operation.
Original PR description
Scenario: - have two res.partner with ir.property with res_id and without company_id (eg. by editing the ir.property and removing it) - merge these partners => UniqueViolation error because of…
Scenario: - have two res.partner with ir.property with res_id and without company_id (eg. by editing the ir.property and removing it) - merge these partners => UniqueViolation error because of unicity of (fields_id, company_id, res_id) constraint of ir_property table Why: The query merging property doesn't take NULL into account for company_id when checking if the destination partner already has this property. Also a savepoint was used, without ignoring the error so the import could not be done if an error happened. Fix: Take the case where both records have NULL company_id into account. Also ignore error and log a warning when a legitimate error happens because of duplicate ir.property in source records. Note: This issue should only happen when: - modifying ir.property directly - after a migration with a res.partner field becoming company_dependent field, the partners without company would get an ir.property without company_id Without the fix, the added test would fail because of an error at each _merge call. opw-4300572 opw-4030442
Kanban cards now include each record's unique identifier when sorting by drag handles, matching the behavior already fixed in list views. This prevents inconsistent ordering and helps users keep records in the intended sequence.
Original PR description
This commit makes the same fix as [1] but it does t for kanban views instead of list views. We discovered in task [2] we were developing for the master branch that we needed this fix and that we wanted to fix it from 17.0 [1]: ecc0a38a1d3b04f854d761fd498b120a4dfef5ad [2]: opw-4370092 Task: opw-4370092
This fixes an error that could occur when scheduling activities for multiple HR records at once. Users should be able to complete the scheduling action without being blocked by a system error.
Original PR description
### Description of the issue/feature this PR addresses: - Similar error: https://github.com/odoo/odoo/pull/194338 - In `_compute_plan_available_ids()` with `self` there can be multiple records but still use `self.department_id` in `for scheduler in todo`. ### Current behavior before PR: - The error ValueError: Expected singleton: mail.activity.schedule(1, 2) occurred Desired behavior after PR is merged: - The problem has been fixed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Deleting an image from the editor now removes it cleanly without leaving an empty paragraph behind. This keeps edited content cleaner and avoids confusing cursor placement after image removal.
Original PR description
**Problem**: When an image inside a `<p>` tag (e.g., `<p><img></p>`) is deleted using the toolbar delete button, the selection is not properly restored, leaving an empty `<p>` in the DOM and the selection in the editor root. **Solution**: Restore the selection to the correct position after deleting the image to avoid leaving an empty `<p>`. **Steps to Reproduce**: 1. Open an empty editor and add an image. 2. Delete the image using the toolbar delete button. 3. Inspect the DOM: - An empty `<p>` remains, and the selection is in the editor root. opw-4472173 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The attendance kiosk screens now display navigation and employee images correctly. This prevents cropped back buttons and profile photos, making manual check-in flows clearer for employees.
Original PR description
Issue: When using the kiosk in versions 17.0 & 17.2, 2 visual issues arise: - when trying to identify manually, the "Go back" arrow is cropped out of its' container - when identified, the user's profile picture is cropped out of the greeting container Steps to reproduce: - Install the attendance module - Go to Kiosk Mode - Identify Manually Cause: For the "Go back arrow", its' position in the container is set to the top left corner (absolute 0;0). The problem is that these coordinates are set for the center of the button and not its' top-left end. For the profile pictures, there is some V16 styling still present that wrongly sets the image's absolute position. Notes: I also changed the back button on the PIN screen since it had the same problem. It isn't pretty but everything is visible now...  Ticket: opw-4366047
Point of Sale product searches now return the expected number of products when enough matching items are available. This helps cashiers find products more reliably during checkout and reduces missed search results.
Original PR description
Before this commit, the search functionality might not retrieve the desired number of products due to the loop condition. This fix ensures that the search retrieves up to the specified limit of products if there are enough available. opw-4426797 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Moroccan VAT numbers are now validated using the correct local format: eight numeric digits. This prevents valid Moroccan customer VAT numbers from being rejected when creating or updating contacts, especially on newer Python environments.
Original PR description
### Steps to reproduce: - Create a new Contact - Set the country to Morocco - Add "52258521" as a VAT number - Try to validate -> Error ### Cause: Only occurs after saas-17.4 because it is related to the library `stdnum`. The version of this library change when the Python version is >3.11. As the SaaS version use Python3.12 since saas-17.4 and Python3.10 before, the bug only appears in saas-17.4, but this change targets 17.0 because 17.0 supports Python > 3.10. The cause of the bug is the new version of the library which implements a verification method that corresponds to Moroccan ICE numbers and not VAT numbers. ### Solution: Create the method to check the Moroccan VAT numbers. The format is just a number with 8 digits. opw-4447478
This fix updates Odoo's web error handling so newer Chrome versions do not show unnecessary uncaught error messages. It helps keep the user experience smoother and avoids confusing browser-level error prompts.
Original PR description
In error_service, event.preventDefault() is required to prevent uncaught error message due to latest Chrome version (132) compatibility. 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
Indian invoices will no longer show a UPI QR code or related logos when the company has not entered a UPI ID. This prevents confusing or unusable payment information from appearing on customer invoices.
Original PR description
**Steps to reproduce:** 1) Select the QR Codes option in settings (IN Company) 2) Do not enter an upi id in the company profile. 3) Go to invoice and preview/print the invoice. 4) Show that QR code without upi id and upi logos visible. **Cause:** - The condition of the upi id is not properly set to hide the block if upi is not set. **Fix:** - With this PR, the upi QR code and upi logos will not be visible if the upi id is not set. **task**-4426634
This fix ensures the bank synchronization iframe receives the correct debug setting when developers are troubleshooting. It has no expected impact on everyday users, but it helps development teams diagnose iframe issues more easily.
Original PR description
The aim of this commit is passing correctly the debug mode in the URL params to the bank sync iframe. It allows to debug the iframe during the development. no task id