Daily updates from Odoo
Thursday, October 2, 2025
101 changes
21 changes
Resolved issues and error corrections
The recruitment talent record’s open applications button now shows the same set of related applications as the displayed application count. This prevents users from seeing a mismatch between the number shown and the applications opened, making candidate follow-up more reliable.
Original PR description
`_get_similar_applicants_domain` used in `action_open_applications` did not return the same domain used in `_compute_application_count`. Fixed by complementing the domain within `_get_similar_applicants_domain` used in the action to include applications with the same associated `pool_applicant_id` as the current applicant/talent. Task-5092128
This fix prevents an error from appearing when users edit the refusal email for a job applicant. The unavailable option to save that edited message as a template is hidden in this version, allowing the refusal process to continue smoothly.
Original PR description
Steps to reproduce: - open any applicant in recruitment app - click on refuse button - enable send email toggle key - edit the message - try to save the template Issue: - traceback pop ups and not able to save the template Reason: - The method 'open_template_creation_wizard' is missing, causing the error when trying to save the template. This method was not implemented. Solution: - Remove the 'save the template' feature for this version by adding the context. It require two fields which are not present in the current model, thus avoiding the error. task-4948736
The employee payroll form once again shows the Patrena code field needed for Belgian payroll processing. Related payroll provider codes for UCM and SD Worx were also rearranged so they appear more clearly, two per row, making the form easier to use.
Original PR description
Restored the Patrena code field and arranges the other related codes (UCM & SD Worx) so that they are displayed two per row. task-5052003
Fixes the Belgian payroll working schedule change flow so users are taken back to the employee form with the new version selected after validation. This avoids landing on an outdated version list and makes it easier for HR users to continue their work in the right place.
Original PR description
…dule change The working schedule change wizard was redirecting to a list of version when validating. This was the old behavior with the contract. Instead, redirect to the employee form view with the new version selected. task-5126204
Users can now open Time Off from an employee profile without encountering a Missing Record error. This ensures the Time Off page uses the correct employee context, improving reliability for HR self-service workflows.
Original PR description
**Steps to reproduce (without demo data):** - Install hr_holidays - Go to "My Profile" - Open "Time Off" **Issue:** Accessing Time Off from a user profile triggers a `Missing Record` error. **Cause:** The system was passing the user’s active_id to the employee record incorrectly. **Fix:** Now, when the context's active_model is 'hr.employee', the correct active_id is applied. **Commit issue:**https://github.com/odoo/odoo/pull/225839 Forward-Port-Of: odoo/odoo#229497
This fixes the favorite star in spreadsheet dashboards so it immediately shows the correct selected or unselected state after a tap on mobile devices. The change removes confusing visual feedback and makes the mobile experience consistent with the rest of Odoo.
Original PR description
The star icon on mobile would have a strange behaviour. After clicking it, the star would not change between filler/not filled until clicking elsewhere. It turns out that on mobile, after a click the hover rule is applied. And our hover rule would modify the icon to be the opposite of what it should be. This commit changes the CSS to use the same css as `BooleanFavoriteField` to stay consistent with the rest of Odoo. Task: [5092945](https://www.odoo.com/odoo/2328/tasks/5092945) 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 Forward-Port-Of: odoo/odoo#227663
The Fleet app’s vehicle kanban view now opens the contracts button correctly. This helps users access vehicle contract information from the dashboard without confusion or extra navigation.
Original PR description
Fix contracts button in vehicle kanban Task-5109335 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228341
This update prevents Spanish tax report setup and automated checks from failing when date information is not yet available. The report logic now handles incomplete data safely while keeping the usual validation in place when dates are provided.
Original PR description
The `_get_mod_period_and_year` method assumed that `options['date']` would always be present with `date_from` and `date_to`. However, during the automatic `TestEveryModel.test_computed_fields_without_dependencies`, this method is called on a `new()` record where no options are provided. This resulted in a `KeyError: 'date'`. We now gracefully handle missing or incomplete `options` by returning `(None, None)` instead of raising an exception. This ensures that tests and new records can be created without errors, while preserving the original validation logic when valid options are given. build_error-231511 Forward-Port-Of: odoo/enterprise#94154
This fix ensures UAE invoice PDFs display correctly when invoice lines have no taxes. It prevents column misalignment, making printed invoices clearer and more professional for customers.
Original PR description
**Steps to reproduce:** 1- Install UAE localization (l10n_ae). 2- Create an invoice without adding any taxes in the invoice lines. 3- Print the invoice → column alignment is broken. **Issue:** In UAE…
**Steps to reproduce:** 1- Install UAE localization (l10n_ae). 2- Create an invoice without adding any taxes in the invoice lines. 3- Print the invoice → column alignment is broken. **Issue:** In UAE localization, the invoice report shows misaligned columns when the tax field is empty. **Cause:** Since Odoo 18.4, the core report logic hides the tax column when no taxes are applied. However, l10n_ae does not handle this scenario properly while replacing columns, which results in broken alignment. **Solution:** Added a condition in l10n_ae to correctly handle the case when the tax field is empty, ensuring column alignment is maintained in the invoice report. **Before Fix:** <img width="777" height="326" alt="image" src="https://github.com/user-attachments/assets/1416c03a-9da5-45fe-8ade-2a9037f70812" /> **After Fix:** <img width="767" height="341" alt="image" src="https://github.com/user-attachments/assets/9d418945-45e2-409e-b00e-b4f8272ea013" /> opw-4965240 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue where the background color picker closed unexpectedly when previewing colors for table cells. This makes editing table cell colors smoother and avoids interrupting users while formatting content.
Original PR description
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if…
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if we are in a selected `td` to keep the toolbar open. However, in another fix (254efd86cd1ce871807fdc25479ebc5beeb4eab3), we removed that class during the color preview operation. Previewing a color on a `td` triggers a selection change, which runs `shouldBeVisible`. Since `o_selected_td` is not found, the toolbar closes along with the color picker. Solution: Update https://github.com/odoo-dev/odoo/commit/254efd86cd1ce871807fdc25479ebc5beeb4eab3. A better fix is to use `o_selected_td_bg_color_preview` which will undo the `box-shadow` when we preview a color. Steps to reproduce: 1. Add a table. 2. Select a cell. 3. Apply a background color. 4. Select the cell again. 5. Hover a color to preview. → The color picker dismisses once a color is hovered. opw-5066309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225827
This fix allows users to delete an employee version from the versions list without seeing an incorrect warning that the record no longer exists. It improves reliability for HR teams managing employee history and keeps the employee version workflow from being blocked.
Original PR description
Issue/Current Behavior: It is not possible to delete a version of an employee. Steps to Reproduce: 1. Create an employee. 2. Create a new version of the employee. 3. Click on the smart button of versions and delete a record from the list view. 4. It gives warning that the record doesn't exist or might be deleted. Solution: Fixed the issue by checking that the context version exists or else the empty recordset. task - 5002995 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents subscription invoice sections for combo products from being overwritten with incorrect values. It helps ensure invoices keep the right section information and avoids adding unnecessary section details.
Original PR description
This commit improve fix of PR https://github.com/odoo/enterprise/pull/90989 to avoid overriding right combo section values and avoid setting unnecessary values on the section. opw-5069278 Forward-Port-Of: odoo/enterprise#95831 Forward-Port-Of: odoo/enterprise#94776
This fixes an automated accounting test so the account merge wizard waits for the final action before closing. It helps prevent false test failures and keeps release validation more stable, with no expected change for end users.
Original PR description
The last check of the tour is always true. So it sometimes closes too early. Wait really for the last operation for the last check runbot-error-108440 Forward-Port-Of: odoo/enterprise#95991
This update adjusts internal automated tests so they no longer depend on demo or default user settings being present. It helps keep support, timesheet, payroll, and localization checks stable across environments without changing customer-facing features.
Original PR description
The community counter part makes the tests independent from `env['res.users']._default_groups()`. `helpdesk.group_helpdesk_manager` is the only group that is given to `base.default_user_group` in the master data (is that normal?), so we need to give it explicitly in the tests since we don't rely on the default user groups anymore in tests Forward-Port-Of: odoo/enterprise#92410
This fix makes internal automated tests behave consistently whether or not demo data is installed. It reduces false test failures and helps keep releases stable without changing day-to-day user functionality.
Original PR description
The tests should not be impacted by the demo data however it is currently the case. Indeed, a lot of groups are added to the default group user when installing the demo data. Instead, we only take the user group like it is the case when no demo is installed. Forward-Port-Of: odoo/odoo#223039
Live chat agents who are viewing a conversation without being added as participants can now translate messages when they are internal users. This removes an unnecessary limitation and helps agents understand and support customers more effectively during live chat monitoring.
Original PR description
Before this commit, when an agent that is not member of livechat but is peeking the conversation, the agent could not translate the message. This happens because the translation feature is limited to internal users, but this was determined based on the self member relational field. This works when the agent is a member but when not a member this was arbitrarily disabling the feature. This commit fixes the issue by looking at whether the user is internal or not, based on self persona independently on whether the agent is member or not of the conversation. Task-5111383 Forward-Port-Of: odoo/odoo#229035 Forward-Port-Of: odoo/odoo#228449
Fixes an issue that could cause the website product generator to crash when importing multiple images for a single product variant. This helps teams upload product imagery more reliably without interrupting catalog setup.
Original PR description
Fixed a typo that leads to a crash when importing multiple images for a product variant
Agents who preview WhatsApp conversations without being members can now translate messages when they are internal users. This removes an unnecessary limitation and helps support teams understand customer messages while monitoring conversations.
Original PR description
Before this commit, when an agent that is not member of whatsapp but is peeking the conversation, the agent could not translate the message. This happens because the translation feature is limited to internal users, but this was determined based on the self member relational field. This works when the agent is a member but when not a member this was arbitrarily disabling the feature. This commit fixes the issue by looking at whether the user is internal or not, based on self persona independently on whether the agent is member or not of the conversation. Task-5111383 Forward-Port-Of: odoo/enterprise#95767 Forward-Port-Of: odoo/enterprise#95474
This fixes an issue in the website editor where deleting text in a pricelist snippet could merge the description into the price. Pricelist blocks now stay properly separated, helping website editors avoid accidental layout or content errors.
Original PR description
**[FIX] website: keep pricelist blocks intact** Build the unsplittable selector from the three pricelist snippet base classes so that the HTML editor no longer splits or merges their item, price, or description elements when users delete content with Backspace. Steps to reproduce: - Drag and drop a pricelist snippet (e.g., Pricelist Cafe). - Place the cursor before the first letter of one of the descriptions. - Press Backspace. - Bug: the description content is merged with the price. task-5117864
This fix makes several HTML Builder option controls display more consistently, including font, shadow, visibility, and background image settings. Users should see sharper lines, steadier picker heights, and better-aligned controls when editing pages, reducing visual glitches in the editor.
Original PR description
This PR fixes several options-related issues in the HTML Builder: 1. Improved the vertical sublevel line, which appeared blurry due to the transform property and an incorrect height. You can see the…
This PR fixes several options-related issues in the HTML Builder: 1. Improved the vertical sublevel line, which appeared blurry due to the transform property and an incorrect height. You can see the problem by "zooming out" multiple times. 2. Harmonized the padding of the visibility layout options and the background image position to align with the other pickers. 3. Fixed the height of the font-family picker: when you select a font-family, the height of the picker may change according to your selection (that's the case with Roboto for example - It's more "apparent" in the case of headings when it's next to the delete button as shown in the screenshot.) 4. Fixed the height of the “None” shadow option => these 2 issues where caused by the font metrics. task-4985348 1 & 2 <img width="423" height="500" alt="image (1)" src="https://github.com/user-attachments/assets/a9304b67-607a-424a-94de-dd3dacece84f" /> 3 <img width="1037" height="293" alt="Screenshot 2025-10-02 at 13 14 37" src="https://github.com/user-attachments/assets/d5982d34-2987-49d9-95cf-c78294521995" /> 4 <img width="1542" height="231" alt="image" src="https://github.com/user-attachments/assets/13cbfa8f-dd72-41dc-82f2-c371f6ff2d77" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where clicking an image gallery on website pages could show a "missing template" error. The gallery templates are now loaded from the active version, so visitors can view gallery images normally.
Original PR description
Clicking on an image gallery snippet currently triggers a "missing template" error. This happens because the gallery template is only defined in the 000 version file, while the corresponding view record for that version has been disabled. This commit resolves the issue by moving the gallery templates to the 001 version file, ensuring they are properly loaded. Steps to reproduce: 1. In Website, navigate to /jobs. 2. Create a new job and save it. 3. Click on any image at the end of the job page. 4. Observe the "missing template" error. Forward-Port-Of: odoo/odoo#226333
16 changes
Resolved issues and error corrections
The mobile dashboard favorite star now updates immediately when tapped, instead of appearing stuck until the user taps elsewhere. This makes saving or removing favorite dashboards clearer and consistent with the rest of Odoo.
Original PR description
The star icon on mobile would have a strange behaviour. After clicking it, the star would not change between filler/not filled until clicking elsewhere. It turns out that on mobile, after a click the hover rule is applied. And our hover rule would modify the icon to be the opposite of what it should be. This commit changes the CSS to use the same css as `BooleanFavoriteField` to stay consistent with the rest of Odoo. Task: [5092945](https://www.odoo.com/odoo/2328/tasks/5092945) 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 Forward-Port-Of: odoo/odoo#227663
The fleet vehicle kanban view now opens or handles vehicle contracts correctly from its contract button. This removes a small usability issue for fleet managers who need quick access to contract information from vehicle cards.
Original PR description
Fix contracts button in vehicle kanban Task-5109335 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228341
This fixes a display issue where custom text fields added to sales order lines did not show tooltips when users hovered over them. The change restores the expected tooltip text, making customized sales order views easier to read and use.
Original PR description
## Versions 18.0+ ## Issue No tooltip can be displayed on Sale Order Lines. ## Steps to reproduce *Install Studio* - Open any SO; - Open Studio: - Click "Edit List view" on the Order Lines table; - Add a "Text" field in the columns; - Close Studio. - Add a product line if none: - Write something in the new column added with Studio; - Hover that cell and see no tooltip appear ## Cause https://github.com/odoo/odoo/blob/4daf4824a70ef679f65d5cbb15d71bc55c1e760e/addons/web/static/src/views/list/list_renderer.xml#L250 The template calls `getCellTitle` which returns a formatted text but has been overridden. These methods call the original `getCellTitle` method but don't return the formatted value. opw-4921113 Forward-Port-Of: odoo/odoo#225550
A test for settling customer dues in Point of Sale now uses the current order number instead of a fixed, date-sensitive value. This prevents false build failures when tests run in different time contexts, improving release reliability without changing user-facing behavior.
Original PR description
test was failing because the order name was hardcoded to "TSJ/2025/00001". This value includes a date-dependent year and sequence number, which vary based on context_today. this will ensure that the tour dynamically generates the order name based on the current year, making it correct for faketime builds build_error-230717 <img width="1366" height="768" alt="image" src="https://github.com/user-attachments/assets/9822763c-9c78-4589-a72a-8ac207c009d7" />
This fix makes automated tests run consistently whether or not demo data is installed. It reduces the risk of false test failures caused by default user permissions being expanded during demo setup, helping teams validate changes with greater confidence.
Original PR description
The tests should not be impacted by the demo data however it is currently the case. Indeed, a lot of groups are added to the default group user when installing the demo data. Instead, we only take the user group like it is the case when no demo is installed.
Odoo Mail no longer crashes when a new message arrives while the browser tab is out of focus. This keeps messaging stable and avoids interruptions when the system checks whether a message has already been seen.
Original PR description
Backport of #213607. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229504
This update adjusts automated tests so they no longer depend on demo/default user group settings. It helps ensure Helpdesk timesheet and Swiss payroll checks run consistently across different test environments, reducing false failures without changing customer-facing behavior.
Original PR description
The community counter part makes the tests independent from `env['res.users']._default_groups()`. `helpdesk.group_helpdesk_manager` is the only group that is given to `base.default_user_group` in the master data (is that normal?), so we need to give it explicitly in the tests since we don't rely on the default user groups anymore in tests
This fixes an issue in the website/page editor where the color picker closed unexpectedly while previewing background colors on table cells. Users can now choose table cell background colors without interruption, making table formatting smoother and more reliable.
Original PR description
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if…
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if we are in a selected `td` to keep the toolbar open. However, in another fix (254efd86cd1ce871807fdc25479ebc5beeb4eab3), we removed that class during the color preview operation. Previewing a color on a `td` triggers a selection change, which runs `shouldBeVisible`. Since `o_selected_td` is not found, the toolbar closes along with the color picker. Solution: Update https://github.com/odoo-dev/odoo/commit/254efd86cd1ce871807fdc25479ebc5beeb4eab3. A better fix is to use `o_selected_td_bg_color_preview` which will undo the `box-shadow` when we preview a color. Steps to reproduce: 1. Add a table. 2. Select a cell. 3. Apply a background color. 4. Select the cell again. 5. Hover a color to preview. → The color picker dismisses once a color is hovered. opw-5066309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225827
The automated guided test for the accountant merge wizard now waits for the final step to complete before closing. This reduces false failures in validation runs and helps keep accounting-related releases more stable.
Original PR description
The last check of the tour is always true. So it sometimes closes too early. Wait really for the last operation for the last check runbot-error-108440 Forward-Port-Of: odoo/enterprise#95991
A Spanish tax reporting component now handles missing date information safely instead of stopping with an error. This improves reliability during automated checks and record creation without changing normal report validation when dates are provided.
Original PR description
The `_get_mod_period_and_year` method assumed that `options['date']` would always be present with `date_from` and `date_to`. However, during the automatic `TestEveryModel.test_computed_fields_without_dependencies`, this method is called on a `new()` record where no options are provided. This resulted in a `KeyError: 'date'`. We now gracefully handle missing or incomplete `options` by returning `(None, None)` instead of raising an exception. This ensures that tests and new records can be created without errors, while preserving the original validation logic when valid options are given. build_error-231511 Forward-Port-Of: odoo/enterprise#94154
This fix prevents the Time Off calendar from mixing up user records with employee records when opened from user preferences. It helps avoid incorrect employee lookups and keeps the time off view working reliably in that navigation path.
Original PR description
Since the active model in the time off view can be res.users when we come from the user preferences, we need to check that the context model is the correct one before using the active_id, otherwise we'll try to fetch an employee with the id of the user. This has been introduced in recent fix: https://github.com/odoo/odoo/commit/c82c4a0f2674b117cdc2b0d35fe4393b8f35285a --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Published product tags now show in the eCommerce sidebar as soon as the product is published, even when variants are created dynamically. This helps shoppers find tagged products immediately and avoids missing filter options before a variant is generated.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have an attribute which creates variants dynamically; 2. create a product with two or more dynamic attribute values; 3. add a new tag to the product; 4. publish the product to eCommerce. Issue ----- The tag doesn't show up in the side-bar until after a product variant has been created. Cause ----- The tags are searched based on `product_ids` instead of `product_template_ids`, leading to tags assigned to dynamically created product variants not showing up until a variant has been created. Solution -------- Search tags based on `product_template_ids.is_published` as well as `product_ids.is_published` (in case of `addition_product_tag_ids`). opw-4985989 Forward-Port-Of: odoo/odoo#229404 Forward-Port-Of: odoo/odoo#228544
Fixed an issue that could affect return period reporting when reports include sections. This helps ensure the correct report section is recognized, reducing the risk of incorrect options or results in accounting reports.
Original PR description
The _init_options_return_periodicity would compare the report_id with self.id, which would lead to bugs in the case of reports with sections since in those cases it's the section id that's taken into account. Added that check. Also backported https://github.com/odoo/enterprise/pull/93187 's fix.
This update narrows an automated click-and-collect test so it focuses on confirming public access works correctly. It reduces inconsistent test behavior caused by overly fast simulated actions, helping keep quality checks stable without changing the customer-facing shopping flow.
Original PR description
Tours are too fast for imitating the user actions that led to sometimes creating 2 orders in parallel instead of reusing the first created. The test was added for b395f984b13eb83310024b9fa94d7822211ef8c1 fix, so with this commit, we keep the test more specific to the fix and avoid inconsistent behavior. Forward-Port-Of: odoo/odoo#229440 Forward-Port-Of: odoo/odoo#218417
This fix makes Chilean bank reference data load using a stable country identifier instead of matching the country by name. This prevents installation or upgrade failures when the country name has been customized or corrupted in a database.
Original PR description
`res.country` records are `noupdate` by default, which means that changes such as the following are not reverted: ```SQL pied@(none):pied_3131231> SELECT c.name->>'en_US' FROM res_country c JOIN…
`res.country` records are `noupdate` by default, which means that changes such as the following are not reverted:
```SQL
pied@(none):pied_3131231> SELECT c.name->>'en_US' FROM res_country c JOIN ir_model_data d ON d.res_id = c.id AND d.model = 'res.country' AND d.module = 'base' AND d.name IN ('cl', 'co')
+----------+
| ?column? |
|----------|
| COLOMBIA |
| Colombia |
+----------+
```
Note: in this specific, the change is clearly an error introduced in the data. Still, the error it produces (which follows) can be avoided by referring to the xmlid, instead of the record name.
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.4/odoo/service/server.py", line 1410, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'])
File "<decorator-gen-6>", line 2, in new
File "/home/odoo/src/odoo/saas-18.4/odoo/tools/func.py", line 89, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/saas-18.4/odoo/orm/registry.py", line 175, in new
load_modules(
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 455, in load_modules
load_module_graph(
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 226, in load_module_graph
load_data(env, idref, 'update', kind='data', package=package)
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 79, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "/home/odoo/src/odoo/saas-18.4/odoo/tools/convert.py", line 624, in convert_file
convert_csv_import(env, module, pathname, fp.read(), idref, mode, noupdate)
File "/home/odoo/src/odoo/saas-18.4/odoo/tools/convert.py", line 680, in convert_csv_import
raise Exception(env._(
Exception: Module loading l10n_cl failed: file l10n_cl/data/res.bank.csv could not be processed:
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
```
upg-3131231
Forward-Port-Of: odoo/odoo#229218Website image galleries now load the correct gallery template when visitors click images, including on job pages. This prevents a disruptive error message and keeps browsing content smooth for site visitors and editors.
Original PR description
Clicking on an image gallery snippet currently triggers a "missing template" error. This happens because the gallery template is only defined in the 000 version file, while the corresponding view record for that version has been disabled. This commit resolves the issue by moving the gallery templates to the 001 version file, ensuring they are properly loaded. Steps to reproduce: 1. In Website, navigate to /jobs. 2. Create a new job and save it. 3. Click on any image at the end of the job page. 4. Observe the "missing template" error. Forward-Port-Of: odoo/odoo#226333
1 change
Resolved issues and error corrections
This fixes an automated test for the Accountant merge wizard so it waits for the final action before closing. It reduces false failures in validation runs, helping keep releases and updates more reliable without changing day-to-day user behavior.
Original PR description
The last check of the tour is always true. So it sometimes closes too early. Wait really for the last operation for the last check runbot-error-108440 Forward-Port-Of: odoo/enterprise#95991
12 changes
Resolved issues and error corrections
The Slovak payroll accounting test setup now gives the test user the required payroll manager permissions. This prevents access-rights failures during automated payroll checks, helping keep payroll functionality reliable.
Original PR description
steps to reproduce: install l10n_sk_hr_payroll_account run test_payslip_1 test added payroll manager groups to the test user to avoid missing access rights error build_error-230673 Forward-Port-Of: odoo/enterprise#95305
The Swedish SIE4 export now uses the character encoding required by the official SIE standard. This helps exported accounting files handle Swedish characters correctly and reduces the risk of compatibility issues when sharing them with other systems.
Original PR description
The SIE4 specification (page 8, section 5.8) requires the file character set to be IBM PC 8-bit extended ASCII (Codepage 437). Previously, 'ISO-8859-1' was used, which does not comply with the standard and may cause issues with Swedish characters. This commit updates the SIE4 export to use codepage 437, ensuring full compliance with the specification. Specification can be found here: https://sie.se/wp-content/uploads/2020/05/SIE_filformat_ver_4B_080930.pdf Forward-Port-Of: odoo/enterprise#95876
This fix disables a revert mechanism in Swiss payroll that could cause incorrect or unwanted payroll reversals. It helps keep payroll processing more predictable and reduces the risk of payroll records being changed unexpectedly.
Original PR description
Forward-Port-Of: odoo/enterprise#95867
This fix ensures test errors are correctly detected instead of being silently ignored. It improves confidence in quality checks for the affected helpdesk live chat area, without changing customer-facing behavior.
Original PR description
This commit follows a community fix that restores proper error handling within and outside of unit tests. As such, it fixes tests reporting errors that were previously not picked up. Community PR: https://github.com/odoo/odoo/pull/228836 Forward-Port-Of: odoo/enterprise#95797
This fixes an issue in Indian payroll where the total allowance check against wages could behave incorrectly. It helps ensure payroll validations are applied reliably, reducing the chance of incorrect employee compensation setup being accepted or rejected.
Original PR description
Forward-Port-Of: odoo/enterprise#96003
When confirming a Belgian payroll working schedule change, users are now taken directly to the employee form with the newly created version selected. This avoids the confusing old redirect to a list of versions and helps HR users continue their work in the right place.
Original PR description
…dule change The working schedule change wizard was redirecting to a list of version when validating. This was the old behavior with the contract. Instead, redirect to the employee form view with the new version selected. task-5126204 Forward-Port-Of: odoo/enterprise#95877
This fixes an automated Accountant test flow that could finish before the final action was complete. The change improves reliability of validation for the account merge wizard without changing day-to-day user features.
Original PR description
The last check of the tour is always true. So it sometimes closes too early. Wait really for the last operation for the last check runbot-error-108440 Forward-Port-Of: odoo/enterprise#95991
The Field Service onboarding guide now starts correctly even when the project already contains task templates. This prevents setup guidance from getting blocked for teams with preconfigured workflows.
Original PR description
This commit's purpose is to allow the fsm onboarding tour to work even if there are existing task template within the fsm project. note : This commit has to be edited in the 19.0 forward port, since its IsActive selector was updated. It should be ["body:has(.o-kanban-button-new.o-dropdown-caret"] instead. task-5088820 Forward-Port-Of: odoo/enterprise#94904
This update corrects how subscription invoice sections are handled for combo products. It helps prevent existing section information from being overwritten and avoids adding unnecessary values, improving invoice accuracy.
Original PR description
This commit improve fix of PR https://github.com/odoo/enterprise/pull/90989 to avoid overriding right combo section values and avoid setting unnecessary values on the section. opw-5069278 Forward-Port-Of: odoo/enterprise#95831 Forward-Port-Of: odoo/enterprise#94776
Budgets that are shared across companies can now display monetary values correctly even when no specific company is assigned. This prevents currency-related display issues for organizations using company-independent budgets under a shared-currency assumption.
Original PR description
Budgets can work without a company, making the assumption that all the companies using the budget have the same currency. This is done by not setting a company on the budget. Since the currency is computed on the company, we need a fallback for the monetary widget to work. Forward-Port-Of: odoo/enterprise#95000
Spanish tax reporting now handles missing date information safely when creating or testing new records. This prevents unexpected failures in automated checks while keeping the normal date validation unchanged for regular report use.
Original PR description
The `_get_mod_period_and_year` method assumed that `options['date']` would always be present with `date_from` and `date_to`. However, during the automatic `TestEveryModel.test_computed_fields_without_dependencies`, this method is called on a `new()` record where no options are provided. This resulted in a `KeyError: 'date'`. We now gracefully handle missing or incomplete `options` by returning `(None, None)` instead of raising an exception. This ensures that tests and new records can be created without errors, while preserving the original validation logic when valid options are given. build_error-231511 Forward-Port-Of: odoo/enterprise#94154
Opening a spreadsheet list side panel no longer crashes when the list was sorted by a field that was later removed or renamed. Users can now access the panel and remove the invalid sorting after upgrades, avoiding disruption when working with older spreadsheets.
Original PR description
If a list is sorted on an invalid field and you try to open the list side panel, it crashes. It should open to allow the user to remove the sorting. A list with an invalid sorting field if the spreadsheet was created in a given version, then upgrades to a version where that field has been removed or renamed. Task: 4962837 Forward-Port-Of: odoo/enterprise#94972 Forward-Port-Of: odoo/enterprise#92393
31 changes
Resolved issues and error corrections
Opening Time Off from an employee profile no longer triggers a Missing Record error. This ensures users can access leave information reliably from their profile without interruption.
Original PR description
**Steps to reproduce (without demo data):** - Install hr_holidays - Go to "My Profile" - Open "Time Off" **Issue:** Accessing Time Off from a user profile triggers a `Missing Record` error. **Cause:** The system was passing the user’s active_id to the employee record incorrectly. **Fix:** Now, when the context's active_model is 'hr.employee', the correct active_id is applied. **Commit issue:**https://github.com/odoo/odoo/pull/225839 Forward-Port-Of: odoo/odoo#229497
Marketing automation email templates have been updated to work with the latest email building blocks. This helps ensure campaign, trial, partnership, discount, and website sales emails keep their intended layout and presentation.
The vehicle kanban view now correctly shows and uses the contracts button. This helps fleet users access vehicle contract information reliably from the overview screen.
Original PR description
Fix contracts button in vehicle kanban Task-5109335 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228341
This fix makes employee record handling more reliable when databases contain unusual or inconsistent version information. It helps prevent HR processes from being affected by edge cases in employee data history.
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 fix corrects the styling of the Belgian payroll holiday attestation screen so it appears as intended. It helps employees and HR users view the holiday attestation information more clearly after a previous UX update used the wrong layout classes.
Original PR description
We recently fixed the UX of holiday attest but the classes used in xml were wrong. We fix this in this task. Task: 5109176
The Belgian payroll employee view now uses the correct styling for holiday certificates. This fixes a recent display issue so HR users see the holiday attest information as intended.
Original PR description
We recently fixed the UX of holiday attest but the classes used in xml were wrong. We fix this in this task. Task: 5109176
The HTML editor now avoids including ignored, untracked content when saving an editing snapshot. This prevents errors that could block snapshot creation and helps keep editor history actions reliable for users.
Original PR description
When creating a snapshot step, unobserved nodes (i.e. node inserted via `ignoreDOMMutations`) should not be included in the snapshot step. This commit restores a previous behavior in which, on serialization, nodes that had no entry in the node map were ignored (instead of throwing an error). Because of this thrown error, before this commit it was not possible to create a snapshot step if the editable contained unobserved nodes.
This fixes budgets that are shared across companies without a specific company assigned. The budget screen now has a fallback currency so money amounts display correctly when those companies use the same currency.
Original PR description
Budgets can work without a company, making the assumption that all the companies using the budget have the same currency. This is done by not setting a company on the budget. Since the currency is computed on the company, we need a fallback for the monetary widget to work.
The Belgian payroll working schedule change process now opens the employee record with the newly selected version instead of showing an outdated list view. This reduces confusion for HR users and helps them continue their workflow in the right place after validating a schedule change.
Original PR description
…dule change The working schedule change wizard was redirecting to a list of version when validating. This was the old behavior with the contract. Instead, redirect to the employee form view with the new version selected. task-5126204 Forward-Port-Of: odoo/enterprise#95877
This fix ensures text highlights with transparent custom colors display evenly, without darker edges caused by overlapping fill and outline colors. It also adjusts a website menu test so it runs reliably in more test environments.
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 fix prevents an error from appearing when users edit a refusal email while processing an applicant. The unavailable template-saving option is hidden for this flow, allowing recruitment users to continue without interruption.
Original PR description
Steps to reproduce: - open any applicant in recruitment app - click on refuse button - enable send email toggle key - edit the message - try to save the template Issue: - traceback pop ups and not able to save the template Reason: - The method 'open_template_creation_wizard' is missing, causing the error when trying to save the template. This method was not implemented. Solution: - Remove the 'save the template' feature for this version by adding the context. It require two fields which are not present in the current model, thus avoiding the error. task-4948736 Forward-Port-Of: odoo/odoo#220118
This fixes how subscription combo sections are handled when creating invoices. It prevents correct section information from being overwritten and avoids adding unnecessary section details, helping invoices stay accurate and easier to read.
Original PR description
This commit improve fix of PR https://github.com/odoo/enterprise/pull/90989 to avoid overriding right combo section values and avoid setting unnecessary values on the section. opw-5069278 Forward-Port-Of: odoo/enterprise#95831 Forward-Port-Of: odoo/enterprise#94776
Fixed an issue where the favorite star on spreadsheet dashboards did not visually update immediately on mobile after being tapped. This makes the favorite action clearer and more consistent with the rest of Odoo.
Original PR description
The star icon on mobile would have a strange behaviour. After clicking it, the star would not change between filler/not filled until clicking elsewhere. It turns out that on mobile, after a click the hover rule is applied. And our hover rule would modify the icon to be the opposite of what it should be. This commit changes the CSS to use the same css as `BooleanFavoriteField` to stay consistent with the rest of Odoo. Task: [5092945](https://www.odoo.com/odoo/2328/tasks/5092945) 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 Forward-Port-Of: odoo/odoo#227663
The Talent applications button now opens the same set of related applications that is shown in the application count. This prevents recruiters from seeing a mismatch between the count and the list, making talent records easier to review accurately.
Original PR description
`_get_similar_applicants_domain` used in `action_open_applications` did not return the same domain used in `_compute_application_count`. Fixed by complementing the domain within `_get_similar_applicants_domain` used in the action to include applications with the same associated `pool_applicant_id` as the current applicant/talent. Task-5092128 Forward-Port-Of: odoo/odoo#228007
This fixes an automated Accountant app test so it waits for the final merge wizard action before closing. It reduces false test failures and helps keep accounting-related updates moving through validation more reliably.
Original PR description
The last check of the tour is always true. So it sometimes closes too early. Wait really for the last operation for the last check runbot-error-108440 Forward-Port-Of: odoo/enterprise#95991
Fixes an issue in the HTML editor where the color picker could close unexpectedly when previewing a background color for a table cell. This makes table formatting more reliable and avoids interrupting users while editing content.
Original PR description
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if…
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if we are in a selected `td` to keep the toolbar open. However, in another fix (254efd86cd1ce871807fdc25479ebc5beeb4eab3), we removed that class during the color preview operation. Previewing a color on a `td` triggers a selection change, which runs `shouldBeVisible`. Since `o_selected_td` is not found, the toolbar closes along with the color picker. Solution: Update https://github.com/odoo-dev/odoo/commit/254efd86cd1ce871807fdc25479ebc5beeb4eab3. A better fix is to use `o_selected_td_bg_color_preview` which will undo the `box-shadow` when we preview a color. Steps to reproduce: 1. Add a table. 2. Select a cell. 3. Apply a background color. 4. Select the cell again. 5. Hover a color to preview. → The color picker dismisses once a color is hovered. opw-5066309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225827
This fix prevents a completed kiosk payment from being processed twice by the payment terminal listener. It reduces unnecessary error logs and helps keep self-order payment flows more reliable for staff and customers.
Original PR description
Before this commit, when using an IoT payment terminal in the Kiosk, an error could sometimes be logged due to the event listener running twice after the payment is completed. After this commit, the issue is fixed by moving the `removeListener` call to be before the RPC call, preventing the event from being triggered multiple times.
Editing a message with mentions no longer lets users accidentally alter or partially delete those mention links. This keeps conversations cleaner and prevents broken references to people or channels, including in live chat and mail discussions.
Original PR description
This fixes the issue that when editing a message with mentions, the mentions were editable and could be partially deleted. This is fixed by preprocessing the message body when loading it for edition, addding contenteditable="false" and draggable="false" to the mention links. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where Spanish tax report logic could fail when records were created without date settings, such as during automated checks. The change makes the report handling more resilient while keeping normal date validation unchanged for regular use.
Original PR description
The `_get_mod_period_and_year` method assumed that `options['date']` would always be present with `date_from` and `date_to`. However, during the automatic `TestEveryModel.test_computed_fields_without_dependencies`, this method is called on a `new()` record where no options are provided. This resulted in a `KeyError: 'date'`. We now gracefully handle missing or incomplete `options` by returning `(None, None)` instead of raising an exception. This ensures that tests and new records can be created without errors, while preserving the original validation logic when valid options are given. build_error-231511 Forward-Port-Of: odoo/enterprise#94154
Website editors can once again use the “On Hover” animation option on images that have decorative shapes. The option is only hidden when the selected shape already includes its own animation, preventing conflicting effects while restoring expected design flexibility.
Original PR description
Applying a shape to an image unintentionally disabled the "On Hover" animation option. This commit restores the option with proper checks, ensuring it remains disabled only when the applied shape includes an animation. The related code was also refactored slightly for improved readability. Steps to reproduce: 1. Enter edit mode in Website. 2. Add an image and apply a shape. 3. Notice that the "On Hover" animation option is incorrectly hidden. Forward-Port-Of: odoo/odoo#225527
This update fixes internal spreadsheet test helpers so they can handle sorting scenarios correctly. It helps ensure spreadsheet-related changes are tested more accurately, reducing the risk of sorting issues reaching users.
Original PR description
Task: 4962837 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 Forward-Port-Of: odoo/odoo#227566 Forward-Port-Of: odoo/odoo#223011
This fixes an issue in the HTML editor where opening the color picker from a link popover could create an extra button and leave preview colors in the wrong state. Users can now adjust or reset button colors more reliably, with the original button restored correctly after hovering through color options.
Original PR description
Before this commit: the onchange is applied when the color picker closes, it has a few issues, 1. adding duplicate button cause the reference of the link element is not passed correctly 2. the preview color isn't reset when mouse no longer hovering on the colors After this commit: The onchange is applied when on color reset. No more additional button inserted and color of the button is properly restored after the cursor is out of color picker task-4966317 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225664
This fix prevents the website preview from briefly showing outdated styling after a page design change. Business users get a smoother editing experience when saving theme changes and navigating between pages.
Original PR description
In this [commit], fallback iframe was added to avoid flickering between iframe reloads. But the flicker still happens if we change page's style, since we do not apply the new styles to the fallback iframe. To reproduce the issue: - Open Website and start editing - Move to the 'Theme' tab - Change page layout to 'Boxed' - Set background color to a non-transparent color, e.g. red - Save, and do any action to reload the iframe, e.g. go to /contactus => The iframe flickers from the previous color to red, which shouldn't be the case. Task-4985472 [commit]: https://github.com/odoo/odoo/commit/7b19831e1c624b483008feb526ba773ec8b23009 Forward-Port-Of: odoo/odoo#228863 Forward-Port-Of: odoo/odoo#221391
The API documentation now skips a default value that could not be converted into the format needed for display. This prevents an error when generating documentation for affected public methods and keeps the documentation page usable.
Original PR description
There is the following public method on the ir.ui.view model:
def distribute_branding(self, e, branding=None, parent_xpath='',
index_map=ConstantMapping(1)):
The default value for `index_map`: `ConstantMapping`, is not json-serializable. Trying to `json.dumps` it raises a TypeError. We want to ignore the default value in this case.
Reported-by: Sunhyeok Sam <suju@odoo.com>
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-prThis fixes an error that could appear after closing a fullscreen YouTube video added through the website editor. The mail fullscreen handling now ignores unrelated fullscreen activity, helping users close videos without disruptive browser errors.
Original PR description
Versions -------- - 19.0+ Steps ----- 1. Go to an eCommerce product page; 2. open the website editor; 3. add a YouTube video as extra media; 4. save changes; 5. open the video in fullscreen; 6. close the video. Issue ----- > `UncaughtPromiseError > TypeError` > `Uncaught Promise > can't access property "closeOverlay", this is undefined` Cause ----- The `mail.fullscreen` service adds an event listener to `window` on start. This listener gets triggered on `fullscreenchange` events. Once triggered, there's a naked `exit()` call, hence when entering the `exit` function, `this` is not defined. Solution -------- - Explicitly store `closeOverlay` in `state`. - Call `state.exit()` instead of `exit()`. - Return from `exit` if `id` is undefined (i.e. non-mail fullscreen). opw-5105959
This fix makes the send button visible when editing a chatter message on mobile devices and places the discard editing option in a clearer position. Mobile users can now complete or cancel message edits without confusion or hidden controls.
Original PR description
**Purpose of this PR:** This PR addresses UI issues in the mobile view of the chatter during message editing. - Ensures the send button is properly displayed while editing messages on mobile. - Moves the "Discard Editing" action above the composer. **Before this PR:**  **After this PR:** <img width="446" height="132" alt="image" src="https://github.com/user-attachments/assets/1842f341-268a-40e3-8915-dc08fb9162b3" /> task-[4780731](https://www.odoo.com/odoo/project/1519/tasks/4780731) Forward-Port-Of: odoo/odoo#213943
This fix keeps certain Mexican electronic invoicing weight fields consistent with official stamped documents by preventing later edits where they could create mismatches. It also hides duplicate weight information in product screens when variants are used, reducing customer confusion.
Original PR description
In refactor for l10n_mx_edi_stock, l10n_mx_edi_extra_weight was added to handle the weight of the driver and luggage. However, the condition to prevent the field from being edited once it has been stamped was not added, which could cause confusion if it could be edited later and a value different from that of the CFDI could be seen. The condition to make it readonly has been added, like the rest of the location fields in stock.picking. In addition to this, when testing the flow, we also detected a conflict with Odoo Standard in the l10n_mx_edi_extended module. This module added the weight field again, now on the product accounting page. The standard weight field had a condition to make it invisible if the product had variants, but this one did not, which could cause confusion for customers, so these conditions were also added. I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update changes a purchase-related validation from a hard block into a warning during migration to Odoo 19.0. Users are still alerted when something may need attention, but migrations can continue more smoothly without being stopped by this check.
Original PR description
The constrain on `purchase_ok` could block the migration to 19.0. In order to still alert user something may be wrong but but letting the migration run smoothly, this commit change the constrain to a warning. 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
Website image galleries now load the correct template when visitors click images, avoiding a disruptive error message. This helps job pages and other website pages with gallery snippets work as expected for visitors and editors.
Original PR description
Clicking on an image gallery snippet currently triggers a "missing template" error. This happens because the gallery template is only defined in the 000 version file, while the corresponding view record for that version has been disabled. This commit resolves the issue by moving the gallery templates to the 001 version file, ensuring they are properly loaded. Steps to reproduce: 1. In Website, navigate to /jobs. 2. Create a new job and save it. 3. Click on any image at the end of the job page. 4. Observe the "missing template" error. Forward-Port-Of: odoo/odoo#226333
Helpdesk ticket lists now sort ticket references in a more natural order, even after the count reaches three digits. This makes it easier for users to find the newest or oldest tickets without confusing results caused by text-based sorting.
Original PR description
**Issue** With the default `helpdesk.ticket` sequence, once users reach 100 tickets, ordering tickets by `ticket_ref` in the list view is unintuitive as it is a Char field (so '11' > '100') and the results are not useful if the user wants to see the oldest/newest tickets. opw-4891916 Forward-Port-Of: odoo/enterprise#95548 Forward-Port-Of: odoo/enterprise#93058
This fixes an internal test setup issue so purchase reordering rule tests can access the product route field again. It helps keep automated checks reliable after a recent route visibility change, with no direct impact on end users.
Original PR description
The setup class `TestReorderingRule` fails with `AssertionError: field 'route_ids' is not visible`.
This happens because the `route_ids` field on the product form is only visible when `has_available_route_ids` is `True`, which requires at least one route to be `product_selectable`.
After recent changes here: https://github.com/odoo/odoo/pull/223685, the Buy route (`purchase_stock.route_warehouse0_buy`) is no longer product-selectable, causing the field to be hidden and the test to break.
This commit re-enables `product_selectable` on the Buy route in tests to make sure `route_ids` is visible and the reordering rule tests run successfully.
I also removed `cls.env.user.group_ids += cls.env.ref('uom.group_uom')` it was a duplicated line, from two different fixes.
[RB-232574](https://runbot.odoo.com/odoo/error/232574)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr14 changes
Resolved issues and error corrections
This fixes the contracts button shown on vehicle cards in the Fleet kanban view. Fleet users can reliably open related vehicle contracts from the overview, reducing navigation friction and avoiding a broken shortcut.
Original PR description
Fix contracts button in vehicle kanban Task-5109335 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Discarding a quality worksheet wizard no longer creates a worksheet record or marks the quality check as completed. This avoids misleading completion status and keeps quality check progress accurate when users cancel the worksheet flow.
Original PR description
**Problem:** Opening the worksheet wizard and discarding it makes the worksheet "completed" **Steps to reproduce:** - create a quality check - set a product - in type select worksheet - select the "quality issues" template - select a team - click on the worksheet smart button - discard **Current behavior:** the worksheet is marked has completed **Cause of the issue:** when discarding, this line causes the creation of an instance of worksheet.template linked to the quality.check via its worksheet_template_id https://github.com/odoo/enterprise/blob/a1dd58f2b59ecd2d22efd29eb0aace7bdca64f66/quality_control_worksheet/static/src/views/quality_worksheet_fromview.js#L35 which will make the worksheet_count field of the quality check worth 1 after discarding https://github.com/odoo/enterprise/blob/1c5e547b59a57c840ef72b2e76c6a6a627f1f18e/quality_control_worksheet/models/quality.py#L37-L39 opw-4980945
This update makes Chilean bank data rely on a stable country reference instead of the editable country name. It prevents module updates or installations from failing when the country name has been changed in a database.
Original PR description
`res.country` records are `noupdate` by default, which means that changes such as the following are not reverted: ```SQL pied@(none):pied_3131231> SELECT c.name->>'en_US' FROM res_country c JOIN…
`res.country` records are `noupdate` by default, which means that changes such as the following are not reverted:
```SQL
pied@(none):pied_3131231> SELECT c.name->>'en_US' FROM res_country c JOIN ir_model_data d ON d.res_id = c.id AND d.model = 'res.country' AND d.module = 'base' AND d.name IN ('cl', 'co')
+----------+
| ?column? |
|----------|
| COLOMBIA |
| Colombia |
+----------+
```
Note: in this specific, the change is clearly an error introduced in the data. Still, the error it produces (which follows) can be avoided by referring to the xmlid, instead of the record name.
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.4/odoo/service/server.py", line 1410, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'])
File "<decorator-gen-6>", line 2, in new
File "/home/odoo/src/odoo/saas-18.4/odoo/tools/func.py", line 89, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/saas-18.4/odoo/orm/registry.py", line 175, in new
load_modules(
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 455, in load_modules
load_module_graph(
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 226, in load_module_graph
load_data(env, idref, 'update', kind='data', package=package)
File "/home/odoo/src/odoo/saas-18.4/odoo/modules/loading.py", line 79, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "/home/odoo/src/odoo/saas-18.4/odoo/tools/convert.py", line 624, in convert_file
convert_csv_import(env, module, pathname, fp.read(), idref, mode, noupdate)
File "/home/odoo/src/odoo/saas-18.4/odoo/tools/convert.py", line 680, in convert_csv_import
raise Exception(env._(
Exception: Module loading l10n_cl failed: file l10n_cl/data/res.bank.csv could not be processed:
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
No matching record found for name 'Chile' in field 'Country'
```
upg-3131231
Forward-Port-Of: odoo/odoo#229218This update corrects an internal automated test for SEPA credit transfers after a restricted bank account field could no longer be updated directly. It helps keep payment-related quality checks reliable without changing day-to-day user workflows.
Original PR description
Direct update sanitized_acc_number is not allowed. Forward-Port-Of: odoo/enterprise#72508
The favorite star in Documents spreadsheets now changes immediately when tapped on mobile devices. This avoids confusion for users by making the saved or unsaved state display correctly without needing an extra tap elsewhere.
Original PR description
The star icon on mobile would have a strange behaviour. After clicking it, the star would not change between filled/not filled until clicking elsewhere. It turns out that on mobile, after a click the hover rule is applied. And our hover rule would modify the icon to be the opposite of what it should be. This commit changes the CSS to use the same css as `BooleanFavoriteField` to stay consistent with the rest of Odoo. Task: [5092945](https://www.odoo.com/odoo/2328/tasks/5092945) Forward-Port-Of: odoo/enterprise#95016
An unused tooltip setting on document tags is now hidden from users and marked as deprecated in the code. This reduces confusion in the Documents app without changing existing document workflows or data.
Original PR description
The 'tooltip' field was introduced on document tags categories, but after couple of refactors it ended up unused on document tag. As we cannot remove fields from the data model in stable, this commit removes tooltip from the view and marks it as deprecated in the code. opw-4567814 ## Stems from https://github.com/odoo/odoo/pull/210147 https://github.com/odoo/enterprise/pull/79496 # Merge plan - hide `tooltip` in stable - remove `tooltip` in master
The grid view now keeps all months visible when users turn off weekends in a yearly view. This prevents missing month columns in analytic reports and keeps annual reporting complete and reliable.
Original PR description
To reproduce: ============= 1- go to accounting > reporting > management 2- go to analytic report and click on grid view 3- From the year dropdown, uncheck "Show weekends". → Some months disappear unexpectedly. Problem: ========= Weekend filtering was applied even in year range. In year view, each column is already a full month, so filtering out weekends is incorrect. Fix: ==== Adjust the condition to skip filtering when range is ["year" or "day"]. opw-5078200 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 Point of Sale session names from advancing when cash posting fails. Businesses get continuous, easier-to-audit session numbering without gaps caused by failed operations.
Original PR description
Before this commit, if an issue occurred while posting the cash details, the session sequence would still increment even though the operation failed, leading to gaps in session names. With this commit, the sequence only increments when the operation succeeds, ensuring continuous session naming without gaps. opw-5100163 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed an issue where turning off weekends in yearly analytic reports could make some months disappear. Yearly views now keep all month columns visible, so reports remain complete and easier to review.
Original PR description
To reproduce: ============= 1- Go to Analytic Reporting. 2- From the year dropdown, uncheck "Show weekends". → Some months disappear unexpectedly. Problem: ========= Weekend filtering was applied even in year range. In year view, each column is already a full month, so filtering out weekends is incorrect. Fix: ==== Adjust the condition to skip filtering when range is not "month". Weekend logic now only applies to month range grid. community-pr: https://github.com/odoo/odoo/pull/226975 opw-5078200
Embedded YouTube videos now keep selected playback settings such as autoplay and looping when shown on product pages. This ensures shoppers see videos behave as configured, improving consistency for eCommerce media.
Original PR description
Versions -------- - 18.0 Steps ----- 1. Add a youtube video to a product's eCommerce media; 2. enable autoplay & loop; 3. go to product page; 4. check embedded video. Issue ----- Video doesn't autoplay or loop. Cause ----- The playback options are part of the video url when it gets passed to `get_video_embed_code`, but these get discarded by the `get_video_url_data` method. Solution -------- Do a partial backport of commit 2bcff9dda3e45, which fixed the issue by first mapping the url's parameters, then passing them to `get_video_url_data`. opw-5056801
Dynamic content inserted in the middle of text now keeps its inline placement after an editable message is saved or locked. This prevents unexpected line breaks in sent mailings and other edited HTML content, preserving the intended appearance for recipients.
Original PR description
In editable fields, the Html Editor currently adds the data-oe-t-inline
attribute to items that are identified as needing to be displayed inline
However, this attribute is removed on save. As a result, if the editable
body ever "locks" (for example: a mailing that is sent no longer allows
users to edit its body), then the inline property appears to be lost:
an inline dynamic attribute suddenly looks like it's on its own line.
Steps to reproduce:
- Create a mailing
- Add a dynamic attribute in the middle of a line
- Send the mailing
- You will see a carriage return directly before and after the dynamic
attribute
Fix:
- When a data-oe-t-inline is added to an element, the d-inline class is
also added
task-4852246This update keeps inline formatting information when editable text content is saved, preventing unexpected line breaks when the same content is later viewed as non-editable. Related Web Studio tests were updated to reflect the corrected behavior.
Original PR description
The data-oe-t-inline would previously set certain items in editable text areas (such as dynamic text fields in mailing bodies) as inline. This property used to be lost on save and reapplied upon loading the contents of editable text fields. However, this caused inconsistencies where text fields that became no longer editable would have a sudden difference in presentation, with previously-inlined items now having a carriage return directly before and after them. To fix this, the data-oe-t-inline attribute is no longer deleted on save. Tests have to be adapted to accomodate this change. task-4852246
The timesheet grid now respects flexible working schedules by not automatically marking Saturdays and Sundays as unavailable. This avoids misleading employees who are allowed to work on any day.
Original PR description
To reproduce: ============= 1- Update employee worktime to be flexible 2- Go to timesheets -> saturday & sunday are marked grey Problem: ======== Can't apply https://github.com/odoo/odoo/blob/ce2d134d3e8e5c0d96529c1d0490f1e0c5e28294/addons/resource/models/resource_calendar.py#L511 This logic cannot be applied when an employee's work time is flexible, since they can work whenever they want. Fix: ==== When employee work time is flexible we just return empty list for the unavailable dates. opw-5031144
Website pricelist snippets now keep consistent spacing and text sizing when descriptions are regenerated in the page builder. This prevents newly added or restored descriptions from looking larger or too close to product titles, improving visual consistency for website editors.
Original PR description
New description paragraphs generated by the builder for the "pricelist" snippets were missing two expected classes. - "mt-2" was never applied, so all pricelist variants lacked the vertical spacing below product titles. - The boxed and cafe snippets also needed the `o_small` class to keep their text size consistent. Steps to see the missing "o_small": 1. Drop an "s_pricelist_boxed" or "Pricelist Cafe" snippet on a page. 2. Use Backspace to delete the text already present in one of the descriptions. 3. Toggle the "Descriptions" option off and on; the regenerated paragraph appears larger than expected because `o_small` is absent. task-5117864
5 changes
Resolved issues and error corrections
Users now see a notification when they scan a barcode shorter than three characters. This prevents confusion by making it clear that the scan was rejected because the barcode is invalid.
Original PR description
When scanning a barcode shorter than 3 characters, the system previously failed silently, leaving users without feedback and unclear whether the scan was processed. This fix adds a notification to inform the user that barcodes must be at least 3 characters long. Steps to reproduce (17.0+): Scan a barcode shorter than 3 characters. Expected result: A notification is displayed indicating that the scanned barcode is invalid. Actual result: The scan is ignored silently with no feedback to the user opw-5041723 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The helpdesk "Ask the community" button now sends customers to the correct community forum page instead of a missing page. This prevents a 404 error and helps customers reach self-service support as intended.
Original PR description
Scenario:
- create a helpdesk team
- enable community forum on it
- go to the team and click on "Ask the community"
Result: 404 error, this page does not exist
Cause: we are using helpdesk.team ID in route needing a forum.forum ID
Fix: uses /helpdesk/{team ID}/forums route instead of /forum/{team ID}
opw-5027193The Swiss payroll transmission screen now hides the verified source tax statement button when the institution response does not include a correction. This prevents users from opening a report that would not contain useful information, reducing confusion during payroll review.
Original PR description
This button will give a report only in the case where the institution response has a correction, so it should be hidden.
Inventory moves with nearly identical unit prices can now be merged correctly, avoiding unnecessary duplicate stock movements. This helps keep inventory operations cleaner when tiny rounding differences occur in pricing.
Original PR description
Fix comparing `price_unit` float values as is in `_merge_moves` Remove `price_unit` from `_prepare_merge_moves_distinct_fields` and compare it using `float_compare` as it should. Description of the issue/feature this PR addresses: Current behavior before PR: Could not merge moves with slight different price_unit value. Algorithm will not merge stock.moves with slightly different price_unit eq. `783.55 & 783.5500000000001` Desired behavior after PR is merged: stock.move.price_unit is compared correctly using float_compare --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue in Odoo Studio where removing calendar settings such as the color field could cause an error. Empty values are now handled correctly, allowing users to clear these settings without disrupting their workflow.
Original PR description
On a calendar with studio, try to remove the "color" attribute, or any other that should contain the name of a field. Before this commit there was a crash because the value sent to the server in this case is `undefined` (`null` in JSON or `None` in python), which was stringified and yielding an actual string that was not a field name After this commit, NULL values are not stringified, instead they should represent the emptiness of the attribute. opw-4938351