Thursday, October 2, 2025
30 changes · master
Resolved issues and error corrections
This fixes a purchase stock test so it remains reliable when country-specific modules change default product settings. It helps prevent false test failures and keeps purchase receipt validation checks consistent across installations.
Original PR description
The test `test_receive_negative_quantity` is failing when run with the `l10n_ke` module installed. The failure occurs during the validation of the picking created from a negative-quantity purchase…
The test `test_receive_negative_quantity` is failing when run with the `l10n_ke` module installed. The failure occurs during the validation of the picking created from a negative-quantity purchase order. The test assumes the product is of type `consu`, which bypasses stock reservation. However, the following [XML default](https://github.com/odoo/enterprise/blob/17.0/l10n_ke_edi_oscu_stock/data/ir_default.xml#L5) in l10n_ke forces the product type to `product` (stockable), triggering reservation logic. Since the ordered quantity is negative, no reservation occurs, and the `_sanity_check()` fails with: `You cannot validate a transfer if no quantities are reserved.` We fix this by explicitly setting a product with the type `consu` in the test. This ensures that reservation is skipped regardless of which modules are installed or what defaults they apply. runbot:[108147](https://runbot.odoo.com/odoo/error/108147) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228583 Forward-Port-Of: odoo/odoo#221042
The purchase product catalog no longer performs the same loading request twice when opened with suggestions turned off. This improves the user experience by reducing unnecessary waiting and makes automated checks more reliable.
Original PR description
Removes double web_search_read on product catalog, which was bad UX and causing tour non determinism. BEFORE: useEffect is trigger on first mount (as well as state changes), causing double load on catalog open (even with suggest OFF) NOW: Remove useEffect removes double load on catalog open if suggest is OFF (other double load issues on filter changes being worked on here odoo/odoo#225721 with other approach). task#4783508 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228332
This update adjusts an internal sales test so it uses the configured sale confirmation email template instead of assuming a fixed one. This helps ensure the test reflects real configuration behavior and reduces the risk of future false failures.
Original PR description
The email template for the sale confirmation can be changed through the config parameters so it's better to read it directly from there instead of having it hard-coded. This now correctly tests the function it's testing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226240
After DIOT 2025 rework in 4e6bee49e98b055e5aebe89fb19ab6317003b682 the report is missing some es translations Steps to reproduce: - With an MX Company and Spanish es_419 language set - Open Accounting > Reporting > Tax Report - Choose report Diot MX opw-5016650 Forward-Port-Of: odoo/odoo#229132 Forward-Port-Of: odoo/odoo#229085
Original PR description
After DIOT 2025 rework in 4e6bee49e98b055e5aebe89fb19ab6317003b682 the report is missing some es translations Steps to reproduce: - With an MX Company and Spanish es_419 language set - Open Accounting > Reporting > Tax Report - Choose report Diot MX opw-5016650 Forward-Port-Of: odoo/odoo#229132 Forward-Port-Of: odoo/odoo#229085
The chatter follower menu now stays open after removing a follower, making it easier to remove several followers in one session. The subscription editing option now closes the menu consistently, reducing confusion for users.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ Removing multiple followers from the chatter is cumbersome because the followers dropdown closes immediately after each removal. Additionally, clicking 'Edit Subscription' next to 'Unfollow' did not close the dropdown, which was inconsistent with expected behavior. **Current behavior before PR:** --------------------------------- - Removing a follower from the chatter closes the followers dropdown immediately - Clicking 'Edit Subscription' next to 'Unfollow' leaves the dropdown open **Desired behavior after PR is merged:** ----------------------------------------- - The followers dropdown remains open after removing a follower, allowing multiple removals without interruption - Clicking 'Edit Subscription' next to 'Unfollow' closes the dropdown as expected **Task:** 4943867 Forward-Port-Of: odoo/odoo#222154
The website editor now handles invalid progress bar number entries safely instead of showing an error. This improves reliability for users editing website content and prevents confusing percentage displays like duplicate percent signs.
Original PR description
Before this commit, putting an invalid input in the progressbar value would lead to a traceback. Moreover, the input could display "0%%" (one being in the input, the other being the displayed unit). This commit solves this issue by defining a saveUnit for the input and using the defaultValue when an input is invalid. Forward-Port-Of: odoo/odoo#227249
The web test runner now classifies errors and warnings more accurately, so important problems are surfaced without unnecessarily stopping normal test runs. This helps Odoo teams catch hidden test failures earlier while reducing false interruptions during automated checks.
Original PR description
This commit associates separate "issue levels" to the test runner's internal logger. These affect the logging and reporting of issues, i.e. errors and warnings: - suppressed (by 'test.todo'): issues are traced in the console but not reported in test results; - trace (default in test runs): issues are traced in the console and reported in test results; - global: issues are warned/errored in the console with "HOOT" prefix (i.e. won't interrupt the test run); - critical (default outside of test runs): issues are warned/errored in the console without "HOOT" prefix, thus interrupting the whole test run. This fix should hopefully solve errors that were too quiet before test run, or too "important" during the run. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228836 Forward-Port-Of: odoo/odoo#228674
Opening Time Off from an employee profile no longer triggers a missing record error. The change ensures the Time Off view uses the correct employee context, preventing disruption for users managing their leave from their profile.
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
The update corrects how delivery provider module views are ordered so they do not replace the standard Apps list by default. This restores important module details such as name, author, website, and version for users browsing apps.
Original PR description
This commit* introduced a new views for delivery provider modules, list and kanban. The new views are meant to target only this particular delivery provider view. But, since the priority of the list view is not defined, the default order (with the name) makes it used before the classic list view for modules in Apps. This has the effect to hide a few fields (name, author, website and version). This commit adds a priority to this list view such that it is not used by default to list ir.module.module records. A priority is also defined on the kanban view to avoid this issue to affect kanban view if anyone ever changes its name. *: https://github.com/odoo/odoo/commit/b798db1b2faa0e437baa4fc524821ec324136aff Forward-Port-Of: odoo/odoo#229400
Employee resumes now skip the job title line when no job title is set. This prevents a confusing "False" entry from appearing and keeps employee profiles cleaner and more professional.
Original PR description
If an employee doesn't have a job title set on his profile, the resume shows "False" line. The logic has been adjusted to skip the line in case the employee doesn't have a job title Forward-Port-Of: odoo/odoo#227945
The vehicle overview now correctly opens the related contracts from the kanban card button. This helps fleet managers access contract information reliably without extra navigation or confusion.
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
The recruitment application button now opens the same set of related applications that users see in the displayed application count. This prevents recruiters from seeing a count that does not match the applications list, reducing confusion when reviewing talent records.
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
Fixes an issue in the HTML editor where selecting only a space and applying a font color caused the color picker to close unexpectedly. Users can now format spaces consistently with surrounding text, improving editing reliability for styled content.
Original PR description
Problem: When trying to apply font color on a space, the color picker suddenly closes. Solution: Allow adding styles on space characters. Steps to reproduce: 1. Add text "A B". 2. Select the space only. 3. Try to change font color. 4. Observe that the color picker suddenly dismisses. task-5111480 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228724
Mobile users will now see the dashboard favorite star update immediately when they tap it. This fixes a confusing display issue where the icon looked unchanged until the user tapped elsewhere, making favorites clearer and more reliable.
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#229605 Forward-Port-Of: odoo/odoo#227663
Fixes an issue where the color picker closed unexpectedly when users previewed a background color for a table cell in the HTML editor. This makes table formatting smoother and prevents interruption while choosing cell colors.
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
Website editors can now use the "On Hover" animation option on images that have decorative shapes applied. The option is only hidden when the selected shape already includes its own animation, preventing conflicts 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 adds sorting support to spreadsheet test helpers, making automated checks more consistent with expected spreadsheet behavior. It is an internal fix that helps developers validate spreadsheet features more reliably without changing the user experience.
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 saving an editing snapshot could fail when the document contained content that the editor was intentionally not tracking. Users should experience more reliable undo/history behavior in affected editing areas.
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. Forward-Port-Of: odoo/odoo#229550
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