Daily updates from Odoo
Wednesday, October 22, 2025
37 changes
2 changes
Enhancements to existing features
Users can now download invoice exports as a single ZIP containing all supported formats, such as PDF and XML. This makes it easier for businesses to share sales and purchase invoices with accountants who may use different tools, especially in PEPPOL workflows.
Original PR description
With PEPPOL, many clients use Odoo for invoicing while their accountant uses another tool. To easily send invoices to the accountant, it’s important to export invoices for both sales and purchase. Adding a `Export ZIP` option to download invoices in all supported extensions (pdf, xml, ..etc) in the same zip. task-4946367 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Customer statement and follow-up reports now have a cleaner header with centered titles and less clutter. They also show the partner bank account below the Tax ID, making key payment information easier to find.
Original PR description
This commit updates the layout for follow-up and customer statement reports. Changes made: --- **Follow-up & Customer Statement Reports:** - remove journal and filter details from header. - centered the title of the report. - Added the partner bank account display below the Tax ID. --- task-4823880 Forward-Port-Of: odoo/enterprise#90068
5 changes
Enhancements to existing features
The point of sale preparation display now prevents unwanted scrolling gestures on small and medium iOS devices. This helps staff keep the preparation screen stable and easier to use during service.
Original PR description
This commit introduces a small fix for IOS (small and medium) devices to prevent touch screen gesture in the pos preparation display. Task : 5113851
This update adds missing identifiers to all Finnish tax report lines. This helps tax report exports reliably match each line to the correct template field, reducing the risk of incomplete or inconsistent exported reports.
Original PR description
The aim of this commit is adding code for all the tax report lines. Before, some lines didn't have any code set on it, now all these lines have a code. The change is motivated by the tax report export where we use the code as key in the dict given to the export template. task-5135868 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232543 Forward-Port-Of: odoo/odoo#229876
Finnish accounting reports now include an export file for tax reporting, helping customers prepare submissions for the Finnish tax administration. The update also improves report export testing so the correct export options are used consistently.
Original PR description
The aim of this commit is adding the tax report export file to allow our customers to send their tax reports to their administration. task-5135868 Forward-Port-Of: odoo/enterprise#97799 Forward-Port-Of: odoo/enterprise#96256
Belgian contacts are now checked on the Peppol network using the two most common identifiers, improving the chance of correctly finding business partners. The update also removes outdated warning messages because the preferred Belgian identifier is now handled automatically during Peppol registration.
Original PR description
1. For belgian partner, we now check for 0208 and 9925 which are the two most used EAS when looking for partner existence on the Peppol network. 2. Remove the warnings about the recommended EAS: 0208 is now the mandatory EAS, this will be handled directly on IAP where the Peppol Access Point will try to register 0208 in all cases with an alias system. Note that we have always computed 0208 as recommended value in registration process. task-4852903 Forward-Port-Of: odoo/odoo#230089 Forward-Port-Of: odoo/odoo#227431
Follow-up and customer statement reports now have a cleaner header with centered titles and less clutter. They also show the partner bank account below the Tax ID, making key payment details easier for customers to find.
Original PR description
This commit updates the layout for follow-up and customer statement reports. Changes made: --- **Follow-up & Customer Statement Reports:** - remove journal and filter details from header. - centered the title of the report. - Added the partner bank account display below the Tax ID. --- task-4823880 Forward-Port-Of: odoo/enterprise#90068
2 changes
Enhancements to existing features
Finnish accounting reports can now be exported in the required file format for submission to the tax administration. This helps businesses prepare and send tax report data more easily and reduces manual handling.
Original PR description
The aim of this commit is adding the tax report export file to allow our customers to send their tax reports to their administration. task-5135868 Forward-Port-Of: odoo/enterprise#96256
Follow-up and customer statement reports now have a cleaner header with centered titles and less clutter. Partner bank account details are shown near the tax ID, making key payment information easier for customers to find.
Original PR description
This commit updates the layout for follow-up and customer statement reports. Changes made: --- **Follow-up & Customer Statement Reports:** - remove journal and filter details from header. - centered the title of the report. - Added the partner bank account display below the Tax ID. --- task-4823880 Forward-Port-Of: odoo/enterprise#90068
13 changes
Enhancements to existing features
The VoIP recent call experience is now cleaner and easier to use, with fewer visible buttons and related actions grouped into dropdown menus. Mobile users get the same actions in a bottom-sheet layout, making call follow-up tasks easier on smaller screens.
Original PR description
*: voip, voip_{ crm, hr_recruitment, sms } This commit introduces several improvements in the recent call tab in the VoIP interface: 1. There is always a maximum of 3 buttons to the left of the call…
*: voip, voip_{ crm, hr_recruitment, sms }
This commit introduces several improvements in the recent call tab in the VoIP interface:
1. There is always a maximum of 3 buttons to the left of the call card and one call button on the right.
<img width="466" height="188" alt="image" src="https://github.com/user-attachments/assets/ba7b3492-1205-4645-a101-42c2466bc196" />
2. Group all create actions in one dropdown menu.
<img width="381" height="313" alt="image" src="https://github.com/user-attachments/assets/dab7f172-2f24-43a1-a88d-952aca0b0a6c" />
3. Group regular actions + send actions in one dropdown menu with a separator. This also includes adding some actions that weren't there, like "subscriptions" and "tickets".
<img width="380" height="411" alt="image" src="https://github.com/user-attachments/assets/7d1f9284-6163-4a18-b0b7-f73018e2cc1e" />
4. All the mentioned dropdown menus above are open as a bottom sheet when opened on mobiles.
<img width="462" height="615" alt="image" src="https://github.com/user-attachments/assets/d5fa4233-d0e7-44b0-a0c9-d5fdb8e59c6e" />
Task-4962728Financial reports with many expanded lines now build display data more efficiently. This reduces waiting time for users viewing large account reports, with the provided benchmark improving from 2.65 seconds to 1.93 seconds.
Original PR description
The column dicts contains all the data needed for the ui to display each cell of a line. In order to compute them, we iterated over `aggregated_group_totals` ( which basically represents the data gotten from the query for each line) and then over each expression. But if we had a lot of lines, the operations we do with the expressions became expensive. With this commit, the operations on the expressions are processed first, then we iterate over the lines. Benchmark --------- For an `account.report` using a custom handler, containing 1 `account.report.line` and 6 `account.report.column`, which unfolds into ~5300 lines: | | Before | After | |-------------|-----------|---------| | Timings | 2.65s | 1.93s |
This update modernizes parts of the online sales rental, stock rental, and subscription areas by replacing older browser code with a lighter standard approach. It helps reduce reliance on an external library, which can make these website shopping features easier to maintain and improve over time.
Original PR description
This PR aim to convert all jQuery code into Vanilla JS in website_sale, this way we will reduce the dependency of jQuery in Odoo codebase. task-3770362
The German tax report has been reorganized after the removal of a balance column. This keeps the report logic aligned with the new layout and helps ensure tax reporting remains clear and reliable for German localization users.
Original PR description
After removing the balance column, we need to refactor the code that depends on it task-5046641
This update tidies the return flow used after Stripe-related expense actions. It improves maintainability and consistency without introducing a significant change for everyday users.
Original PR description
Forward-Port-Of: odoo/enterprise#97765
This update reorganizes how several website-related widgets load their supporting content, moving it into a dedicated bundle that is loaded only when needed. This should make pages lighter and improve maintainability without changing the visible user experience.
Original PR description
This pr moves static xml files of JS widgets from assets_frontend bundle to new bundle and that bundle is loaded with assetLibs property of JS widget. task-4146919
This draft update replaces several older pop-up, tooltip, notification, and menu elements with shared standard components across affected apps. This should make the user experience more consistent and easier to maintain, with a specific fix for planning calendar pop-ups.
Original PR description
Work in progress
This update restores automated checks for the OCR manual correction experience, helping ensure users can reliably adjust extracted document data. It broadens coverage for field availability, rectangular selection, and smart line handling, reducing the risk of regressions in future changes.
Original PR description
Commit 935b25f has refactored and improved the boxes interface of the OCR, but, due to the lack of time (19.0 freeze), the tests were removed as they needed to be rewritten. This commit re-introduce the tests in a more generic fashion by moving them directly into the mixin instead of inside the `account_invoice_extract` module and it also covers the new features: - Availability on all fields. - Rectangular selection. - Smart line creation/filling for x2many fields. Related to task-[5055731](https://www.odoo.com/odoo/project/2068/tasks/5055731) Forward-Port-Of: odoo/enterprise#95778
Opening and folding the WhatsApp section in the Discuss sidebar is now more responsive. This improves day-to-day navigation for users who manage WhatsApp conversations in Odoo, reducing friction when switching between communication categories.
Original PR description
Part of Task-5003012
The softphone now shows direct buttons to a customer's helpdesk tickets and subscriptions. This helps sales and support teams get relevant customer context faster during calls, reducing navigation time and improving service responsiveness.
Original PR description
*: voip_helpdesk, voip_sale_subscription Task-4962728 Community: https://github.com/odoo/odoo/pull/225421
This change streamlines how IoT device keyboard settings are updated by combining two related actions into one. It reduces unnecessary communication with the IoT Box, helping device setup and configuration run more efficiently.
Original PR description
`_update_layout` keyboard action method now also calls `_save_is_scanner` to reduce the number of call from the db to the IoT Box. Community PR: [https://github.com/odoo/odoo/pull/186326](https://github.com/odoo/odoo/pull/186326)
The Mexican localization demo company has been updated from Kemper School to a SAT-approved demo company that supports payroll stamping as well as existing electronic invoicing scenarios. This keeps demos and test flows usable for payroll, invoicing, stock, and accounting documents in Odoo 19.
Original PR description
The SAT has a list of ‘demo’ companies to enable invoicing demo operations through Electronic Data Interchange (EDI). Currently, in Odoo, the default demo company is Kemper School. However, with the release of payroll stamping in version 19, this company is no longer useful, as it cannot stamp payroll. So, instead of adding another company, we modified the Kemper School data to change it to another company that can stamp payroll and all other existing documents. The demo company data was changed, the certificates were changed, and a file that was never added to the manifest and therefore had no use was deleted. I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#95221
Follow-up and customer statement reports now have a cleaner header with centered titles and less clutter. Bank account information is shown near the tax ID, making key customer payment details easier to find.
Original PR description
This commit updates the layout for follow-up and customer statement reports. Changes made: --- **Follow-up & Customer Statement Reports:** - remove journal and filter details from header. - centered the title of the report. - Added the partner bank account display below the Tax ID. --- task-4823880 Forward-Port-Of: odoo/enterprise#97546 Forward-Port-Of: odoo/enterprise#90068
12 changes
Enhancements to existing features
The Taiwan localization now includes updated balance sheet and profit and loss reports that better match common Taiwanese business practices. The previous report versions are kept as legacy for now but are planned for removal in a future version.
Original PR description
This commit adds new improved accounting reports (balance sheet & profit & loss), providing users with improved reports that aligns better with the common Taiwanese business practices. The old balance sheet and profit & loss reports are depreciated and will be fully removed in later versions. [Task-4915057](https://www.odoo.com/odoo/project.task/4915057)
The Taiwan localization now includes a refined chart of accounts and updated default accounts aligned with common local business practices. This helps Taiwanese companies start with accounting structures that better reflect publicly listed company reporting formats.
Original PR description
This commit adds improved Chart of Accounts for Taiwan to better match common business practices. The chart of accounts, balance sheet, and profit and loss are referenced from the accounting structures used by publicly listed companies in Taiwan to ensure relevance and practicality. Updates: - Revise Taiwanese chart of accounts - Revise Taiwanese default accounts [Task-4915057](https://www.odoo.com/odoo/project.task/4915057) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adjusts image shape controls in the HTML builder, making it easier to manage how images appear on web pages. It helps editors create more polished page layouts with a small usability improvement.
This update restores automated checks for the OCR manual correction experience, helping ensure users can reliably review and adjust extracted document data. It also covers newer capabilities such as selecting text areas and filling repeated line items, reducing the risk of regressions in future updates.
Original PR description
Commit 935b25f has refactored and improved the boxes interface of the OCR, but, due to the lack of time (19.0 freeze), the tests were removed as they needed to be rewritten. This commit re-introduce the tests in a more generic fashion by moving them directly into the mixin instead of inside the `account_invoice_extract` module and it also covers the new features: - Availability on all fields. - Rectangular selection. - Smart line creation/filling for x2many fields. Related to task-[5055731](https://www.odoo.com/odoo/project/2068/tasks/5055731)
The Mexican localization demo company has been replaced with one that supports payroll stamping as well as existing electronic invoicing demo flows. This keeps demos and testing usable for payroll, invoicing, stock, and accounting scenarios in Odoo 19.
Original PR description
The SAT has a list of ‘demo’ companies to enable invoicing demo operations through Electronic Data Interchange (EDI). Currently, in Odoo, the default demo company is Kemper School. However, with the release of payroll stamping in version 19, this company is no longer useful, as it cannot stamp payroll. So, instead of adding another company, we modified the Kemper School data to change it to another company that can stamp payroll and all other existing documents. The demo company data was changed, the certificates were changed, and a file that was never added to the manifest and therefore had no use was deleted. I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Mexican localization demo company has been changed from Kemper School to a SAT-approved demo company that supports payroll stamping. This keeps demo invoicing and payroll scenarios usable in Odoo 19 without adding extra demo company records.
Original PR description
The SAT has a list of ‘demo’ companies to enable invoicing demo operations through Electronic Data Interchange (EDI). Currently, in Odoo, the default demo company is Kemper School. However, with the release of payroll stamping in version 19, this company is no longer useful, as it cannot stamp payroll. So, instead of adding another company, we modified the Kemper School data to change it to another company that can stamp payroll and all other existing documents. The demo company data was changed. Task-id: 5083590
Financial reports can now group account-based lines by account code before showing individual accounts when used across multiple companies. This makes cross-company reports easier to compare when different companies use matching account codes but separate account records.
Original PR description
If the report has a line that contains a group by `account_id` and if the report is multi-company, we allow the user the group per `account_code` before `account_id`. task-5092712
Equity transaction forms are now easier to read with fields in a clearer order and more understandable names for transactions, beneficial owners, and valuations. Price change tracking now shows the correct currency symbol, reducing confusion when reviewing transaction history.
Original PR description
This commit 1. Reorders fields on transaction form 2. Gives better display names for transactions, ubos, and valuations 3. Fixes the tracking of transaction security_price not having currency sign task-5144766
Follow-up and customer statement reports now have a simpler, more focused header with centered titles and fewer technical details. The reports also show the partner bank account below the Tax ID, making key payment information easier for customers to find.
Original PR description
This commit updates the layout for follow-up and customer statement reports. Changes made: --- **Follow-up & Customer Statement Reports:** - remove journal and filter details from header. - centered the title of the report. - Added the partner bank account display below the Tax ID. --- task-4823880 Forward-Port-Of: odoo/enterprise#90068
This change improves how salesperson team access is checked when opening the Phone app, avoiding a slow database lookup on large installations. For businesses with high call and user volumes, the default Phone app list can load dramatically faster, reducing wait times for sales teams.
Original PR description
Description ----------- Following odoo/enterprise@88b8de95e1a28a8037a386fc8fb6a044a98217e7 and odoo/enterprise@777ebe3918aacdfe3f09078f542e2a784f72a67f, opening the Phone app for a salesperson is…
Description ----------- Following odoo/enterprise@88b8de95e1a28a8037a386fc8fb6a044a98217e7 and odoo/enterprise@777ebe3918aacdfe3f09078f542e2a784f72a67f, opening the Phone app for a salesperson is slow on databases with an already large volume of `voip.call` and `res.users`. This is due to the disjonction (OR-ing) between `ir.rule` `voip_call_rule_user` and `voip_call_team_access_rule`. It leads to Postgres doing a naive O(n^2) join between all `voip.call` and the `res.users` to only then do some post-filtering. Technically the domain introduced by `voip_call_rule_user` becomes redundant once `voip_call_team_access_rule` is applied for `read`, as reading your own sales team calls includes also your own calls. Sadly there is currently no way to drop the redundant condition only for salesperson, without relaxing the rule for all `Role / User`. This commit addresses the issue by inlining the ids when resolving `_search_crm_team_ids` directly, to avoid the elaborate subquery generated when resolving the One2many `crm_team_member_ids`. We fall back on the previous behavior in case we might be injecting too many ids, which might introduce a performance regression. We assume that on average this won't be the case. This leads to trivial queries that properly use relevant indexes. Benchmark --------- On a database with over 10M `voip.call` and `res.users`, for a salesperson to open the Phone's app default list view with no default filter (the default setup), took: | Before | After | Speed-up | |--------|-------|----------| | 14sec | 150ms | 93x | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a user manually assigns an emission factor to an account move line, Odoo now creates a matching assignment rule automatically. This reduces repeated manual work and helps apply the same emission factor consistently to future lines with the same product or partner.
Original PR description
Before this commit, when the user assigns an emission factor to an account move line, no assignation rule is created based on that, which means the user has to either manually create an assignation rule into emission factor or each time select that emission factor for the same product/partner set on other account move line. This commit automatically generates an assignation rule into emission factor when the emission factor is manually set into an account move line. By doing that, the user will be able to use the assignation rule to automatically assign that emission factor to other account move lines. task-4933207
The Peppol configuration wizard now remains available even if the external service list cannot be retrieved. This lets businesses still complete important actions such as unregistering, instead of being blocked by a non-critical service outage.
Original PR description
Handle `api/peppol/2/get_services` errors gracefully, without blocking critical section of peppol functionnal flow (deletion). If the API endpoint for services returns an error (which should not be affecting any users), the whole peppol config wizard is no longer accessible. The users will therefore not be able to unregister. Note that with this change, if we get an API error, all services will be marked as disabled (which is fair, and better than displaying an API request error) no-task Forward-Port-Of: odoo/odoo#228800
2 changes
Enhancements to existing features
The device homepage now shows a clearer warning when downloading the SSL certificate fails. This helps users understand what went wrong directly on the page, reducing the need to inspect system logs or request technical support.
Original PR description
We improved the certificate status warning displayed on the homepage to avoid having to check the logs to know what went wrong while downloading the SSL certificate.
This change improves how sales orders find their related projects by adding a database index. It can reduce delays when working with sales orders linked to many projects, without changing user-facing behavior.
Original PR description
This commit adds an index on `project.project. reinvoiced_sale_order_id`, because the search in `sale.order. _compute_project_ids` might not be selective enough based on `sale_order_id`, which is a related field using `sale_line_id`. Since it's related, there is only a where clause on `sale_line_id IS NOT NULL`, which might not be selective enough and leads to a Seq. Scan of the `project_project` table. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
1 change
Enhancements to existing features
This update suppresses misleading warning messages caused by a packaging issue on Ubuntu Jammy environments. It keeps logs cleaner and helps teams focus on real operational issues without changing business functionality.
Original PR description
Apparently on jammy the pdfminer package returns nonsensical versions (the distribution for `pdfminer.six` yields `-VERSION-`, and inside the python code the `__version__` is `__VERSION__`). When trying to look up the distribution for the (invalid as a distribution name) `ldap`, as a fallback `pkg_resources` parses every package on the sys.path before returning a lookup failure. Doing so, it encounters `pdfminer` fails to parse its version as a `Version`, warns that that is deprecated, then parses it using the more lenient `LegacyVersion` and warns that this is also deprecated. Since this is a packaging issue in just jammy and we can't really do anything about it, just sweep the issue under the rug. https://runbot.odoo.com/odoo/error/163677