Daily updates from Odoo
Friday, June 27, 2025
24 changes
15 changes
Enhancements to existing features
Odoo's San Francisco office address has been updated in customer-facing content templates. This helps ensure communications and knowledge content reference the correct location and avoid pointing people to an unrelated business.
Original PR description
Update the Odoo SF Office address as they moved to make sure to not end up mentioning another unrelated business. related: https://github.com/odoo/odoo/pull/212916 Task-4844152
The rental date and time picker on the website has been visually refined so its navigation buttons better match different page backgrounds. This improves the storefront experience without changing backend editor behavior.
Original PR description
This PR fine-tunes the design of the datetime picker within the front-end after the merge of Commit[^1]. - Requires https://github.com/odoo/odoo/pull/215763 ---------------- Prior Commit[^1], the…
This PR fine-tunes the design of the datetime picker within the front-end after the merge of Commit[^1]. - Requires https://github.com/odoo/odoo/pull/215763 ---------------- Prior Commit[^1], the previous, next, and month selection buttons were all placed in a flex at the top of the datetime picker. After Commit[^1], buttons are re-ordered in a different layout, with the right button class on each of them. After this change, each button is separated and thus has its radius and background. In the backend, this `btn-light` is okay since it matches the background of our views, while in the front-end, this color is dynamic and does not match the page background. As each button is separated, it results in a weird visual result. To fix this issue, we remove these `btn-light` classes and add a `btn-sm` one to handle the size of these buttons. This change is meant to affect the datetime picker occurrences within the front-end but does not affect the `web_editor` one, as it inherits the backend design. task-4893742 [^1]: [e2b78fca435f268515f9593c2af821616aff7ebb](https://github.com/odoo/odoo/commit/e2b78fca435f268515f9593c2af821616aff7ebb)
VoIP now uses newer formatting helpers to handle displayed content more consistently. This should make call-related text safer and more reliable without changing day-to-day workflows.
Original PR description
Make the most of the newly introduced HTML helpers in the VoIP code.
This update improves the tooltip shown for subscription templates, making it easier for users to understand the related option or field. The change helps sales and subscription teams work with templates more confidently with minimal impact on existing workflows.
The IoT Box image no longer tries to switch between read-only and writable modes. This removes a complex process that was not working reliably and helps avoid issues caused by background tasks keeping storage busy.
Original PR description
IoT Box images were r/o by default: we had to remount the filesystem r/w everytime we wanted to write something. As it was getting hard to track background processes keeping mount points busy, we removed the logic. In addition, as mount points were kept busy, IoT Boxes stayed in r/w mode all the time, making the logic useless. Community PR: odoo/odoo#216329 Task: 4551009
This update modernizes how Odoo defines filtering rules across Sales, Subscriptions, Rentals, POS, Planning, and related localization features. It is mainly an internal improvement that helps keep these business flows easier to maintain and more reliable without changing day-to-day user workflows.
Original PR description
odoo/odoo#206894
The helpdesk mail plugin setup information was updated to match related mail plugin modules. This keeps module configuration consistent and helps avoid small setup or dependency issues.
Original PR description
Consistency with other *_mail_plugin modules
The spreadsheet global filter experience has been refreshed to make filter setup and field matching clearer for users. This should improve day-to-day spreadsheet reporting workflows by reducing confusion when configuring filters across data sources.
Spreadsheet relative date filters have been updated to match the latest redesigned experience. This makes date-based filtering clearer and more consistent for users working with spreadsheets and documents.
Users can now flip the axes of a pivot table directly from the spreadsheet pivot details panel. This makes it faster to reorganize data views and compare information without rebuilding the pivot setup.
Spreadsheet pivot tables in Documents now align with the updated behavior that no longer shows a label for the first row grouping. This keeps automated checks consistent with the intended interface and supports a cleaner spreadsheet experience.
Original PR description
This commit removes adapts the tests to the removal of the label of the first row group by in the pivot table. See https://github.com/odoo/o-spreadsheet/pull/4363 Task: 3975326
Financial reports using account code rules now calculate much faster by avoiding a heavy database query pattern. This reduces processing time and makes automated validation more stable, especially for large reports with many account-code conditions.
Original PR description
The `account_codes` engine generates a giant `UNION ALL` to map prefixes to accounts. This fully loads postgres for up to minutes at a time, which in the default configuration loads 3 full cores.…
The `account_codes` engine generates a giant `UNION ALL` to map prefixes to accounts. This fully loads postgres for up to minutes at a time, which in the default configuration loads 3 full cores. This also leads to significant *variance* on runbot: runbots are configured with as many builds as they have cores[^1], so the test can take 3 cores when the machine is idle but during the day when machines tend to be fully loaded it contends a ton and slows down dramatically. `l10n_ro_reports.account_financial_report_ro_bs_large` for instance has nearly 400 different clausesm, something postgres does not cope with well https://explain.dalibo.com/plan/ea5d23aefd3b861f#grid This is not helped by those searches being filtered by account codes, which have not been indexed since 18.0 (because it's now `company_dependent`). Since the accounts table is pretty small (800 records on runbot, 8000 on odoo.com) we can just load the entire thing in memory and index it. before: 164.80s user 1.71s system 12% cpu 23:03.28 total after: 124.43s user 1.80s system 23% cpu 8:46.15 total NOTE: Currently the code (prefix) search uses a binary search so complexity is O(m log(n)). This could be improved by sorting the non-tag formulas, as we could then use synchronised linear search, working in O(m + n). [^1]: while they are hyperthreaded that's only an extra 10-ish% performance opportunity at best for CPU-bound workloads, sometimes less
Customers will now see the successful payment message only when they return after completing a payment or from a payment confirmation email. This avoids showing an outdated success message every time they open the subscription portal, reducing confusion.
Original PR description
Before this commit, the successful payment message showed up every time the user opened the portal view. After this commit, the message will only appear if the user is redirected after making a payment or coming from a payment confirmation email. task-4420352
Demo products for rentals and subscriptions now include more short descriptions. This makes it easier to showcase how product descriptions can be enabled or disabled in sales demos.
Original PR description
*: sale_subscription Before this commit, only the first four demo products in website_sale had descriptions, showcasing a variety of none/short/long formats. This commit adds short descriptions (max 50 characters) to additional demo products to better demonstrate the "Enable/Disable Description" feature. In this case, the printer and car leasing products were updated to expand variety and highlight the use of none/short descriptions in a renting context. requires: https://github.com/odoo/odoo/pull/216043 task-4893752
This update adjusts the AI chat plugin to better mark content that works with plain text. It helps ensure AI-generated or processed chat content can be handled more consistently across contexts where formatting may not be supported.
9 changes
Enhancements to existing features
This update makes Odoo’s automated browser tests more predictable when a test action reloads or leaves a page. It reduces flaky test results across several business areas, helping teams validate changes with more confidence before release.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update brings improved electronic document generation logic into Odoo 18.0, especially for BIS3 and Colombian UBL formats. It reduces the risk of incorrect tax details on customer invoices and prepares the system for upcoming Colombian point-of-sale e-invoicing work.
Original PR description
We recently refactored the UBL generation in master in https://github.com/odoo/odoo/pull/214151. This refactor improves the handling of taxes and enables code to be factorized when generating UBL documents from invoices, sale / purchase orders, and PoS orders. We are back-porting the common helpers and the BIS3 and Colombian UBLs because: - for BIS3, we need to use the new tax computations to avoid customer errors in 18.0 - for Colombia, we will soon be merging an UBL for the Colombian PoS and basing it on the refactored code will avoid us needing to maintain separate versions in stable and master. Enterprise PR: https://github.com/odoo/enterprise/pull/88366 task-4893999
When registering payments with SEPA Direct Debit, users now see a banner listing any partners without a valid SEPA mandate. This helps them quickly identify which customer or vendor records need attention before payments can proceed.
Original PR description
When users try to register one or multiple payments with 'SEPA Direct Debit' method, and one or more partners don't have a valid SEPA mandate, a banner alerts the user and mention the names of the concerned partners. This makes it easier for the user because he directly sees the partners for which he has to set a SEPA mandate. task-4575537 runbot : https://runbot.odoo.com/runbot/bundle/18-0-sepa-missing-links-roto-353391
When users enrich a contact or company from CRM, related category tags are now automatically added as part of the partner details. This reduces manual data entry and helps keep customer records more complete and consistent.
Original PR description
when using partner enrich from CRM category tags were not fetched now category tags are autofilled when using partner enrich from CRM --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents crashes when products have very large numbers of stock valuation records. It makes stock-related accounting operations much faster and more reliable for large databases, reducing a benchmarked operation from about 15 seconds to under a quarter second.
Original PR description
It's not rare to have databases with a huge number of svls for some products. For instance, the database of opw-4326597, which is currently on 17.0 and hosted on Odoo.sh, has 166 000 svls for the…
It's not rare to have databases with a huge number of svls for some products. For instance, the database of opw-4326597, which is currently on 17.0 and hosted on Odoo.sh, has 166 000 svls for the same product. Because of that, the current code in `svl_empty_stock` is likely to raise a MemoryError in those databases. The reason for that is the `__get__` call on `stock_valuation_layer_ids` along with a call to `filtered`. After expanding the singleton with the `prefetch_ids` and fetching all the fields of the related svls, the cache will probably raise a MemoryError. We are preempting this issue by changing this part of the code with a call to `_read_group` to get the correct lots directly. Thanks to @mwath for pointing this out. #### speedup Benchmark of the `_svl_empty_stock` method, with a product with 200 000 svls with a lot. | Before PR | After PR | |:----------:|:---------:| | 15.03s | 198.64ms | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Updates the spreadsheet component used in Odoo. This should keep spreadsheet features current and may improve reliability or compatibility for users working with spreadsheets.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Automated test journeys across several Odoo apps now clearly mark the steps that intentionally reload or leave a page. This makes the test suite more reliable and easier to maintain, reducing the chance of false failures during quality checks.
Original PR description
In this commit, we add expectUnloadPage to steps that require it to explicitly declare that the step will cause the page to be unloaded.
This update brings newer Colombian electronic invoicing preparation logic into the current version, making it available through a configuration setting. It also lays groundwork for upcoming Colombian point-of-sale electronic document support, while keeping the change controlled and opt-in.
Original PR description
In master, we recently refactored the UBL generation so that it uses the new tax helpers. This is a back-port of the Colombian part of that refactor. Users will be able to use the new helpers by setting the config param `account_edi_ubl_cii.use_new_dict_to_xml_helpers`. Additionally, back-porting these helpers enables us to reuse them for the Colombian PoS UBL which will be coming out soon. Community PR: https://github.com/odoo/odoo/pull/215610 task-4893999
Bank synchronization and online payment now use richer connection status information, including whether payment initiation is enabled or activated with the provider. This makes the Initiate Payment option appear only when the customer has enabled the payment feature, reducing confusion and better matching actual availability.
Original PR description
This commit is a partial backport of this commit [[1]]. This commit has 2 different purposes: 1. Connect the bank synchronization and the payment module to a new API route to get the connection…
This commit is a partial backport of this commit [[1]]. This commit has 2 different purposes: 1. Connect the bank synchronization and the payment module to a new API route to get the connection status instead of only getting the consent expiring date. This new route still provides the consent expiring date but will also provide more information about the payment initiation. Three new information are provider, whether the payment feature is enabled, whether the payment activation is requested to the provider and whether the feature is activated with the provider. 2. This second purpose is directly linked to the first one, it modifies the Initiate payment visibility. Before it was visible once the bank journal was connected to a bank synchronization, now it's visible once the bank journal has a bank synchronization where the payment initiation feature is enabled by the customer. task-4413740 [1]: https://github.com/odoo/enterprise/commit/a89d1aed466167249cd52b30bce157f015355458