Daily updates from Odoo
Tuesday, August 19, 2025
8 changes · saas-18.3
Enhancements to existing features
Avatars linked to contact records can now be clicked to open the same profile popover used for users. This makes partner-related many-to-many avatar fields more useful by giving quick access to contact information directly from the view.
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
The Romanian localization now includes the new 11% and 21% VAT rates introduced by recent legislation. Tax group definitions were also aligned for more consistent accounting setup and reporting.
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#222478 Forward-Port-Of: odoo/odoo#221238
Odoo now supports signing Italian Public Administration invoices through Namirial before they are sent electronically. This helps businesses meet required XADES signature rules and improves handling of signing-related errors before invoice submission.
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#223083 Forward-Port-Of: odoo/odoo#196054
The accounting tax helper documentation was improved to make it clearer which helpers are available in the point of sale interface and which are only available on the server side. This helps developers avoid confusion when working with tax behavior across accounting and point of sale areas, with no direct change for end users.
Original PR description
Since some of them are copy pasted javascript side, adding such docstring is helping to distinguish what is available directly js-side from point_of_sale from what is only accessible python-side. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223258
This change reduces unnecessary loading of large email-related data when processing mail records. It helps prevent memory issues and improves performance for mail operations, especially when handling large messages or high volumes.
Original PR description
Modifications are made around read, filtered, list comprehension. The read function usually does not prefetech fields other than stated. But in this case, since the fields are related fields from…
Modifications are made around read, filtered, list comprehension. The read function usually does not prefetech fields other than stated. But in this case, since the fields are related fields from another model, The fields of the other model are prefeteched. This includes the body which can be very big in size and cause an out of memory error. Filtered does not need other fields and keeps them unnecessarily in cache. List comprehension where it has a reference to specific field inside the model also triggers the prefetecher. Benchmark: | |Number of queries| SQL time| Python time|| |-------|----------------------------|----------------|---------------|-| |with prefetch| 82| 1.887 | 7.898| Out of memory| |Without prefetch| 120| 0.385 | 5.973| | The benchmark with the prefetch was done locally with increasing the memory limit. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211075 Forward-Port-Of: odoo/odoo#183893
Point of Sale receipts in Saudi Arabia now support the required Phase 2 ZATCA QR code. If a QR code cannot be verified or has not been submitted, invoices and receipts are clearly marked as not legal documents to help businesses stay compliant.
Original PR description
Adds phase 2 QR code on POS receipts and shows it as a non-legal document if we are unable to verify the QR code on invoices and POS receipts. This change is done to accommodate for ZATCA compliance in Saudi Arabia (ZATCA) task-4646326 Description of the issue/feature this PR addresses: Adds phase 2 ZATCA QR code and hides unverified QR codes Current behavior before PR: Always shows Phase 1 ZATCA QR Code Desired behaviour after PR is merged: Showing ZATCA phase 2 QR code when required and hiding un-submitted QR Codes, adds text of "Not a Legal Document" to unsubmitted docs --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220293 Forward-Port-Of: odoo/odoo#208510
Romanian SAF-T reporting has been updated to include the correct tax types and codes for newly introduced taxes under recent Romanian tax law. This helps companies keep tax reports aligned with legal requirements and reduces the risk of incorrect regulatory submissions.
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#92094 Forward-Port-Of: odoo/enterprise#91512
Paid invoices now reactivate eligible churned subscriptions even when payment is made manually or by bank transfer, not only through the customer portal. This helps keep subscription status aligned with customer payments while respecting the allowed automatic closing window.
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