Wednesday, August 20, 2025
7 changes · saas-18.4
Enhancements to existing features
Avatars linked to partner records can now open the same profile popover as user avatars. This makes contact-related many-to-many fields easier to browse and use, especially in kanban and HR-related views.
Original PR description
With this commit, the AvatarCardPopover supports having an id of a `res.partner` record in the props. This allows components like KanbanMany2ManyTagsAvatarUserField (that use AvatarCardPopover) to be used with a Many2Many field related to `res.partner`. In such cases, the avatars will now be clickable and will display the avatar card popover. fixes: task-4640810 Forward-Port-Of: odoo/odoo#208846
Italian public administration invoices can now be signed through Namirial before being sent, helping businesses meet required XADES signature rules. The update adds the related configuration and processing flow, improves handling of signing errors, and ensures the signed XML replaces the original before attachment.
Original PR description
Invoices for the Italian Public Administration businesses must be signed with XADES before sending. We use Namirial's third-party signing services. - This upgrade adds configuration, a signing process, and new returns to handle this case. Old versions should be able to ignore this, as the invoice will stay blocked in the requires_user_signature state in Odoo, now deprecated, without being sent to the EDI. - Handle more error types, with dedicated server exceptions with an error code map. Old versions should be able to just handle them as before, generically. - When the Proxy Server signs an invoice, the XML will replace the one on the Odoo instance before it's actually attached. Needs: odoo/odoo#210572 Also see: odoo/iap-apps#978 Task [link](https://www.odoo.com/odoo/project/967/tasks/4477745) task-4477745 Forward-Port-Of: odoo/odoo#223245 Forward-Port-Of: odoo/odoo#196054
Romanian localization now includes the new 11% and 21% VAT taxes introduced by recent legislation. Tax groups were also updated to keep tax reporting and configuration consistent for businesses operating in Romania.
Original PR description
This PR adds new taxes and tax groups for 11% and 21% after new VAT law was introduced in Romania. It also fixes tax groups of some taxes and make it more consistent. TaskID:4979168 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222642 Forward-Port-Of: odoo/odoo#221238
Sales orders with many lines now load available product documents much faster. This improves responsiveness for users preparing PDF quotes, especially on larger orders.
Original PR description
Replace search in for loop with `_read_group` and a precomputed dictionary of available product documents Description of the issue/feature this PR addresses: Performance issue when opening SO with multiple lines (more than 100). See Speedscope before [speedscope_before.json](https://github.com/user-attachments/files/21251034/speedscope_before.json) <img width="1920" height="659" alt="image" src="https://github.com/user-attachments/assets/e77bec12-e8cf-4cc9-b3d2-90ad59db6fa3" /> And after: [speedscope_after.json](https://github.com/user-attachments/files/21251096/speedscope_after.json) <img width="1911" height="404" alt="image" src="https://github.com/user-attachments/assets/e1663ec3-2918-451d-ae25-6103d8a75eff" /> We went from 252ms for the query only to 12.63ms. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220613 Forward-Port-Of: odoo/odoo#219229
Online shop product searches now retrieve product attributes more efficiently, especially for large catalogs. This can significantly reduce waiting times when customers browse or filter products, improving the shopping experience.
Original PR description
### Description: The default query to fetch attributes for searched products needs to join on the `product_tmpl_ids` Many2Many field. This can be slow, as it requires a join on an intermediate table. This change avoids that by directly querying the attribute lines and grouping by `attribute_id` to remove duplicates. ### Benchmark (in 18.0): | N° of products | Before | After | |----------------|--------|-------| | 3708 | 400ms | 200ms | | 128539 | 4 min | 800ms | | 484798 | 6 min | 3s | ### Reference: opw-4937361 Forward-Port-Of: odoo/odoo#222249 Forward-Port-Of: odoo/odoo#222064
Romanian SAF-T reporting now includes the correct tax type and code mappings for newly introduced taxes under recent law changes. This helps businesses keep statutory SAF-T reports aligned with updated Romanian tax requirements and avoids reporting inconsistencies.
Original PR description
New taxes were introduced in Romania as per the new tax Law. The PR https://github.com/odoo/odoo/pull/221238/files added new taxes in community. This PR updates the SAF-T Tax Type and Code for the newly added taxes. TaskID:4979168 Forward-Port-Of: odoo/enterprise#92188 Forward-Port-Of: odoo/enterprise#91512
Subscriptions that were marked as churned now return to active status when their invoice is paid, including manual payments such as bank transfers. This prevents paid customers from remaining incorrectly inactive, while still respecting the configured automatic closing limit.
Original PR description
Before: - A subscription is reopened only when a customer pays through the portal. - Manual payments do not reopen the subscription. - invoice is paid but subscription remains churned. After: - Subscriptions now reopen when invoice paid through bank transfer. - Additionally, reopening is the subscription will only reopen if the next_invoice_date is within the allowed automatic closing limit (next_invoice_date >= today - automatic closing limit). Impact: - Paid invoices now always bring the subscription back to active status task-4277444 Forward-Port-Of: odoo/enterprise#92367 Forward-Port-Of: odoo/enterprise#73136