Saturday, August 22, 2026
4 changes · saas-19.3
Enhancements to existing features
This update enables an automated quality check for a set of web document tests. It helps keep the test code consistent and easier to maintain, reducing the risk of future issues in this area.
Original PR description
Task-5180137 Forward-Port-Of: odoo/odoo#283893 Forward-Port-Of: odoo/odoo#280233
Resolved issues and error corrections
This update fixes issues in how Odoo prepares structured log information, including cases where ignored fields and test-related details were handled incorrectly. It also adds automated checks to help prevent these logging issues from returning, improving reliability for monitoring and troubleshooting.
Original PR description
The JsonFormatter has two bugs - the ignore list is not working as expected - in 18.0-18.4 the 'test' key is broken This commit add tests to ensure those behavior works as expected While on it, also…
The JsonFormatter has two bugs - the ignore list is not working as expected - in 18.0-18.4 the 'test' key is broken This commit add tests to ensure those behavior works as expected While on it, also adds a `additional_record_keys` parameter to allow to specifically add keys to the default list, without having to override the whole list, and add additional default keys (exc_info and test) The previous `ignored_record_keys` default value was possible to remove by calling `JSONFormatter(ignore_record_keys=[])` The purpose was to be able to easily include all keys and ignore the default ingnore list, but this makes the additional blacklisting of a few keys more tedious, and the general usage and implementation more complex `JSONFormatter(ignore_record_keys=[*JSONFormatter.DEFAULT_IGNORED_RECORD_KEYS, 'other key'])` To simplify the logic, **this is not the case anymore**, so to include all keys something like this would be needed `JSONFormatter(additional_record_keys=JSONFormatter.DEFAULT_IGNORED_RECORD_KEYS)` Or an hardcoded list. Forward-Port-Of: odoo/odoo#281449 Forward-Port-Of: odoo/odoo#279049
This fixes an issue where customer-related sales order line lookups could fail when the search criteria included list values. The change keeps timesheet and sales service workflows reliable by preserving the original search data while safely caching repeated lookups.
Original PR description
- Avoid converting list values in `_get_last_sol_of_customer_domain` to an invalid domain structure when computing the last sale order line of a customer. - Fix by using `str(domain)` as the cache key instead of the domain itself, while still passing the original `domain` to `search()`. This keeps the per-domain caching behavior intact and works for any domain, regardless of whether it contains list values. task-6425335 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#281897
This fix prevents Colombian contacts from being automatically marked as companies when no VAT number has been entered. It helps users create individual child contacts correctly, avoiding incorrect company classification during contact setup.
Original PR description
Before this change: When creating a child contact under a Colombian company from another company context, the identification type defaults to NIT. The system evaluated the child contact as a company immediately, regardless of whether a VAT number was entered, preventing proper individual contact creation. To reproduce: 1. Create a new contact and set the country to Colombia. 2. Set the identification type to NIT. 3. Leave the VAT field empty. 4. Observe that the "Is a Company" checkbox becomes checked automatically. After this change: The company computation logic explicitly verifies that a valid VAT number is present before evaluating NIT contacts as companies, allowing individual child contacts to retain their correct entity status. opw-6468848 Forward-Port-Of: odoo/enterprise#128656