Daily updates from Odoo
Friday, June 27, 2025
27 changes
7 changes
Resolved issues and error corrections
This fix prevents the website builder from failing when a site has no social media links configured. Users can now edit social media snippets normally on new or minimal databases, avoiding an error that interrupted page editing.
Original PR description
Steps to reproduce: - On a database without demo data (and no social links set) - Open website builder in debug - Click on a social media snippet (by default there is one in footer) - Traceback: Validation of props failed because of a `false` value for input text The implementation for the options of snippet `s_social_media` (made in the website builder refactor) did not correctly handle the case where there is no record and the server returns the `false` value instead of a string. Website refactor: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
The website editor now safely handles rapid repeated clicks on the remove slide button. This prevents a page crash and keeps carousel editing stable for users.
Original PR description
__Current behavior before commit:__ When pressing on Remove slide button twice rapidly the page crashes because it tries to access the closest `.carousel` element on a slide that has already been removed from the DOM. __Description of the fix:__ - Prevent calling `removeSlide` if the slide has already been removed from the DOM. - Add a test to check the remove slide behaviour.
This fix updates the live chat test mock server so it includes the same member type information used by live chat features. This helps prevent test gaps and reduces the risk of live chat behavior breaking when features depend on member roles or types.
Original PR description
Mock server was missing `livechat_member_type`, which can lead to issues when JS features are `livechat_member_type` aware.
This fix stabilizes an automated test for the image cropping feature in the HTML editor that was failing unpredictably. It helps keep quality checks reliable so future changes can be validated with fewer false failures.
Original PR description
After merging the commit [1] the test case is non-deterministically gets failed on runbot. This commit aims to fix the test case. [1]: https://github.com/odoo/odoo/commit/7ab5d4df393e9adf6736c60945197c174149be6a --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Several screens and documents now correctly translate user-visible wording that was previously left in the source language. This improves localization consistency across payment, sales, timesheet, recruitment, loyalty, and settings experiences for users working in other languages.
Original PR description
Content passed to a t-value directive is not translated. This commit redefines as text nodes human-readable content that was incorrectly placed in a t-value, so that it is now translated. *: pos_online_payment, sale_timesheet, web, website_hr_recruitment, website_payment, website_sale_loyalty Enterprise: https://github.com/odoo/enterprise/pull/88666
Spreadsheet dashboard filters now show selected text and boolean values in a more readable way. This makes dashboards easier to understand by displaying choices like “text1 or text2” and “Is set or Is not set” instead of raw comma-separated values.
Original PR description
… boolean filters Steps to reproduce: 1. Configure a spreadsheet dashboard with a text filter and a boolean filter. 2. Set these filters to at least two values. => Boolean filter is displayed as `true,false` instead of `Is set or Is not set` => Text filter is displayed as `text1,text2` instead of `text1 or text2` To ease the testing, the function `getFacetFor` has been moved to a helper (it's already the case in master). This commit also adds a test for the others filters (relation and date). Task: 4900910 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 fixes untranslated wording in the project budget area by placing user-facing text where the translation system can detect it. Business users working in other languages should now see the affected labels or messages translated correctly, improving consistency for multilingual teams.
Original PR description
Content passed to a t-value directive is not translated. This commit redefines as text nodes human-readable content that was incorrectly placed in a t-value, so that it is now translated. Community: https://github.com/odoo/odoo/pull/216136
7 changes
Resolved issues and error corrections
This fixes a small setup issue in the Austrian point-of-sale module by correcting a database script typo. It helps ensure automated checks and module installation work reliably without syntax-related failures.
Original PR description
Steps to reproduce: 1. install `l10n_at_pos` module 2. run `test_10_neutralize` test adding missing commas in the `neutralize.sql` file to ensure proper SQL syntax. Error [link](https://runbot.odoo.com/odoo/error/181676) build_error-181676
The update fixes a return review workflow issue so only newly created returns can be automatically marked as reviewed. This prevents already submitted returns from being moved backward in the process, helping preserve the correct approval status.
Original PR description
When we are trying to auto review returns, we are not checking if the return is a new return and it was possible for checks in the submitted state to be set back to the reviewed state. task-4900867
Bank statement matching now requires a longer reference before treating it as an exact match. This helps reduce incorrect automatic matches during reconciliation and improves accounting accuracy.
Original PR description
Before, aml.ref had to be at least 5char length to be a full match candidate. But it seems 5 is not enough and leads to unwanted matches, so let's increase the limit to 7. no-task
Selecting all documents now correctly focuses the first document when none was previously focused. This keeps the document details panel aligned with the current selection and avoids confusion for users working in list or kanban views.
Original PR description
Before this commit, when selecting all (ctrl-a) in kanban or list views the first document is shown in the detail panel but the focus is not set on it. This commit fix this issue, when no document is focused and we select all the focus is set on the first document, if a document is already selected when selecting all the focus will still be that document. Task-4813624
This fixes an issue where the tax returns page could fail for European companies when an optional VAT validation component was not installed. Users in affected localizations, such as Estonia, can now open returns without encountering a missing setting error.
Original PR description
the field vat_check_vies on res.company is added in the base_vat module, which is not a required dependency for account_reports. the function _generic_vies_vat_check might therefore result in an error with a missing field. runbot issue: 227603
Closing an AI agent chat no longer triggers an error when the chat session reference is missing. The fix also makes chat cleanup work consistently whether users close the chat from the window or the chat bubble.
Original PR description
Before when closing agent chat an exception occurred because the `channel_id` was undefined. This happens because when doing an await in the thread is set to `undefined`. This commit introduces a few…
Before when closing agent chat an exception occurred because the `channel_id` was undefined. This happens because when doing an await in the thread is set to `undefined`. This commit introduces a few modifications to the behaviour of the chat with the agent: Firstly, this commit moves the code calling the ORM to delete the chat history when closing the chat window to the `chat_window_model_patch.js`. This allows for the behaviour to also be applied when closing the chat from the chat bubble. Additionally, the function has been modified to ensure that the thread is defined when the ORM call is made. The ORM call to close the agent chat was simplified to use the already existing `close_ai_chat` from the `discuss.channel` override. The method now uses a new `channel_type` "ai_chat", to identify channels which contain an `ai.agent`. Along with the new `channel_type`, a new function `_get_or_create_ai_chat` was introduced to properly create the "ai_chat" channels. task-4796898
The spreadsheet filter side panel now uses less space for field labels, leaving more room for matching fields. This makes the panel easier to read and use when configuring spreadsheet filters.
Original PR description
reduce the size of the label that took nearly half the width of the sidepanel.
3 changes
Resolved issues and error corrections
This change removes a previously added date picker customization for website rentals because the related main component update was not included. It keeps the rental booking interface aligned with the supported design approach and avoids unintended frontend behavior.
Original PR description
This reverts commit[1]. The goal of Commit[1] was to introduce more flexibility to the datetime picker by using props to handle the design of the component within the frontend, to preserve the design introduced with the revamp of the component within the backend while fine-tuning its design within the frontend. During the review process, it was decided that changes would be applied on the main component directly instead of monkey patching the component, which invalidated the need of props. As the counterpart was not merged, this change shouldn't have landed as well. [1]: https://github.com/odoo/enterprise/commit/e650409bd8b027074f262dfdfc407d8d71bb8e36
This fixes a misleading or incorrect label used when grouping subscription records. It helps users interpret grouped subscription views more easily and reduces confusion in day-to-day navigation.
The Belgian payroll report for double holiday pay now uses the correct label instead of referring to the 13th month. This makes the report name clearer and helps avoid confusion for payroll teams and employees.
Original PR description
Originally, the name structure for double holiday follows "13th Month -[Legal Name] -[year]". It has been renamed to "Double Holiday Pay - [Legal Name] -[year]" .
10 changes
Resolved issues and error corrections
A typo in a Belgian tax data value was corrected from an invalid-looking decimal format to the intended value. This helps ensure Belgian localization tax setup data is accurate and avoids confusion or potential configuration issues.
Exports now use the correct translated display value for selection fields whose options are generated by a function. This prevents users from receiving raw or incorrect values in exported files, improving data accuracy for multilingual exports.
Original PR description
Whenever selection field have the any function in selection value at that time while export it not export associated language ``value``. For Fixing this, according to [this](https://github.com/odoo/odoo/blob/a7a5470596b1d08311d87931c0ef24217087f729/odoo/fields.py#L2960) adding this condition to get the correct values. opw-4882812 upg-2985436 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale receipts now show the cashier who completed the payment, even if the cashier was changed during checkout. This ensures receipts accurately reflect who served the customer and avoids confusion in cashier tracking.
Original PR description
**Problem:** When cashier A is assigned to an order, then changed during the payment screen process to cashier B, the receipt will display Served by cashier A. It should be Served by cashier B as this is the one that closed the order. This used to work until 18.0. **Steps to reproduce:** - Add some employees to your PoS, using pos_hr - Select one of them, then change to another one during the payment screen, before paying - Pay for it, the receipt screen still displays the first cashier **Why the fix:** The receipt should first display the current cashier, not the order's cashier. It was done the other way around before this commit. We now first display the session's cashier, then if not available we display the order's cashier. opw-4868038
Product units of measure are now hidden across inventory, manufacturing, sales, purchasing, and point of sale screens when the Units of Measure feature is turned off. This reduces unnecessary information and avoids confusion for users who do not use multiple units.
Original PR description
**Description of the issue/feature this PR addresses:** Should not show product uom when the feature "Units of Measure" is not activated  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where empty text or chart fields in spreadsheet list formulas could appear as a false value instead of being blank. Business users will see cleaner and more accurate spreadsheet reports when list data contains empty fields.
Original PR description
Following the fix in d927a7b6, we broke the default behaviour of empty text/chart fields. While the server returns the value `false` when they're empty, we want to display an empty string in the `ODOO.LIST` formulas. Task-4897690 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 fix prevents an unnecessary warning from interrupting setup or upgrades when purchase requisitions look for a receiving operation type that is inactive. It helps companies complete module installation or database upgrades more reliably without being incorrectly redirected to create a warehouse.
Original PR description
Fixed an issue in ```_default_picking_type_id``` where a missing picking type triggered a ```RedirectWarning``` due to an incorrect domain in the ```search``` Hence disabled `active_test` context to…
Fixed an issue in ```_default_picking_type_id``` where a missing picking type triggered a ```RedirectWarning``` due to an incorrect domain in the ```search``` Hence disabled `active_test` context to ensure proper fallback behavior.
```sql
Traceback (most recent call last):
File "/home/odoo/src/odoo/18.0/odoo/service/server.py", line 1328, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-13>", line 2, in new
File "/home/odoo/src/odoo/18.0/odoo/tools/func.py", line 97, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/18.0/odoo/modules/registry.py", line 129, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 480, in load_modules
processed_modules += load_marked_modules(env, graph,
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 365, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 206, in load_module_graph
registry.init_models(env.cr, model_names, {'module': package.name}, new_install)
File "/home/odoo/src/odoo/18.0/odoo/modules/registry.py", line 604, in init_models
model._auto_init()
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 3468, in _auto_init
new = field.update_db(self, columns)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 3215, in update_db
return super(Many2one, self).update_db(model, columns)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1090, in update_db
self.update_db_notnull(model, column)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1142, in update_db_notnull
model._init_column(self.name)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 3384, in _init_column
value = field.default(self)
File "/home/odoo/src/odoo/18.0/addons/purchase_requisition_stock/models/purchase_requisition.py", line 13, in _default_picking_type_id
self.env['stock.warehouse']._warehouse_redirect_warning()
File "/home/odoo/src/odoo/18.0/addons/stock/models/stock_warehouse.py", line 172, in _warehouse_redirect_warning
raise RedirectWarning(msg, warehouse_action.id, _('Go to Warehouses'))
odoo.exceptions.RedirectWarning: ('Cree un almacén para la empresa Navieras Internacionales, S.A. (Navinter).', 464, 'Ir a los almacenes', None)
```
```sql
depr_2982092=> select id,name,active,company_id,warehouse_id from stock_picking_type where code = 'incoming' and active = 'f' order by company_id;
id | name | active | company_id | warehouse_id
----+----------------------------------------------------------------------------------------------------+--------+------------+--------------
6 | {"en_US": "Devoluciones"} | f | 1 | 1
67 | {"en_US": "Recepciones", "es_GT": "Recepciones"} | f | 1 | 12
72 | {"en_US": "Devoluciones", "es_GT": "Devoluciones"} | f | 1 | 12
1 | {"de_DE": "Anlieferungen", "en_US": "Recepciones", "es_GT": "Recepciones", "nl_NL": "Ontvangsten"} | f | 1 | 1
(4 rows)
```
OPW - [4869238](https://www.odoo.com/odoo/project/70/tasks/4869238?debug=1)
UPG - [2982092](https://upgrade.odoo.com/odoo/upgrade.request/2982092)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prBranch users who have access to a parent company can now open the Profit and Loss report when journals use a different company currency. The change prevents an unnecessary access error while preserving normal permission limits.
Original PR description
This commit is the counterpart of a commit in community to add a test. ### Steps to reproduce: - Create a branch to a company - Create a journal on the parent company with a different currency from the company - Create a user that can access both the parent company and the branch, but can't change the settings of Odoo - Log as this user, select only the branch as current company - Accounting > Reporting > Profit & Loss - Access Error ### Cause: `_compute_display_name` on the journal reads `journal.company_id.currency_id` without sudo. The current user cannot read on `company_id` because of the rule `res_company_rule_employee`. ### Solution: Use `sudo()` to read the currency of the company. opw-4847500 Linked PR: https://github.com/odoo/odoo/pull/215455
Spreadsheet dashboards now treat creation date filters as date-and-time values, so results correctly reflect each user's timezone. This prevents dashboard filters from including or excluding the wrong records when dates are used.
Original PR description
The generated domain is wrong when filtering on the date. It doesn't account for the user timezone because the field matching is given as a "date" field instead of being a "datetime".
The generated domain looks like `[("create_date", ">=", "2025-06-27")]` instead of `[("create_date", ">=", "2025-06-27 21:59:59")]`
I'm fixing this in 18.0 because this fix won't affect existing databases (without updating the modules). The fix would be useless and I don't want to go though the pain of forward-ports for nothing. New databases are created in 18.0 every day (latest LTS)
Task: 4903362Creating a spreadsheet in a Documents folder no longer fails when one of the folder's internal editor members has been archived. This prevents unnecessary validation errors and keeps document workflows working even when former employees remain listed on folders.
Original PR description
Reproduce: 1. Create a new folder 2. Set a specific internal user as editor member on it 3. Archive that user 4. Try creating a spreadsheet in that folder -> ValidationError The check wrongly considered archived internal users as portal users. Task-4878693
The Colombian e-invoicing mandate module now explicitly includes a required dependency, preventing setup or usage errors when that related component is not present. This improves reliability for new installations, though existing databases are not automatically changed.
Original PR description
l10n_co_edi_mandate depends on l10n_co_dian, however this dependency wasn't set directly, relying on l10n_co_dian being auto-installed with l10n_co_edi which is a direct dependency. As such, errors could occur if user manually uninstalls l10n_co_dian. This fix addresses the issue for new installations, however existing databases won't be affected. See odoo/enterprise#77673