Friday, June 19, 2026
13 changes · saas-19.2
New functionality added to Odoo
This update incorporates support for the states of Tajikistan, Turkmenistan, Kyrgyzstan, Armenia, and Kazakhstan, aligning with international ISO 3166-2 standards. This change improves data accuracy and consistency by displaying state names instead of codes within address fields. This update is considered an improvement for our global user base.
Original PR description
Added the states of Tajikistan, Turkmenistan, Kyrgyzstan, Armenian, and Kazakhstan to align with official ISO 3166-2 standards. In addition change their address format of the country to show state name instead of state code. task-6237707 task-6237595 task-6237473 task-6237440 task-6237284 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#269091
Resolved issues and error corrections
This update fixes an error in the Luxembourg localization settings, ensuring the correct stock valuation account (301 Inventories of raw materials) is used instead of an expense account (60761 Merchandise). This ensures accurate financial reporting for Luxembourg businesses using Odoo.
Original PR description
**Problem:** Valuation account for luxembourg is currently 60761 Merchandise which is incorrect because it's an expense account. We should rather use a current asset account like 301 Inventories of raw materials **Steps to reproduce on a fresh db:** - create a new db with modules stock_account and accountant (without demo data) - On the 'fiscal localization setting' set the package as 'Luxembourg' and save - ativate the automatic accounting setting **Current Behavior:** The 'stock valuation account' appearing below the automatic accounting setting is : 60761 Merchandise **Expected behaviour:** It should be 301 Inventories of raw materials Forward-Port-Of: odoo/odoo#270048 Forward-Port-Of: odoo/odoo#269469
This update resolves an issue that prevented website upgrades when using custom themes. Specifically, the system failed to find a necessary theme file, causing an error during the upgrade process. This fix ensures that website upgrades work correctly with custom themes.
Original PR description
After commit 3cbaad4, the theme manifest is now looked up to find addon snippets for the configurator. However, during an upgrade, if a website is configured with a third-party/custom theme whose…
After commit 3cbaad4,
the theme manifest is now looked up to find addon snippets for the configurator. However, during an upgrade, if a website is configured with a third-party/custom theme whose code is not present in the addons path, `Manifest.for_addon()` returns `None` and `_generate_primary_snippet_templates` raises an `AttributeError`:
```py
2026-06-16 03:27:47,155 24126 INFO db_4367932 odoo.modules.loading: loading website/views/new_page_template_templates.xml
2026-06-16 03:27:47,803 24126 WARNING db_4367932 odoo.modules.module: module theme_prime: manifest not found
2026-06-16 03:27:47,845 24126 WARNING db_4367932 odoo.modules.loading: Transient module states were reset
2026-06-16 03:27:47,846 24126 ERROR db_4367932 odoo.registry: Failed to load registry
2026-06-16 03:27:47,846 24126 CRITICAL db_4367932 odoo.service.server: Failed to initialize database `db_4367932`.
Traceback (most recent call last):
File "/home/odoo/src/odoo/19.0/odoo/tools/convert.py", line 605, in _tag_root
f(rec)
File "/home/odoo/src/odoo/19.0/odoo/tools/convert.py", line 273, in _tag_function
_eval_xml(self, rec, env)
File "/home/odoo/src/odoo/19.0/odoo/tools/convert.py", line 197, in _eval_xml
result = method(*args, **kwargs)
File "/home/odoo/src/odoo/19.0/addons/website/models/ir_module_module.py", line 704, in _generate_primary_snippet_templates
theme_addons = theme_manifest.get('configurator_snippets_addons', {})
AttributeError: 'NoneType' object has no attribute 'get'
```
We also get the missing manifest logs right before the error.
TBG-2781
[`_generate_primary_snippet_templates`]: https://github.com/odoo/odoo/blob/19.0/addons/website/models/ir_module_module.py#L700
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#270217This change reverses a recent update that prevented the blog footer from being editable within the Odoo website builder. The previous change was intended to improve builder stability, but it inadvertently restricted access to a key element. This reversion restores the original functionality, allowing users to modify the blog footer as intended.
Original PR description
This reverts commit[1] which introduced not_activable_element_selectors resource in html_builder and used it to make the blog footer not selectable in the builder. [1]:https://github.com/odoo/odoo/commit/87d0c49a6 Forward-Port-Of: odoo/odoo#268141 Forward-Port-Of: odoo/odoo#268024
This update fixes alignment issues within the Timesheet Assistant, specifically in the 'By Project' and 'Chronological' views. The changes ensure that time entries and project descriptions display correctly, even with lengthy descriptions, and add a margin to the 'No time recorded' section for better visual clarity.
Original PR description
# [FIX] timesheet_grid: alignment issues in assistant This commit resolves the following alignment issues in the Timesheet Assistant: - View "By Project", the time wraps if description too long - View "Chronological", the time wraps if descriptions too long and project / task is not truncated - No timesheet recorded does not have a margin start # [FIX] sale_timesheet_enterprise: alignment issues in assistant This commit adds margin start on the "No (non-)billable time recorded" information. task-6264756 Forward-Port-Of: odoo/enterprise#120608
This update resolves an issue where focusing on the end date within a daterange widget incorrectly modified the start date. The fix ensures the correct date field is updated by accurately identifying the focused input element, improving data consistency and accuracy.
Original PR description
When a daterange widget is used (e.g., `deferred_start_date` coupled with `deferred_end_date`), focusing on the end date input was incorrectly modifying the start date field. This occurred because the `focusin` event was resolving the field name from the parent widget rather than the specific input focused. This commit updates `onFocusFieldWidget` and `getFullFieldName` to accept and evaluate the specific `event.target`. For `o_field_daterange` widgets, it now extracts the correct field name from the target's `data-field` attribute, ensuring the correct date field is updated. opw-6250048 Forward-Port-Of: odoo/enterprise#121033 Forward-Port-Of: odoo/enterprise#120684
This update fixes an error in the executive summary report that was incorrectly calculating the period length. Previously, it was measuring the gap between dates instead of the total number of days, leading to inaccurate metrics like Average Debtor Days. This change ensures the report accurately reflects the period length, improving the reliability of key business insights.
Original PR description
`_report_custom_engine_executive_summary_ndays` returned `date_to - date_from`, which is the gap between the two dates, not the count of days they span. For example April 2026-04-01 to 2026-04-30 will returned 29 instead of 30, making Average Debtor Days incorrect. Add +1 so the day count is inclusive of both endpoints, matching the rest of the report's date handling. opw-6215362 Forward-Port-Of: odoo/enterprise#118953
This update resolves an issue where changes to a company's country setting caused errors in Time Off management. The system now checks if there are existing Time Off records linked to a Time Off Type before allowing the company country to be modified, ensuring smoother operation.
Original PR description
When a Time Off Type is created, it inherits the country of the current company. If there are leaves or allocations created from this Time Off Type and the company's country is then changed, various…
When a Time Off Type is created, it inherits the country of the current company. If there are leaves or allocations created from this Time Off Type and the company's country is then changed, various parts of Time Off will throw access errors as the leaves and allocations are still tied to the former country. The goal of this PR is to constrain the company country from being changed unless there are no such leaves or allocations. **Steps to Reproduce on Runbot:** 1. Ensure the current company has a `country` set, e.g. "My Company (San Fransisco)" has country set to "United States". 2. Access Time Off as Mitchell Admin. 3. Create a new Time Off Type, for simplicity's sake without a need for allocation or approval, ex: "Gone Fishing". Note this Time Off Type will have the `country` set to the company country by default. 4. Take "Gone Fishing" time off. 5. Change or set blank the company's `country` value. 6. Ensure the record rules cache is flushed. 7. Try to access Time Off. opw-6206359, opw-6140496 closes #263950 Forward-Port-Of: odoo/odoo#263950
This update fixes a potential issue where vendor bills were automatically emailed to vendors by default. The change disables the 'Email' option by default for standard vendor bills, reducing the risk of sending incorrect invoices. This improves efficiency and prevents unnecessary communication.
Original PR description
Issue: By default, the "Email" option is checked in the wizard. Since this is a standard vendor bill (sent to us by the vendor), emailing it back to them is usually incorrect and can lead to accidental emails. Cause: The default sending methods for all moves fallback to the partner's preference or 'email', regardless of whether it is a customer or vendor document. Solution: Update `_get_default_sending_methods` to return an empty set for purchase documents, except in the case of self-billing (where the bill is generated on behalf of the vendor and a copy must be sent to them). This ensures the "Email" checkbox is disabled by default for standard vendor bills, preventing accidental emails, while leaving it available for manual selection if needed.
This update resolves a minor issue with the marketing automation dashboard by correcting calculations for key engagement metrics. Specifically, the KPI engagement rate and its n-1 counterpart are now accurately calculated, ensuring more reliable data reporting for marketing performance. This improves the dashboard's accuracy and provides a better view of marketing campaign effectiveness.
Original PR description
This commit fixes two issues:
- KPI engagement rate ('Mailing Statistics'!B16) should be =iferror((B7+B9)/B10),0)
- KPI engagement rate n-1 ('Mailing Statistics'!C16) should be =iferror((C7+C9)/C10),0)
Task: 5418449
Forward-Port-Of: odoo/enterprise#120962This update resolves an issue where opening the chatter for bank reconciliation statements was causing an unintended data expansion. The change prevents this unfolding process, improving the user experience and performance. This ensures a smoother and more efficient workflow for users.
Original PR description
Before this commit, open_chatter use the selectStatementLine function that will unfold the line. But we don't want the unfold when opening the chatter. task-6306311 Forward-Port-Of: odoo/enterprise#120847
This update resolves an issue preventing users with Sale access rights from inserting data into Quotation templates through the spreadsheet management feature. The change adds a setting to ensure the necessary flag is activated when the module is installed and the user has the correct permissions, improving usability.
Original PR description
Current behavior before PR: - The `can_insert_in_spreadsheet` session flag was not set by the spreadsheet_sale_management module. - Users with proper Sale access rights still could not insert into Quotation templates. Desired behavior after PR is merged: - Added logic to set `can_insert_in_spreadsheet` when the module is installed and the user has the required access rights. Task: [5960761](https://www.odoo.com/odoo/project/2328/tasks/5960761) Forward-Port-Of: odoo/enterprise#120903 Forward-Port-Of: odoo/enterprise#108674
This update enhances the visual clarity of the account reconciliation search dialog. The commit removes text truncation and adjusts the layout to ensure dates and balances are prominently displayed, providing a more user-friendly experience. This improves the readability of key financial data.
Original PR description
This commit will remove the text-truncate from the reference so that we have it full. Also removing the align item so that the date and balance are on top. no task id Forward-Port-Of: odoo/enterprise#120963