Daily updates from Odoo
Tuesday, August 19, 2025
19 changes
2 changes
Enhancements to existing features
Email processing now avoids loading large unnecessary message data when handling mail records. This reduces memory pressure and lowers the risk of out-of-memory failures, especially when processing large email 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
Belgian Annual Accounts exports from the General Ledger now generate an XML file instead of a fixed-format TXT file. This better matches official formatting needs and supports richer details such as account codes, debit and credit values, multilingual descriptions, and metadata for downstream processing.
Original PR description
The previous Annual Accounts export in the General Ledger generated a TXT file with a fixed column order, which did not meet the structural or formatting requirements for downstream usage. This commit replaces the TXT export with an XML export conforming to the official format, including fields such as account code, debit, credit, multilingual descriptions, and metadata. task-5005345 Forward-Port-Of: odoo/enterprise#92454 Forward-Port-Of: odoo/enterprise#92071
5 changes
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
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
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
12 changes
Enhancements to existing features
Belgian Annual Accounts exports from the General Ledger now generate XML files instead of TXT files. This makes the exported data better structured and aligned with official requirements, improving usability for downstream reporting and processing.
Original PR description
The previous Annual Accounts export in the General Ledger generated a TXT file with a fixed column order, which did not meet the structural or formatting requirements for downstream usage. This commit replaces the TXT export with an XML export conforming to the official format, including fields such as account code, debit, credit, multilingual descriptions, and metadata. task-5005345 Forward-Port-Of: odoo/enterprise#92454 Forward-Port-Of: odoo/enterprise#92071
Mexican localization now includes additional 16% withholding tax options with specific split distributions, along with the related accounts and fiscal positions. This helps businesses apply the correct tax treatment more easily and improves rounding accuracy for existing 10.67% taxes.
Original PR description
Add few 16% taxes with special distribution (1/3 - 2/3 and 1/4 - 3/4). Also add few accounts and a new fiscal position for each new tax. Also adjust the rounding precision of 10.67% taxes. Linked:https://github.com/odoo/odoo/pull/206406 task-4571928 Forward-Port-Of: odoo/enterprise#92347 Forward-Port-Of: odoo/enterprise#83582
Audit balance progress now focuses on accounts that have an audit status, giving users a more accurate view of completion. The update also improves audit return setup screens, search options, and visibility of audit state across localized balance sheets, reducing confusion and preventing an error when creating certain returns.
Original PR description
* On Audit, balances progress bar counts only accounts with states different than none. * When Audit type on return type form, hide non-related fields. * Fix traceback when creating a return for new actionable checks. * In check template search view, add Title to be searchable * Show Audit State on localized balance sheet accounts * task-4991558
The HR interface now uses “employee record” instead of “version” across payroll, salary, and related workflows. This makes labels and menus clearer for users managing employee information, improving day-to-day usability without changing core business processes.
Original PR description
In this PR, we renamed the version into employee record for a better UX. Related task: 4921404.
The Turkish Profit and Loss report now includes 700-series accounts, which are used during the accounting period before being closed into 600-series accounts. This makes the report more useful for local businesses and accountants by supporting more up-to-date financial visibility during the period.
Original PR description
The current Profit and Loss report has some limitations that inhibit its proper adoption as it does not enable the user to use the report in real-time since it excludes the 700 accounts (accounts used within a period until their closing to 600 accounts.) Therefore, this limits the usefulness of the report for local businesses and accountants. In this task, we included the 700 accounts in the report to enable real-time reporting for our users task-4809142
HR teams can now edit employee leave requests even after they reach the approval stage, provided the leave has not already been included in a payslip. This gives administrators more flexibility to correct or update leave records before payroll processing locks them down.
Original PR description
- Allowing HR people to always edit the leave, as long as it's not included in a payslip. task-4866887
IoT administrators can now configure remote debugging directly from the IoT app instead of relying on more manual setup steps. This makes support and troubleshooting easier when devices need remote assistance.
Original PR description
To ease remote debug configuration, we add the possibility to configure remote debug from the IoT app, using the websocket. Community PR: odoo/odoo#216318 Task: 4865987
Signer roles can now have a default contact assigned, so that person is automatically filled in when creating a signature request. Users can still change the signer manually, reducing repetitive entry while keeping flexibility.
Original PR description
In this commit, - added a new field on the Signer Role to link a default Partner. - On the Sign Item Role form, user can now select a default partner. - This partner will be automatically pre-filled as the signer in the sign request wizard. - The default can still be changed manually if needed. task-4812381
Subscriptions now return to active status when their invoice is paid, including payments made by bank transfer or other manual methods. This prevents paid customers from remaining incorrectly marked as churned, while still respecting the allowed automatic closing period.
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
Studio app creation now handles suggested options more predictably. Pipeline stages no longer add custom sorting automatically, while custom sorting clearly controls whether sorting fields appear, making new app setup easier to understand.
Original PR description
This commit refines the behavior of suggested features during app creation in Studio to ensure better consistency and clarity: - Enabling the Pipeline stages option no longer automatically adds the sequence field. - The Custom sorting option now solely determines whether the sequence field is added to list and kanban views. - In list views, the priority and sequence fields are no longer mutually exclusive; both can coexist. However, when both are present, priority takes precedence for sorting (as in kanban). task-4909220
The Dutch Tax Report layout has been improved to make amounts easier to understand. It now uses fewer lines and separates taxable base amounts from tax amounts more clearly, helping users review and submit tax information with less confusion.
Original PR description
The Dutch Tax Report Can be Improved - less lines by adding a distinct tax col - clear distinction between base amount and tax amount ----- This is fixing the XBRL report after this PR: https://github.com/odoo/odoo/pull/222442 task-5000683
Helpdesk teams can now create and track replacement deliveries directly from a customer support ticket. This improves visibility for agents and customers by logging replacement activity and notifying ticket followers when delivery status changes.
Original PR description
- Create a `replacements` option in the helpdesk team settings - Create a `Replace` action button in the helpdesk ticket form - assign default values of the new replacement order - create a `Replacements` stat button in the helpdesk ticket form - allow the creation of the new replacement form the stat button with the right defaults - Set visibility rules for the stat button - log replacement creation in the ticket chatter- log ticket reference in the picking chatter - add a `delivery status` notification subtype to tickets - make notifications to the followers on the delivery stage update - make `Replacements` active for `VIP Support` helpdesk team in demo data task-4781271