Saturday, July 25, 2026
5 changes · saas-19.4
Resolved issues and error corrections
The WinBooks import now avoids combining supplier and customer contact details when their VAT numbers are explicitly different. This prevents incorrect data merging that could cause Belgian VAT validation errors and block the import process.
Original PR description
When importing a WinBooks zip, contacts sharing the same number might fail VAT validation if distinct contact data is merged incorrectly. Steps to reproduce: - Create a database with the Belgian…
When importing a WinBooks zip, contacts sharing the same number might fail VAT validation if distinct contact data is merged incorrectly. Steps to reproduce: - Create a database with the Belgian localization installed - Install the account_winbooks_import module - Navigate to Accounting > Configuration > Settings > Initial Setup > Import - Import the WinBooks zip Issue: The import fails with the following error: The VAT number [AAAAAA] for partner [BBBBBB] does not seem to be valid. Note: the expected format is BExxxxxxx. Analysis: In WinBooks, contacts can be of type Supplier or Customer, and it is possible for a supplier and a customer to share the same number. During the import, the system will merge contacts if found with the same number. In the specific case, the VAT number from one contact without country is combined with the country information from another contact, resulting in a VAT validation error. This change prevents the merger of partner data if their VAT numbers are explicitly different. opw-6251772 Forward-Port-Of: odoo/enterprise#119579
It currently deleted the inner mail.message, while it should actually remove mail.mail records. Removing messages is managed at mail.mail unlink level using the 'is_notification' field. Indeed a mass_mailing email should remove the linked mail.message, while a canceled notification email should not remove the chatter message. Followup of odoo/odoo#209494 Forward-Port-Of: odoo/odoo#278321 Forward-Port-Of: odoo/odoo#277993
Original PR description
It currently deleted the inner mail.message, while it should actually remove mail.mail records. Removing messages is managed at mail.mail unlink level using the 'is_notification' field. Indeed a mass_mailing email should remove the linked mail.message, while a canceled notification email should not remove the chatter message. Followup of odoo/odoo#209494 Forward-Port-Of: odoo/odoo#278321 Forward-Port-Of: odoo/odoo#277993
Currentyl the unsupported models will be checked like the following ```sql ia.res_model NOT IN ARRAY['model1', 'model2'] ``` This causes a syntax error. Use `ANY` to avoid the issue ```sql ia.res_model != ANY(ARRAY['model1', 'model2']) ``` Reproduce in Odoo shell ```python from odoo.tools import SQL query = SQL(""" SELECT ia.id FROM ir_attachment ia WHERE ia.res_model NOT IN %(unsupported_models)s LIMIT 1; """, unsupported_models=self.env['ir.atta
Original PR description
Currentyl the unsupported models will be checked like the following
```sql
ia.res_model NOT IN ARRAY['model1', 'model2']
```
This causes a syntax error. Use `ANY` to avoid the issue
```sql
ia.res_model != ANY(ARRAY['model1', 'model2'])
```
Reproduce in Odoo shell
```python
from odoo.tools import SQL
query = SQL("""
SELECT ia.id
FROM ir_attachment ia
WHERE ia.res_model NOT IN %(unsupported_models)s
LIMIT 1;
""",
unsupported_models=self.env['ir.attachment']._get_cloud_storage_unsupported_models(),
)
```
opw-6404861
Forward-Port-Of: odoo/odoo#277971Steps to reproduce ================== - Log in with the portal user (or any user without karma points). - Open a forum post. - Try to mark it as the best answer. Technical ========= From here https://github.com/odoo/odoo/pull/215145/changes/46e5ab20cb33536f0cf12d2fc3690beaa11697ee `htmlJoin` expects its first argument to be an iterable and its second argument separator to be a string. Passing the message string as the first argument causes it to be treated as an iterable of characters,
Original PR description
Steps to reproduce ================== - Log in with the portal user (or any user without karma points). - Open a forum post. - Try to mark it as the best answer. Technical ========= From here https://github.com/odoo/odoo/pull/215145/changes/46e5ab20cb33536f0cf12d2fc3690beaa11697ee `htmlJoin` expects its first argument to be an iterable and its second argument separator to be a string. Passing the message string as the first argument causes it to be treated as an iterable of characters, while the guideline markup passed as the second argument is unintentionally used as the separator. As a result, the guideline link is inserted between every character of the message instead of being appended after it. Wrap the message and the additional guideline text in an array when calling `htmlJoin` so the notification is rendered correctly. Task-6302585 Forward-Port-Of: odoo/odoo#276137
Because of this PR https://github.com/odoo/odoo/pull/235719 Audit Trail no longer functions as expected: 1) Tracking messages no longer show in the Audit Trail 2) Description is missing from Audit Trail This commit fixes these issues. task-6413110 Forward-Port-Of: odoo/odoo#278099
Original PR description
Because of this PR https://github.com/odoo/odoo/pull/235719 Audit Trail no longer functions as expected: 1) Tracking messages no longer show in the Audit Trail 2) Description is missing from Audit Trail This commit fixes these issues. task-6413110 Forward-Port-Of: odoo/odoo#278099