Daily updates from Odoo
Wednesday, January 21, 2026
14 changes
1 change
Enhancements to existing features
This update optimizes how Odoo generates reports by grouping related database queries. Previously, each report filter required a separate SQL query, which was slow. Now, multiple filters targeting the same data are combined into a single query, resulting in faster report generation times. This change specifically impacts report performance.
Original PR description
Before this commit, the 'domain' engine was never batched: one expression to evaluate caused one SQL query to be run just for it. With this commit, we group domains that could be evaluated together. Essentially, when we have domains targetting the same many2one field of account.move.line (typically account_id, with conditions like 'account_id.code' or 'account_id.account_type'), we run only one SQL query for all of them, targetting all the move lines according to the report filters. Then, we iterate on its result for each domain to evaluate. When iterating over the results, we filter the ones we keep by searching separately on each traversing model (in our example, account.account), to isolate the ones that are actually targetted by each expression. Tested on our prod. With this, opening the Generic Balance Sheet goes from 1min 35s to 36s. opw-5130725 Forward-Port-Of: odoo/enterprise#101725
2 changes
Enhancements to existing features
This update ensures Odoo correctly handles the new 11% and 21% VAT rates introduced in Romania. By adding missing tax mappings, the system now accurately reflects the latest Romanian VAT regulations and ensures proper fiscal position calculations.
Original PR description
The new 11% and 21% taxes introduced with the updated Romanian VAT law were added with this commit https://github.com/odoo/odoo/commit/2026212d0f7ffc217be3c6a2ff2abe5288c18afb , but some tax mappings were missing. This commit completes the setup by adding the required tax mappings, ensuring the new rates work correctly with fiscal positions. task-5480159 Forward-Port-Of: odoo/odoo#244602 Forward-Port-Of: odoo/odoo#243452
This update optimizes how Odoo generates reports by grouping related database queries. Previously, each report filter required a separate SQL query, which was slow. Now, multiple filters targeting the same data are combined into a single query, significantly speeding up report generation times – specifically, the Generic Balance Sheet now runs in 36 seconds instead of 1 minute 35 seconds.
Original PR description
Before this commit, the 'domain' engine was never batched: one expression to evaluate caused one SQL query to be run just for it. With this commit, we group domains that could be evaluated together. Essentially, when we have domains targetting the same many2one field of account.move.line (typically account_id, with conditions like 'account_id.code' or 'account_id.account_type'), we run only one SQL query for all of them, targetting all the move lines according to the report filters. Then, we iterate on its result for each domain to evaluate. When iterating over the results, we filter the ones we keep by searching separately on each traversing model (in our example, account.account), to isolate the ones that are actually targetted by each expression. Tested on our prod. With this, opening the Generic Balance Sheet goes from 1min 35s to 36s. opw-5130725 Forward-Port-Of: odoo/enterprise#101725
1 change
Enhancements to existing features
This update optimizes how Odoo reports process data, specifically when filtering by related account fields. By grouping similar domain searches, the system now runs fewer database queries, leading to faster report generation. This change reduces the time it takes to generate reports like the Generic Balance Sheet.
Original PR description
Before this commit, the 'domain' engine was never batched: one expression to evaluate caused one SQL query to be run just for it. With this commit, we group domains that could be evaluated together. Essentially, when we have domains targetting the same many2one field of account.move.line (typically account_id, with conditions like 'account_id.code' or 'account_id.account_type'), we run only one SQL query for all of them, targetting all the move lines according to the report filters. Then, we iterate on its result for each domain to evaluate. When iterating over the results, we filter the ones we keep by searching separately on each traversing model (in our example, account.account), to isolate the ones that are actually targetted by each expression. Tested on our prod. With this, opening the Generic Balance Sheet goes from 1min 35s to 36s. opw-5130725 Forward-Port-Of: odoo/enterprise#101725
10 changes
Enhancements to existing features
This update enhances the flexibility of website design within Odoo by introducing a new system for modifying shape groups. Plugins can now directly adjust these groups, allowing for more dynamic and customizable website layouts. This change improves the ability to tailor website designs to specific business needs.
Original PR description
This commit defines `image_shape_groups_providers` and `background_shape_groups_providers` as new plugin resources. These resources return functions that receive the current shape groups, allowing plugins to mutate them directly or return groups to be merged into the final configuration. Forward-Port-Of: odoo/odoo#244589 Forward-Port-Of: odoo/odoo#243121
This update removes problematic native HTML `<select>` elements from the o-spreadsheet module, addressing inconsistencies in appearance and functionality across different browsers and operating systems. This change ensures a more uniform and reliable user experience within the spreadsheet application.
Original PR description
### [IMP] *spreadsheet*: stop using native HTML `<select>` The native `<select>` inputs have multiple issues: - Since their dropdown is rendered by the OS/browser, we have no control over its style and it can look wildly different to the rest of our UI. - We also cannot control its size, which can make it even uglier. - And on some browsers/OS, clicking on a <select> doesn't even trigger a click event(!?), which breaks our onClick external listeners. We decided to remove all of the native <select> inputs in o-spreadsheet. This commit adapts the enterprise tests accordingly. Task: [5213725](https://www.odoo.com/web#id=5213725&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
This update introduces a new panel within polls that displays who has voted for each option. This allows users to gain a better understanding of poll participation and trends, improving decision-making based on voting data. It enhances the poll experience by providing valuable insights.
Original PR description
Like for reactions, its interresting to be able to see who votes for which option during a poll. This PR introduces a panel in order to show it. task-5207317 <img width="500" alt="image" src="https://github.com/user-attachments/assets/8c15053b-9520-4603-8099-26521d09efdb" /> <img width="403" height="572" alt="image" src="https://github.com/user-attachments/assets/e1f0ebe3-97f9-488c-a735-825dd0ff6494" />
This update allows us to manage properties for all applicants, not just those linked to a specific job. Previously, applicants without a job were unmanageable. Now, properties are defined at the company level, streamlining recruitment processes and providing a more complete view of potential candidates.
Original PR description
Before this PR it was not possible to assign or manage properties for Talents or Applicants who were not linked to any specific Job Position. After this PR the properties are defined based on the company , allowing properties to be managed at the company level and used for applicants without job_id. Task-5212981
This update allows users to select multiple values when configuring visibility rules for website forms, specifically with 'Contains' or 'Doesn't Contain' comparators. Previously, these rules only supported single value selections, limiting flexibility. This change improves the user experience and ensures visibility rules align with the underlying multi-value logic of fields like select, checkbox, and radio.
Original PR description
Steps to reproduce: 1. Go to Website -> Edit Mode. 2. Drag and drop a "Contact Us" form. 3. Add two fields: - selection field (e.g. "Author") - text field. 4. Edit the text field's visibility and select comparator "Contains" or "Doesn't Contain". 5. Try selecting multiple values (e.g. "Mitchell Admin" and "Marc Demo"). 6. Only one value can be selected, behaving like equality checks. Before this commit, visibility rules using the "Contains" or "Doesn't Contain" comparator behaved like equality checks. Users were unable to select multiple values when configuring visibility conditions, even when the dependency field supported multi-value logic (select, checkbox, radio). This commit adds support for choosing multiple values when the comparator is "Contains" or "Doesn't Contain". Visibility now evaluates correctly for dependency fields of type select, checkbox or radio. task-4203938
This update enhances the user experience of the signature thank you dialog by modernizing its design and improving readability. The changes include a simplified layout, reduced button sizes, and clearer date formatting, resulting in a more professional and user-friendly experience for customers.
Original PR description
This task improves the user experience in the signature thank you dialog by modernizing its layout, reducing button sizes, truncating long labels, and formatting dates in a more readable way. task-5408501
This update improves website performance by automatically adjusting image sizes based on screen width using 'srcset' support. This reduces loading times, lowers data consumption on mobile devices, and optimizes image delivery for a better user experience. It also ensures proper deletion of image variants when attachments are removed.
Original PR description
*: test_website_modules, web, website_sale, website Currently the `/web/image` and t-field images only have one selectable size whatever the device, which can lead to lower performance and waste of…
*: test_website_modules, web, website_sale, website Currently the `/web/image` and t-field images only have one selectable size whatever the device, which can lead to lower performance and waste of ressources. This PR adds srcset support for the images in the website, so the browser can choose the best size for the screen. Now, if the screen width is reduced, the page can load a smaller sized image to reduce the loading time. This can help increase the performances and lower the data consumption on mid-range and lowcost smartphones. For `/web/image` images, we are generating new images at these sizes: 600, 750, 900, 1080 and 1280 These sizes are optimized so it can fit most phones on the market, while reducing the number of images we have to generate and store. The maximum size being the one selected by the user. To further reduce the number of images, for a size to be generated, it needs to be at least 15% smaller than the original image. For t-field images, we are using the already generated images image_128, image_256 ... image_1920, the maximum size being the size of the `preview_image`. task-4563867
This update simplifies the process of generating consolidated invoices from point-of-sale orders. Previously, invalid orders (like those already invoiced) would halt the entire process. Now, any problematic orders are automatically ignored, allowing for more efficient bulk invoice generation for valid orders.
Original PR description
When trying to create a consolidated invoice in the POS from multiple orders, if any of them would not be valid (i.e. invoice already generated, or order still in draft), then Odoo would throw an error and not do anything. Now the orders for which invoices can't be generated will just be ignored, but for the rest of the orders the invoices will be generated as usual. This should make it easier to bulk select and generate invoices only where necessary. Task-[5491082](https://www.odoo.com/odoo/project/1737/tasks/5491082) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243851
This update incorporates new accounting entries for Mexican tax regulations (l10n_mx) and makes adjustments to expense reporting within the HR module. These changes improve compliance with local tax laws and streamline the process for managing employee expenses.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request updates the o_spreadsheet library, which is used for generating spreadsheets within Odoo. It includes bug fixes, performance improvements, and new features related to exporting data, handling cell formatting, and improving the overall spreadsheet functionality. These changes enhance data accuracy and usability for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/fa080c2649 [REL] 19.2.0-alpha.4 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/fa080c2649 [REL] 19.2.0-alpha.4 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/a8558210e1 [IMP] xlsx: export clip [Task: 5368130](https://www.odoo.com/odoo/2328/tasks/5368130) https://github.com/odoo/o-spreadsheet/commit/552671f064 [IMP] export: export align left when the cell content is a number; [Task: 5368130](https://www.odoo.com/odoo/2328/tasks/5368130) https://github.com/odoo/o-spreadsheet/commit/c7dd859e47 [FIX] range: add result changeType [Task: 5095364](https://www.odoo.com/odoo/2328/tasks/5095364) https://github.com/odoo/o-spreadsheet/commit/a13c409795 [FIX] range: adapt string XC on sheet rename [Task: 5095364](https://www.odoo.com/odoo/2328/tasks/5095364) https://github.com/odoo/o-spreadsheet/commit/dc2d50df94 [FIX] range: rename parameter [Task: 5095364](https://www.odoo.com/odoo/2328/tasks/5095364) https://github.com/odoo/o-spreadsheet/commit/02db1afd89 [FIX] range: add range to NONE [Task: 5095364](https://www.odoo.com/odoo/2328/tasks/5095364) https://github.com/odoo/o-spreadsheet/commit/21d978489f [PERF] evaluation: fast predicate path for empty strings [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/adc4472786 [FIX] Actions: ensure the sequence is applied on action children [Task: 5452669](https://www.odoo.com/odoo/2328/tasks/5452669) https://github.com/odoo/o-spreadsheet/commit/8a81ade707 [FIX] helpers: export chart check type from runtime config [Task: 5446988](https://www.odoo.com/odoo/2328/tasks/5446988) https://github.com/odoo/o-spreadsheet/commit/fe74ceacef [IMP] components: remove native `<select>` inputs [Task: 5213725](https://www.odoo.com/odoo/2328/tasks/5213725) https://github.com/odoo/o-spreadsheet/commit/bc31a7a7cf [PERF] evaluation: don't spread single element matrix [Task: 5491138](https://www.odoo.com/odoo/2328/tasks/5491138) https://github.com/odoo/o-spreadsheet/commit/497936b7e2 [FIX] evaluation: remove spread relation [Task: 5491138](https://www.odoo.com/odoo/2328/tasks/5491138) https://github.com/odoo/o-spreadsheet/commit/56ce121432 [IMP] actions: align dropdown flow with other data validations [Task: 5423990](https://www.odoo.com/odoo/2328/tasks/5423990) https://github.com/odoo/o-spreadsheet/commit/5781c0b632 [FIX] composer: prevent autocomplete from closing on grid icon drag [Task: 5392156](https://www.odoo.com/odoo/2328/tasks/5392156) https://github.com/odoo/o-spreadsheet/commit/9ce94f278a [IMP] charts: showValues is now exported in Excel [Task: 5213598](https://www.odoo.com/odoo/2328/tasks/5213598) https://github.com/odoo/o-spreadsheet/commit/817c020291 [FIX] vectorization: fix error message on size mismatch [Task: 5331324](https://www.odoo.com/odoo/2328/tasks/5331324) https://github.com/odoo/o-spreadsheet/commit/3d9111f2ed [FIX] chart: ignore NoChanges in gauge/scorecard side panel errors [Task: 5478288](https://www.odoo.com/odoo/2328/tasks/5478288) https://github.com/odoo/o-spreadsheet/commit/ea662873a1 [IMP] formatting: unify the formatting with odoo chart views [Task: 5435022](https://www.odoo.com/odoo/2328/tasks/5435022) https://github.com/odoo/o-spreadsheet/commit/fe0dca8520 [IMP] side panel: remove pin [Task: 5447038](https://www.odoo.com/odoo/2328/tasks/5447038) https://github.com/odoo/o-spreadsheet/commit/5ceba0b4aa [REF] cell: getCells returns an array [Task: 5491227](https://www.odoo.com/odoo/2328/tasks/5491227) https://github.com/odoo/o-spreadsheet/commit/2ceff21c29 [PERF] cells: numeric cell id [Task: 5491227](https://www.odoo.com/odoo/2328/tasks/5491227) https://github.com/odoo/o-spreadsheet/commit/889304181e [IMP] style: rotation xlsx export [Task: 5400633](https://www.odoo.com/odoo/2328/tasks/5400633) https://github.com/odoo/o-spreadsheet/commit/e966e74b81 [FIX] style: rotation fix for centered text [Task: 5400633](https://www.odoo.com/odoo/2328/tasks/5400633) https://github.com/odoo/o-spreadsheet/commit/66249da831 [IMP] style: rotation reduce rotation angle precision [Task: 5400633](https://www.odoo.com/odoo/2328/tasks/5400633) https://github.com/odoo/o-spreadsheet/commit/3299483fc9 [FIX] header_size: wrong row size from wrapped number [Task: 4878338](https://www.odoo.com/odoo/2328/tasks/4878338) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>