Wednesday, May 6, 2026
54 changes · saas-19.3
Resolved issues and error corrections
This update resolves an issue where the 'short description' field on the website slides wasn't being populated correctly when the description was blank. The fix ensures that the field is populated appropriately, maintaining consistent presentation of slide information. This improves the overall quality and accuracy of the website's slide content.
Original PR description
In the PR #246357 the code for populate_description_short was adapted wrongly. When the `vals.get('description_short', False) is False`, the description_short field won't be populated correctly.
This commit fixes the issue.
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 update adjusts the placement of editing tools (pencils) within Odoo reports. The change moves the pencil icon to the right of editable values, improving usability and making it easier for users to modify report data. All report values have been aligned for consistency.
Original PR description
The UI for editable values in reports was recently revamped. Currently, the pencil icon for editing the values is awkwardly positioned between the text and the value of a line in a report. This change moves the pencil to the right of any editable values. All report values have been shifted so that they are still right-aligned, regardless of whether they are editable or not. task-6086452
This update enhances Odoo's ability to maintain partner information offline. By optimizing how multi-ID data is handled, the system now avoids unnecessary calls to the server, allowing partner forms to remain available even when offline. This improves the user experience and data accessibility.
Original PR description
Change the multi ID Json (additional_identifiers) to avoid the rpc call on each country_code change and rely on a computed field to keep the partner form available offline. task-none
This update corrects a recent change in how Odoo handles geoIP location data. Previously, the system incorrectly favored the city database as a fallback, which is now reverted to prioritize the country database for optimal accuracy. This ensures more reliable location information is used for our users.
Original PR description
There are two geoip database: a small and fast-to-query country database, and a big but slower-to-query city database. As the City record inherits from the Country record, we can access the country…
There are two geoip database: a small and fast-to-query country database, and a big but slower-to-query city database. As the City record inherits from the Country record, we can access the country informations from the City record. In our case it means that when the ip was geolocalized against the city db, we can reuse the city record for the country informations, we don't need to query the country db. It also means that in case the country database does not exist, we can query the city database for the equivalent country information: it is slower but returns the information. In commit 06b0e0017651 we tried to simplify the code a bit, and decided to return the city database as fallback to the country database when the latter was not found/corrupt. This is wrong because if the city and country *records* are indeed compatible, the city and country *databases* are not. This commit reverts the changes that were included in the `[MOV]` commit. Reference-to: 06b0e0017651 ([MOV] core: http.router.root.geoip -> http.geoip) Forward-Port-Of: odoo/odoo#259412
This update prevents Odoo from crashing when viewing order details without a linked employee. Previously, enabling 'Log in with Employees' could cause issues. Now, the system correctly displays the user who processed the order, ensuring a smoother experience.
Original PR description
**Before this commit** When trying to open an order's details, we would crash when that order does not have an employee associated with it. This can happen when the "Log in with Employees" setting is…
**Before this commit** When trying to open an order's details, we would crash when that order does not have an employee associated with it. This can happen when the "Log in with Employees" setting is enabled after at least one order has already been processed. **After this commit** If there isn't an `employee_id` associated with an order, don't try to overwrite the "Served By" field. By default, this should allow the name of the user who processed the order to be displayed. This can be seen in the original `getOrderFields()` method on the `OrderDetailsDialog` component. https://github.com/odoo/odoo/blob/e1c81c326e370b0a7b5bc8018b151e251ebce544/addons/point_of_sale/static/src/app/screens/ticket_screen/order_details_dialog/order_details_dialog.js#L81 This commit is mostly a backport of the slight refactor in 19.3, with the added benefit of still showing the names of the users who processed orders before `pos_hr` was installed on the database. https://github.com/odoo/odoo/blob/be57b42442db8c6be219d36f8c3e07e8baf45e31/addons/pos_hr/static/src/app/screens/order_details_dialog.js#L10-L15 opw-6169880 Forward-Port-Of: odoo/odoo#261622
This update fixes a problem where the payroll system incorrectly flagged users as unauthorized document owners in multi-company environments. The fix replaces a dependent field with a stored employee flag, ensuring accurate validation during background tasks regardless of the company context. This prevents errors related to generating payroll PDFs.
Original PR description
Steps to reproduce- 1) In a multi-company environment, create an employee in a secondary company. 2) Link a Portal User to this employee via the user_id field. 3) Create and validate a payslip for…
Steps to reproduce- 1) In a multi-company environment, create an employee in a secondary company. 2) Link a Portal User to this employee via the user_id field. 3) Create and validate a payslip for this employee. 4) Run the 'Payroll: Generate pdfs' cron. Error - ValidationError: The following user(s) cannot own root documents/folders: portal_employee: Payslip - portal_employee Cause - The validation logic uses the employee_id field on res.users to check if a user is an employee. Since employee_id is a non-stored computed field, its value depends on the current company context (self.env.company). When the payroll cron runs under the OdooBot user in the default company context (ID = 1), it cannot resolve the employee_id for users belonging to other companies. The field evaluates to False, causing the system to incorrectly flag the user as an unauthorized document owner. Fix - Replace the validation check with the employee boolean field. Unlike the computed Many2one, employee is a stored field that is not restricted by the active company context. This ensures that a user's employee status is correctly identified during background tasks across all companies. opw-6143042 Co-authored by Tina Lin (liti) Forward-Port-Of: odoo/enterprise#115570
This update resolves an issue where users weren't able to save settings when GST registration was unregistered. The fix ensures the system correctly checks the GST registration status, preventing a 'Missing Required Fields' error and allowing users to configure the necessary settings.
Original PR description
**Steps to reproduce:** * Install `l10n_in` module. * Go to Accounting > Settings. * Check 'Fetch Vendor E-Invoiced Document` and clear the GST Username * Uncheck `Registered Under GST`. * Try to…
**Steps to reproduce:** * Install `l10n_in` module. * Go to Accounting > Settings. * Check 'Fetch Vendor E-Invoiced Document` and clear the GST Username * Uncheck `Registered Under GST`. * Try to modify any setting and save. **Observed behavior:** * A `Missing Required Fields` error is raised even though no visible field is missing a value. **Cause:** * The `l10n_in_gstr_gst_username` field is placed inside a `div` that is hidden when `l10n_in_is_gst_registered` is `False`. * However, its `required` condition only checked `l10n_in_gst_efiling_feature or l10n_in_fetch_vendor_edi_feature`, without accounting for `l10n_in_is_gst_registered`. * Since both features default to enabled, the field remained required even when invisible, blocking any settings save. **Fix:** * Update the `required` attribute on `l10n_in_gstr_gst_username` to include `l10n_in_is_gst_registered` as a condition, so the field is only required when the GST section is visible and either `GST E-Filing & Matching` or `Fetch Vendor E-Invoiced Document` is enabled. opw-6133001 Forward-Port-Of: odoo/enterprise#116174 Forward-Port-Of: odoo/enterprise#114423
This update optimizes the HTML editor's performance by reducing unnecessary style recalculations during update processes. Previously, the system repeatedly checked element styles, leading to slower updates. This change improves the responsiveness and speed of the HTML editor, particularly when making frequent changes.
Original PR description
Description of the issue this PR addresses: Before this PR, updateHooks retrieved the computed style for each visible element and accessed marginTop and marginBottom inside the loop. Accessing properties of CSSStyleDeclaration may trigger style resolution, causing repeated 'Recalculate Style' work during hook updates. This PR extracts marginTop and marginBottom after getComputedStyle outside the loop, which reduces style reads during hook updates and avoids unnecessary style recalculations. task-6063534 closes odoo/odoo#252385 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#259341
This update fixes a potential issue where holiday creation could fail unexpectedly. By ensuring error handling is correctly applied during the core holiday creation process, the system is now more reliable and robust. This improves the overall user experience when managing employee holidays.
Original PR description
this commit, in this PR:https://github.com/odoo/odoo/pull/242299 the create method was refactored to wrap only the _create_all_new_leave call in a try/except block, ensuring that ValidationError is caught at the correct. Task-6179171 Forward-Port-Of: odoo/odoo#262609 Forward-Port-Of: odoo/odoo#262175
This update corrects a calculation error in the Belgian payroll module (l10n_be_hr_payroll) related to determining eligible occupations for holiday attestation. The change ensures accurate hour calculations for employees, resolving a potential discrepancy in holiday entitlements. This update improves payroll accuracy and compliance.
Original PR description
. use _get_hours_per_week() method instead of calling the field on the version task-6185339 Forward-Port-Of: odoo/enterprise#115990
A test related to rental stock management was failing due to duplicate configuration settings within the demo data. This fix ensures the test runs correctly by preventing the creation of redundant 'out of stock' ribbons, maintaining data integrity.
Original PR description
Currently, running test `test_out_of_stock_ribbon_is_not_applicable_for_rentals` with demo data enabled leads to a validation error: `Only one ribbon with the "assign when out of stock" option is allowed.` This happens because, with demo data loaded, an "out of stock" ribbon is already created via XML data. The test then attempts to create another ribbon with the same configuration, triggering the constraint and causing the failure. Related PR: https://github.com/odoo/enterprise/pull/112660 runbot-[242457](https://runbot.odoo.com/odoo/error/242457) --- Forward-Port-Of: odoo/enterprise#116162
This update corrects a technical error that was preventing livechat channels with AI agents from appearing correctly to users. The fix ensures the system accurately counts agents linked to each livechat channel, resolving a visual issue. This improves the user experience for livechat functionality.
Original PR description
The number of agents linked to a livechat channel was always 0 because of a mistake in the code. This prevented livechat channels with AI agents from appearing to users. This commit fixes the problem. task-5409200 Forward-Port-Of: odoo/enterprise#114404 Forward-Port-Of: odoo/enterprise#111574
This update optimizes the way the spreadsheet component interacts with field selections, reducing unnecessary processing. Previously, a repeated process caused performance slowdowns. This change improves the overall responsiveness and efficiency of the spreadsheet feature.
Original PR description
Currently, the component `ModelFieldSelector` will call the field service on `willUpdateProps` regardless of its current state. Since the introduction of the persistent cache, there is a slight overhead when calling the fieldService (notably caused by the call to deepCopy) and this call can now become costy when called repeatedly, which occurs in the spreadsheet component for instance. Task-6185388 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#262497
This update resolves an issue where users lacking access to employee data would encounter an error when trying to view attendance records. The change corrects a technical detail related to accessing employee information, ensuring all users can access the Attendances feature. This improves usability for all employees.
Original PR description
Steps to reproduce: ---------------------------------------- - Connect with a user having no rights on Employee - Try to open Attendances - Access error Cause: ---------------------------------------- Since 218b91cad3e50b27a84624145c89ed6bb23f18c5 we read the field `is_flexible` on employee which is a field only accessible to `hr.group_hr_user` ([src](https://github.com/odoo/odoo/blob/70ade77937bfc171a3352e70c5c78bfd87ceb4d1/addons/hr/models/hr_version.py#L154)). opw-6179252 Forward-Port-Of: odoo/enterprise#116052
A minor typo in the French Profit & Loss report (P&L) has been fixed. Specifically, the term 'exceptionnel' was incorrectly using masculine form when it should be feminine to accurately reflect charges. This ensures correct reporting for French-speaking users.
Original PR description
There was a small typo in section 8 of the pnl report. "exceptionnel" must go feminine when referring to charges. Forward-Port-Of: odoo/enterprise#116198
A bug in the testing process was causing tests to fail when demo data was loaded. This was due to a duplicate IoT Box record existing in both the test setup and the demo data. This fix resolves the conflict, ensuring tests run correctly and reliably.
Original PR description
We define an IoT Box record in tests with name "Shop". Another IoT Box with this name is defined in the demo data of the module. As a result, when tests are started with demo data loaded, we tend to click on the first IoT Box record with whis name, which correspond to the one from demo data. Some tests are then failing as they can't find device record defined in the test setup. related: odoo/enterprise#96760 Forward-Port-Of: odoo/enterprise#116234
This update resolves an issue where text highlights in the website editor were incorrectly displayed in front of the text on Firefox. The fix reorders how SVG highlight elements are added to the HTML, ensuring they render behind the text as intended. This improves the visual consistency of the website editor across different browsers.
Original PR description
# How to reproduce - Go to the website editor - Select some text that wraps - Add text highlight to that text # The problem On firefox, for every line of text that wraps, the highlight is displayed in front of the text instead of behind. # Why The highlights are made of SVG's that are added to the html element of the selected text. To be sure that theses SVG's are displayed behind the text, they have position: absolute and z-index: -1. Sadly, z-index and absolute positionning in an inline context (like in a span) is a browser specific behavior and in the case of firefox, seems to sometimes be ignored. Since the SVG's are appended in the html element after the text, they are rendered after. This fix aims to insert the SVG's in the html element before the text to make sure the rendering order is correct opw-5976647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254196
This update fixes an issue where users could select customers from different companies within the Helpdesk module. The fix involved adding a restriction to the customer selection dropdown, ensuring users only see customers within their assigned company. This improves data accuracy and prevents errors when creating new support tickets.
Original PR description
Steps to reproduce: - - Create two companies (Company A and Company B) - Create one partner in each company - Enable both companies for the user - Open Helpdesk and go to the tickets Kanban view for a Company A team. - In the quick create form, the customer dropdown shows customers from Company B Issue: - - Customers from other companies are visible in the customer field, Cause: - - The partner_id field in the quick create view had no domain, so it displayed partners from all allowed companies. Solution: - - Added a domain on partner_id in the Python field. task-4971466 Forward-Port-Of: odoo/enterprise#116157 Forward-Port-Of: odoo/enterprise#111909
This update resolves a technical error preventing the import of emissions data, specifically related to journal entries. The fix restricts imports to manual emissions, ensuring data integrity and preventing database issues. This improves the reliability of our ESG reporting capabilities.
Original PR description
The import button is present in the Emitted Emissions menu, but it produces the following error: "cannot insert into view 'esg_carbon_emission_report' DETAIL: Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." => To fix this, we will only allow the insertion of manual emissions (model: other.emission) via import, not emissions related to journal entries. task-6168587 Forward-Port-Of: odoo/enterprise#116092 Forward-Port-Of: odoo/enterprise#115306
This update fixes an issue where the emission factor date range wasn't displayed accurately. The missing 'always_range' option was the root cause, now resolved to ensure correct date validation and display. This improves the reliability of ESG reporting data.
Original PR description
Before this commit, the validity period was not correctly displayed because the always_range option was missing no related task Forward-Port-Of: odoo/enterprise#115832 Forward-Port-Of: odoo/enterprise#114784
This update fixes an issue where a horizontal scrollbar obscured the bottom border of the code view when content overflowed. The change repositioned the scrollbar to ensure the border remains visible, improving the overall visual consistency and user experience of the code editor. This ensures a cleaner and more professional look for code snippets.
Original PR description
Problem: When the code view contains content that overflows horizontally, the horizontal scrollbar hides the bottom border of the code view. Solution: Move the scrollbar inside the code view so the bottom border remains visible. Before: <img width="716" height="76" alt="image" src="https://github.com/user-attachments/assets/05b16d8e-4014-488f-84d6-f4e4c0dcae23" /> After: <img width="707" height="108" alt="image" src="https://github.com/user-attachments/assets/7151e3e0-254c-4e7c-bcda-bea2d7ab2cea" /> Steps to reproduce: - Add content in the code view that overflows horizontally. - Observe that the scrollbar hides the bottom border. task-6124267 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261554
This update addresses a technical issue that caused kiosk-related tests to fail. The problem stemmed from a missing configuration setting within the Odoo system, specifically the `self_ordering_default_user_id` field. Fixing this ensures that the system can correctly load product information, resolving the access error and allowing the tests to pass.
Original PR description
pos_self_order_* = pos_self_order_bancontact_pay, pos_self_order_qfpay Some kiosk-related tests failed due to an incomplete `pos.config` setup. The `self_ordering_default_user_id` field was not configured, leading to an access error on the `account.tax` model when loading `product.product` fields and relations. --- Task: https://www.odoo.com/odoo/1737/tasks/6183108 Runbot Error: https://runbot.odoo.com/odoo/error/243051
This update resolves a bug that caused bank reconciliation balances to reset to zero after editing a bank statement move line when using multiple currencies. The fix ensures accurate balance calculations during bank reconciliation processes, improving financial reporting reliability.
Original PR description
Fixed an issue where when editing a move line for the bank reconciliation and setting the currency to a currency other than the company's currency if we edit the move line again we will find that the balance is equal to 0. task-6037835 Forward-Port-Of: odoo/enterprise#114898
This update corrects a minor issue where the 'unfold all' option was incorrectly applied during the export of aged receivable reports (like PDFs). This prevented users from seeing all relevant data in the exported reports. The fix ensures the 'unfold all' option functions as intended, providing complete report data.
Original PR description
This commit introduced a small issue: https://github.com/odoo/enterprise/commit/40484f985f511edd7ba2ae759ce63ef564bcf1f7 When exporting a report (the aged receivable in pdf for example), the option key "unfold_all" was set but shouldn't be. Forward-Port-Of: odoo/enterprise#115985
This update corrects a technical error that prevented proper sorting of partners within the Discuss feature. The fix ensures that partners with email addresses matching search terms are prioritized correctly, enhancing the functionality of this important communication tool. This resolves a previously undetected issue.
Original PR description
In Discuss, the function used to sort partners prioritizes those whose email addresses start with the search terms. However, due to an error in the programming of the corresponding condition, this check could never be true. This commit adjusts the condition so that it behaves as expected. Forward-Port-Of: odoo/odoo#262583
The Gantt view now accurately displays operation durations in hours instead of minutes. This change was triggered by a correction to a formatting issue that had been introduced previously. Users will see more precise and reliable time estimates for work orders within the Gantt view.
Original PR description
Issue ----- In the gantt view, operation duration is displayed as minutes but is actually in hours. Steps to reproduce ----- - Enable work orders - Create a product with a BoM - Add an operation with some duration on the BoM - Creation a MO for the product, confirm & plan - Open the gantt view > Duration is displayed in minutes Cause ----- Overlooked by the rework of formatter done in b764335. Value is in hours but unit is set to "minutes". https://github.com/odoo/enterprise/blob/8281fe6c830dce94ca851bf4bd5c768443721f17/mrp_workorder/static/src/mrp_workorder_gantt_renderer.js#L46-L49 ----- Ticket: opw-6109524 Forward-Port-Of: odoo/enterprise#113829
This update fixes an issue where the CustomGroupByItem dropdown in the search bar wasn't properly styled on hover. The fix ensures the dropdown items appear correctly, enhancing the user experience and visual consistency. It also restores keyboard navigation functionality for this item.
Original PR description
The CustomGroupByItem select was missing the `o-navigable` class, so the navigation system never registered it. On hover, it would not receive the `focus` class, which ensures proper styling of dropdown items. The fix also restores the ability to reach the CustomGroupByItem select with keynav. task-6108677 Forward-Port-Of: odoo/odoo#262608 Forward-Port-Of: odoo/odoo#260675
This update resolves a previously unpredictable crash in the website caused by a faulty test. The issue stemmed from how a popover component handled closing when the sidebar was closed, specifically when the component was destroyed. This ensures the website remains stable and reliable for users.
Original PR description
The goal of this commit is to fix the `test_10_website_conditional_visibility` test in the website, which has been crashing unpredictably since the dropdown patch in knowledge. This patch does not handle the case where `dropdownActiveEl` and `this.activeEl` are `undefined` because the component has already been destroyed. In our case, we have a popover that closes when the sidebar closes, triggered by clicking the “save” button. error-243073 Forward-Port-Of: odoo/enterprise#115316
This update resolves an issue where manufacturing orders incorrectly flagged missing components, leading to unnecessary consumption alerts. The fix ensures that component compatibility with the specific product variant is now checked before triggering consumption issues, streamlining the production process and preventing false alerts. This improves order accuracy and reduces manual intervention.
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- Variant: Color -> Red & Blue
- BoM: -Components: - C1: apply on variant Blue - C2: apply on all variant
- Create a manufacturing order to produce one P1 red
- only the move raw C2 is created -> expected behavior
- Confirm the MO
- Try to validate the production
Problem:
A consumption issues is triggered to indicate that C1 is missing
Explication:
When confirming a manufacturing order, we checks if some BoM components are missing and may trigger a consumption issue.
However, the check was done on all BoM lines of the exploded BoM, without verifying whether the component was compatible with the variant being produced.
As a result, a consumption issue could be raised even when the missing component was not supposed to be consumed for the selected variant.
opw-6062762
Forward-Port-Of: odoo/odoo#256655This update resolves an issue preventing non-admin internal users from accessing website imports. The fix grants read-only access to the relevant data model, ensuring the website generator systray functions correctly without causing errors. This improves the usability of the website import process for all users.
Original PR description
Steps to reproduce: =================== 1. On a 19.1, launch a website import as admin 2. Log in as a non-admin internal user => AccessError on website_generator.request Cause: ====== The website generator systray polls `website_generator.request` on every page load: https://github.com/odoo/enterprise/blob/0226ad15abc8db70f8e379fddec3d83d15749c85/website_generator/static/src/systray_items/generator_request.js#L48 Only `base.group_system` had access on the model, so any non-admin user hit an AccessError as soon as an import request existed (session_info sets show_scraper_systray=True for everyone based on the last request's notified flag). Solution: ========= Grant read-only access to `base.group_user`; writes/creates stay restricted to system so the import flow itself is unchanged. => Systray loads silently, shows status indicator opw-6092411 Forward-Port-Of: odoo/enterprise#114879
This update prevents users without posting permissions from dragging and dropping files into the chatter window. Previously, this allowed users to upload attachments even if they couldn't contribute to the conversation. This change improves security and usability by restricting file uploads to authorized users.
Original PR description
This commit disables the drag&drop of files into the chatter if the user cannot post on the thread. Part of task-6071789 PR enterprise: https://github.com/odoo/enterprise/pull/115658 Forward-Port-Of: odoo/odoo#262018
This update fixes a minor issue where the 'attach file' button wasn't appearing correctly in the email preview for enterprise users. The change ensures the button is enabled only after the email thread has fully loaded, resulting in a smoother and more reliable user experience. This improves the functionality of the email module.
Original PR description
Wait for the attach file button to be enabled, meaning that the thread is loaded. PR community: https://github.com/odoo/odoo/pull/262018 Forward-Port-Of: odoo/enterprise#115658
This update resolves a test failure related to tour completion, specifically when users interact with form views. The fix ensures all popup closures are processed before the tour ends, preventing inconsistencies and improving test reliability. This ultimately contributes to more stable software.
Original PR description
**Issue** Currently, there is an async issue with the test `test_shop_floor_disable_serial_create`that may fail with the following error: "Tour finished with a dirty form view being open. Dirty form views are automatically saved when the page is closed, which leads to stray network requests and inconsistencies." **Cause** Although the tour explicitly closes all popups, the last click on the discard button may not be processed before the tour ends: https://github.com/odoo/enterprise/blob/859e65e8c267701bb19dbff9d24a8c80774dbaa6/mrp_workorder/static/tests/tours/tour_shopfloor.js#L332-L333 runbot-242504 Forward-Port-Of: odoo/enterprise#114367
This update fixes a problem where the softphone tour wouldn't function correctly after opening for the first time. The change ensures the correct tab is displayed and prevents errors during user interactions like searching. This improves the overall user experience for new softphone users.
Original PR description
Commit [1] made the softphone to show recent tab when there are missed calls. Commit [2] changed the demo data to contain 1 missed call. As a result, now when you open the softphone for the first time, you will see recent tab instead of the keypad tab before. This causes issues when a tour starts with switching to, for example, contacts tab, and then do a search for something immediatly. This is because that `input[id='o-voip-Tab-searchInput']` can be found on both recent and contacts tab. It can happen that we do the search before the dom change finished. To avoid that, we add extra check to make sure we have changed to the tab we want. [1]: c995b7df3fc6ff541dc65d8b28661ab03f4a8c08 [2]: f16faa029220ca7152289180c4de78783bab03be
This update resolves an issue where a delay in website navigation elements (specifically dropdown menus) caused unexpected behavior and test failures. By ensuring the menu fully renders before other actions are taken, the system now provides a more reliable and consistent user experience. This improves overall website stability.
Original PR description
[FIX] website: wait for extra menu to fully render before continuing When clicking on the extra menu item, a Bootstrap dropdown is displayed with a transition. Because this transition takes time, it can lead to undeterministic behavior especially in tests. For example, if a tour clicks on the extra menu item and then clicks on the "Site" button in the navbar, the dropdown transition may still be in progress. This can cause the "Site" dropdown to close prematurely. runbot-240955 Forward-Port-Of: odoo/odoo#262660 Forward-Port-Of: odoo/odoo#261179
This update resolves an issue preventing tours for the purchase and stock modules in the community version of Odoo. The fix leverages an existing utility function to ensure tours correctly launch, regardless of whether the enterprise version is installed. This improves the user experience for all Odoo users.
Original PR description
The tours: - `test_basic_purchase_flow_with_minimal_access_rights` - `test_basic_stock_flow_with_minimal_access_rights` fail to perform the first step if enterprise is not in the addons path since the app icons are not in the the main view. Fortunately, a general util is already present to perform the task of opening the app in both community and enterprise builds: https://github.com/odoo/odoo/blob/e258de4235b4872e0427017e22b46495080c25dc/addons/web_tour/static/src/tour_utils.js#L81-L101 https://github.com/odoo/odoo/blob/e258de4235b4872e0427017e22b46495080c25dc/addons/web_tour/static/src/tour_utils.js#L36-L43 runbot-240934 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262559
This update corrects a previous issue where HR version searches weren't accurately filtering by start and end dates. The fix ensures searches using date ranges now correctly target the intended date fields, leading to more precise and reliable version searches. This improves the accuracy of HR data retrieval.
Original PR description
Previously, the searches defaulted to delegating the search to the contract_date_start/end fields instead of mapping to the actual computes of date_start and date_end, which caused incorrect results when searching for versions with a specified date_start or date_end. This PR fixes this by implementing the search method on date_start and date_end to correctly map the search to the expected values for date_start and date_end. Task-6067139 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#256581
This update corrects a previous issue where payslips were incorrectly referencing contract dates instead of the correct version dates. The fix ensures payslips accurately reflect the version of the contract being processed, resolving potential discrepancies in payroll reporting. This improvement was enabled by a related update to Odoo's search functionality.
Original PR description
Prior to this commit, the version domain on payslips only looked at the contract dates rather than the version's dates. The domain was fixed in this commit to limit the domain based on the version's dates instead, and this was allowed after the searches on the version date_start and date_end fields were fixed in the odoo/odoo#256581. task-6067139 Forward-Port-Of: odoo/enterprise#113818
This update removes the Tailscale IP address from the IoT box status screen. This simplifies the display for users and ensures accurate reporting of network connectivity. The change addresses a minor technical detail related to interface detection.
Original PR description
This PR removes tailscale ip address from iot box status screen. ``` >>> netifaces.interfaces() ['lo', 'eth0', 'wlan0', 'tailscale0'] ``` The 'tailscale0' interface will now be ignored Forward-Port-Of: odoo/odoo#242796
This update resolves an issue where invoices sent via Peppol were failing for customers in Iceland and Albania. The change ensures that VAT numbers for these countries retain their country code prefix, allowing invoices to be successfully transmitted. This improves compatibility with Peppol and avoids invoice sending errors.
Original PR description
Current behavior before PR: To send an invoice via Peppol, the customer's VAT must have the country code as a prefix. But while creating customers from countries like Iceland and Albania, It removes the country code prefix. Which later raises an error while sending the invoice that "The VAT of the customer should be prefixed with its country code." Desired behavior after PR is merged: VAT numbers for customers in Iceland and Albania now keep their country code prefix, letting users to send invoices via Peppol. task-6050791 Forward-Port-Of: odoo/odoo#259105
This update corrects a technical issue that caused a traceback error when users removed the Unit of Measure (UOM) from a sales order line. The fix prevents unnecessary calculations related to discounts, ensuring smoother operation when managing UOM settings on sales orders. This improves overall system stability and user experience.
Original PR description
Issue: --- Due to this issue, there is a TB when you try to remove uom. Steps to reproduce: 1- Create a SO and add a line. 2- On SOL, remove uom. You get a traceback. This is because of `ensure_one` here: https://github.com/odoo/odoo/blob/saas-18.4/addons/product/models/product_pricelist_item.py#L588 We can prevent the discount compute on the line which is causing the `compute_price`, when uom is not set. opw-6144426 Forward-Port-Of: odoo/odoo#262266
This update resolves a technical problem that prevented the 'l10n_tr_nilvera_edispatch' module from installing correctly. The change ensures a necessary dependency, 'stock_account', is automatically installed, preventing an error related to missing configuration data. This ensures the module functions as intended.
Original PR description
Issue: currently, the module `l10n_tr_nilvera_edispatch` depends on `l10n_tr_nilvera_einvoice` and `stock`. and in `l10n_tr_nilvera_einvoice` , it eventually gets `account` in its dependencies [from…
Issue: currently, the module `l10n_tr_nilvera_edispatch` depends on `l10n_tr_nilvera_einvoice` and `stock`. and in `l10n_tr_nilvera_einvoice` , it eventually gets `account` in its dependencies [from dependency chain]. So `stock` and `account` both are installed, and ideally `stock_account` is also installed since it is set to `auto_install: True`. but if we try to install edispatch module with `--skip-auto-install` the module installation fails, because we skip auto install modules and `stock_account` is not installed, due to this, `country_code` field defined in `stock_account` module and used in `l10n_tr_nilvera_edispatch` module is not found which causes error. Solution: This PR fixes this issue by updating dependency from `stock` to `stock_account` to make sure it is installed in all conditions. Related runbot error: https://runbot.odoo.com/odoo/runbot.build.error/238909 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262721
This update resolves a recurring issue that caused the Gantt chart's edge scrolling tests to fail intermittently. The fix ensures the test accurately identifies and interacts with the chart elements, improving overall stability and reliability. This prevents potential disruptions for users relying on the Gantt chart functionality.
Original PR description
This commit resolves intermittent flakiness in the Gantt side panel edge scrolling tests. Previously, the test could fail because the target pill element would occasionally become unbound (detached from the DOM) following the unsuccessful drag-and-drop sequence. The test logic has been updated to ensure the element reference is re-queried appropriately. runbot-error-243446
This update fixes a bug that prevented users from assigning recruiters to job positions when the hr_payroll module wasn't installed. The fix ensures the necessary data is always available, preventing an error message and improving the user experience. This change ensures consistent functionality across different Odoo configurations.
Original PR description
**Steps to Reproduce:** 1. Ensure hr_payroll module is NOT installed 2. Open a Job Position in hr_recruitment app 3. Click on "Assign Recruiter" button for a position without a recruiter 4. Observe error: "Name 'company_id' is not defined" **Bug Cause:** The interviewer_ids field on hr.job uses a string domain that references company_id. Since company_id is not available in the current view without hr_payroll it fails. **Solution:** Add `<field name="company_id"/>` to the hr_job_kanban view to ensure the field is consistently available for domain evaluation regardless of other installed modules. **Task:** 6106143 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#259305
This update fixes a potential issue where multiple sign actions within a single transaction could incorrectly assign the same roles, leading to data inconsistencies. The change adds a check during the transaction to ensure unique role assignments, preventing conflicts and maintaining data integrity. A new test has been implemented to verify this fix.
Original PR description
Before this commit, creating multiple server actions for the Sign app in a single transaction (e.g., when saving an Automation Rule with multiple nested actions) bypassed the `_check_sign_template_conflicts` constraint. Because the constraint only queried the database for existing links, it failed to detect conflicts within the in-memory batch, allowing the save to succeed and causing silent role overrides. This commit introduces an intra-batch check to the constraint. By tracking requested roles in memory during the loop, the constraint now correctly raises a ValidationError if multiple actions in the same transaction attempt to automate the exact same template roles. A test has been added to ensure batch creations are properly validated. Task: 6128909 Forward-Port-Of: odoo/enterprise#115062
This update resolves an issue where multiple users were incorrectly added to Whatsapp discussion channels after a message was sent. The fix ensures that only the user who initiated the conversation is added, preventing unnecessary notifications and channel clutter. This improves the user experience and channel management efficiency.
Original PR description
…ser sends a template message when creating discussion channels after the partner sends a message back. Issue: Currently, When there are multiple users listed under whatsapp.account.notify_user_ids no matter what, when creating a new discuss channel it will add all users in that list. Even when a single user inside that list initiated the conversation with a template. To replicate in runbot add multiple users to whatsapp.account.notify_user_ids, make a partner with a number, send a template, then have the partner send a message back. All users will be notified and added to the channel. There was an unformatted number being passed to a function that required the formatted number. This caused _find_active_channel to find 0 active channels. Fix: Format the number received from the message values inside WhatsAppAccount._process_messages opw-5349138 Forward-Port-Of: odoo/enterprise#114912 Forward-Port-Of: odoo/enterprise#102452
This update fixes a bug where users could accidentally add text within image-only gallery items (like banners and image walls). The change prevents users from directly editing the content within these galleries, ensuring they display only images as intended. This improves the visual consistency and stability of website designs.
Original PR description
Some image items are supposed to not contain any extra content. Grid image items and `s_image_gallery`'s images are such images. Grid image-only items are actually `contenteditable`. This makes it possible to replace the image with text. A similar issue exists for images inside `s_image_gallery` blocks. This commit makes such items non-editable, while keeping the media inside it replaceable. Steps to reproduce: - Drop a Banner block - Select an image - Type something => Image was replaced with text - Drop an Image Wall - Select an Image - Type something => Image was replaced with text task-5436148 Forward-Port-Of: odoo/odoo#258018
This update fixes a discrepancy in the calculation of canteen costs within the payroll module for employees without worked day data. By adding a simulation context, the system now accurately reflects canteen cost eligibility, ensuring correct payroll calculations. This improves the accuracy of employee compensation reporting.
Original PR description
We add simulation context in the canteen cost condition, since we dont have worked day lines in that case Forward-Port-Of: odoo/enterprise#113907
This update resolves an issue that prevented the `sale_stock` and `purchase_stock` modules from installing correctly on databases with existing sale or purchase orders that included non-stock items like downpayments. The fix filters out these problematic lines during the installation process, preventing a software error and ensuring smooth module installation.
Original PR description
## Summary When installing `sale_stock` or `purchase_stock` module on a database that already has sale/purchase orders with non-stock lines (downpayments, section notes), the installation fails with:…
## Summary
When installing `sale_stock` or `purchase_stock` module on a database that already has sale/purchase orders with non-stock lines (downpayments, section notes), the installation fails with:
ValueError: Expected singleton: uom.uom()
## Root Cause
The `post_init_hook` (`_create_pickings_for_open_sale_orders` / `_create_pickings_for_open_purchase_orders`) filters order lines to create pickings:
```python
empty_lines = open_sale_orders.order_line.filtered(
lambda l: l.product_uom_id.is_zero(l.qty_delivered)
)
```
This accesses product_uom_id without checking if it exists. Lines with:
- display_type set (sections, notes)
- is_downpayment = True (downpayments)
...don't have a product_id or product_uom_id, causing the error.
Fix
Add filters to skip non-stock lines before accessing product_uom_id:
```
empty_lines = open_sale_orders.order_line.filtered(
lambda l: not l.display_type and not l.is_downpayment and l.product_uom_id.is_zero(l.qty_delivered)
)
```
Steps to Reproduce
1. Create a fresh database (without sale_stock/purchase_stock)
2. Create a sale order with a downpayment line or section/note
3. Install sale_stock module
4. Error: ValueError: Expected singleton: uom.uom()
Reproduction Reference
- purchase_stock issue: https://drive.google.com/file/d/1aKw-ago-pMds_-x_y9f8nJZyZsLqGJ67/view?usp=sharing
- sale_stock issue: https://drive.google.com/file/d/1I9fY8UZZZ3ULcairl3YGZTi_KttsYLNR/view?usp=sharing
opw-6179073
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#262625
Forward-Port-Of: odoo/odoo#262439This update resolves an issue where the inheritance in the marketing card event views was incorrectly referencing a related module. The fix ensures the correct view inheritance is applied, improving the stability and functionality of marketing event management within Odoo. This change ensures proper display and interaction with marketing event cards.
Original PR description
Technically, mass_mailing_event is not in marketing_card_event deps. Moreover the inherit refers to event form view. runbot-242493
This update resolves an issue preventing tests using the 'pos_admin' user from running correctly. The change adjusts user group permissions to ensure the 'pos_admin' test user has the necessary internal access, allowing for proper testing of the Point of Sale module. This ensures continued functionality and stability of the POS system.
Original PR description
Tests using `login=pos_admin` were no longer starting properly because `/pos/ui` was returning a 404 error. This happened because `pos_admin` was no longer an internal user. The issue was introduced when `stock.group_stock_user` was removed from the implied groups of `point_of_sale.group_pos_manager`. Since `stock.group_stock_user` implies `base.group_user`, `point_of_sale.group_pos_manager` no longer granted internal user access. To fix this, `base.group_user` is now added directly to the implied groups of `point_of_sale.group_pos_manager`. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6193752 PR introducing the bug: https://github.com/odoo/odoo/pull/241368/changes#diff-04860a18d18ef0dc2ebfcd974fafc0b886b6b1e8094a333a7c107b3cdc2301b2
This update resolves a test failure related to the ESG report by adjusting the data used in the tests. Specifically, the report's date range and associated records were set to an ancient date to prevent interference from demo data. This ensures the ESG report tests run reliably.
Original PR description
There was an issue when setting in draft all the account moves of the test DB before running the ESG report tests. In that process, some account moves were actually removed, which results in a 'Not found' record error. As the ESG report searches for all the account moves given a period (in all companies of the DB), some demo data could make the test to fail. We handle that issue by changing the date of the report and the related records to a very ancient date, to ensure that no external data will disturb the test. We also make that change for tests related to the HR part of the ESG report. runbot-error: https://runbot.odoo.com/odoo/runbot.build.error/242321
This update corrects a visual issue in the accounting reports where the last column's data was partially cut off when scrolling. The fix adds bottom padding to the report, ensuring all data is fully visible and readable. This improves the clarity and usability of the accounting reports for users.
Original PR description
Before this commit, there was no bottom padding in the accounting reports, which caused the last column’s values to appear partially cut off when scrolling to the bottom. This issue started occurring after the PR: https://github.com/odoo/enterprise/pull/99198 opw-6130981 **Before fix (runbot)** <img width="1920" height="1005" alt="image" src="https://github.com/user-attachments/assets/808bbb2b-3b4e-4b5c-a872-b8bd7bf589ba" /> **After fix:** <img width="1917" height="1006" alt="image" src="https://github.com/user-attachments/assets/55f04e1f-0469-46e1-af69-f5055a7232d9" /> Forward-Port-Of: odoo/enterprise#116329 Forward-Port-Of: odoo/enterprise#116168
This update resolves an issue where a key in the purchase order suggestion process was incorrectly formatted, leading to potential errors. The fix ensures the correct key is used, improving the reliability of the purchase order suggestion feature. This change ensures accurate data processing within the purchase order workflow.
Original PR description
Issue: - `_editSuggestContext` sends `sectionId` in the context, but `action_purchase_order_suggest` expects the key to be `section_id`. Fix: - Update the `_editSuggestContext` to send the correct context key, `section_id`. Forward-Port-Of: odoo/odoo#261930