Saturday, August 29, 2026
42 changes · master
Enhancements to existing features
This change speeds up internal database column lookups by replacing a slower generic system view with a leaner query that fetches only the needed details. It can reduce time spent on these checks during operations such as upgrades, improving overall performance without changing user-facing features.
Original PR description
Using the view `information_schema.columns` is slow compared to a simplified query using PG catalog tables. Here we propose to cherry pick the parts of the view that we actually use. Below we show…
Using the view `information_schema.columns` is slow compared to a simplified query using PG catalog tables. Here we propose to cherry pick the parts of the view that we actually use.
Below we show the timings of both queries as reported by the system on an upgrade 18->master with a runbot DB (many modules installed). All values are in milliseconds.
```
Original:
min: 0.931
max: 16.786
mean: 1.8790601284296555
sum: 25750.64
len: 13704
New:
min: 0.224
max: 11.832
mean: 0.8649024372446001
sum: 11852.623
len: 13704
```
Total time spent in queries was halved as seen in the `sum` statistic above.
Technically, the new queries are base on the original information schema view definition as returned by `\d+ information_schema.columns`. With all unused info removed.
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#285419
Forward-Port-Of: odoo/odoo#216309Odoo now uses a dedicated backend icon font and standard icon codes from Google, reducing unnecessary file changes when icons are updated. This makes maintenance simpler and slightly reduces font sizes loaded by browsers, while preserving backend rendering for reports and emails.
Original PR description
[IMP] web, html_editor, mail: add backend-only Material Symbols font --- __Before commit__ Every time a new icon was added, a large part of `material_symbols_pua_codepoints.py` was overwritten. This…
[IMP] web, html_editor, mail: add backend-only Material Symbols font --- __Before commit__ Every time a new icon was added, a large part of `material_symbols_pua_codepoints.py` was overwritten. This happened because `generate_icons.py` assigned new PUA codepoints to every icon each time it ran. Google already assigns predefined codepoints to these icons, which are included in `material_symbols_outlined_subset.woff2` but were previously unused. __After commit__ The font `material_symbols_backend.woff` is introduced for backend-only usage, such as report generation and backend mail icon rendering. It replaces the per-style WOFF1 files and the PUA-only font. The standard codepoints from Google are now used for the icons. We still need to assign custom codepoints to filled icon variants because they are separate icons in the optimized version. We do this by adding an offset of 0x100000 (using a bitwise AND of 0xFFFF for edge cases to remain within the standard Plane-16 Private Use Area). __Benefits__ - Adding a new icon produces a significantly smaller diff. - A single WOFF1 replaces the two per-style ones, and is the only format both backend consumers can read: wkhtmltopdf cannot parse WOFF2, and Pillow needs the codepoints in the cmap. - Existing codepoints are removed from WOFF2 files, making fonts fetched by browsers a few kB lighter.
The Automatic Check-Out settings in Attendance are easier to understand and configure. Time-based options now look and appear closer to their related choices, reducing confusion when setting employee check-out rules.
Original PR description
The Specific Time option was introduced for Automatic Check-Out, but its field visually resembles a duration field rather than a specific time. This updates the Specific Time field to match the UI used for similar fields in Time Off, positions the Tolerance and Specific Time fields next to their corresponding radio options, and displays the fields of unselected options in light grey. Task-6476495 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now stores attachment file names directly with the uploaded file instead of in separate fields. This reduces duplicate data behind the scenes while keeping document uploads and downloads working as expected for users.
Original PR description
```py bin = fields.Binary() bin_filename = fields.Char() # removed ``` File name is now defined in side the `bin` field. Remove most of these fields as the filename is part of the binary field now. https://github.com/odoo/enterprise/pull/129066 https://github.com/odoo/upgrade/pull/11124 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds missing automated checks for timesheet reporting, billing, attendance comparisons, printable reports, and employee deletion safeguards. It helps ensure existing timesheet features continue to work correctly and reduces the risk of regressions in payroll, billing, and project reporting workflows.
Original PR description
* = hr_timesheet_attendance, sale_timesheet Add tests for timesheet features introduced by previous tasks and left uncovered: - measures of the timesheets analysis report: billable and non-billable time, revenues and margin (task-2783955), and the revenues of each type of service (task-3368808) - timesheets of a project billed manually, without any sales order item (task-3565762) - timesheets, attendance and difference costs of the timesheets/attendance analysis report (task-2782768) - 'Timesheets' printable report of a selection of timesheets, of a task, of a project, of a sales order and of an invoice (task-2826265) - employee delete wizard, which refuses to delete an employee having timesheets and offers to archive them instead (task-2938632)
The view switcher now uses a visible light grey hover effect instead of a barely noticeable white overlay. This makes it easier for users to see which view option they are pointing at, improving everyday navigation clarity.
Original PR description
This PR updates the `:hover` state for the view switcher component, which was previously using white with an opacity, which was not visible. Instead, reuse the same approach as dark mode and use a lighter shade of grey. task-6512176
A new warning is shown in the Belgian payroll holiday attest form to remind users that changes are only saved when the main employee form is saved. This helps prevent users from accidentally losing holiday attest information entered in the sub-form.
Original PR description
Since the holiday attest dialog is a sub-form, it will only save if the main employee form is saved. To alert users, we created a new warning that appears next to the constraints in the holiday attest form. Task Id: 6482500
Sales Order payment links no longer track a maximum payment amount, aligning subscriptions with the updated payment behavior. This removes an unnecessary warning path and keeps related tests in sync, with minimal impact for users.
Original PR description
Removed the `amount_max` field from the payment link feature as it is no longer needed after removing payment amount restrictions on Sales Order payment links. The field was previously only used to display an alert when the payment amount exceeded the allowed maximum. Updated the tests accordingly. Task-6238148 For Community PR see : https://github.com/odoo/odoo/pull/268214 For Upgrade PR see : https://github.com/odoo/upgrade/pull/10818
This update adds missing automated checks for several timesheet workflows, including grid behavior, validation views, helpdesk ticket reports, and planning profitability measures. It helps ensure existing timesheet features remain reliable while also removing unused legacy code that no longer supports active workflows.
Original PR description
* = helpdesk_timesheet, project_timesheet_forecast_sale Add tests for timesheet features introduced by previous tasks and left uncovered: - filters of the timesheets search view: My Team, My Department, My Projects, My Tasks, Draft and Validated - rows of the grid view sorted alphabetically (task-3610476) - empty lines added in the grid view for the entries of the previous period (task-3077292) - redirection to the form view when a grid row holds too little data to create a timesheet (task-3602605) - 'To Validate' grid view opening on the previous period (task-3893907) - measures of the planning & timesheets analysis report: planned and effective costs, revenues, margins and billable time (task-2849291) - 'Timesheets' printable report of a helpdesk ticket (task-2826265)
Resolved issues and error corrections
This fix keeps the appointment page controls properly sized when editing the website, preventing a dropdown button from appearing squeezed. It also hides an unnecessary loading indicator in editor mode, making the page easier and cleaner to configure.
Original PR description
Introduced in [1], and in a series of related changes, the time selection page has been reworked to be managed more from the JS, using the Interaction benefits. The entity selection is now a custom dropdown, handled in the JS. When editing the page with the website editor, the button is squashed, because no content is rendered inside. This is not the case for other ones as either a select element, either have a t-out dynamic content that will still instanciate some content at loading. Therefore, instead of meddling with a complex JS, add some simple styling to make sure the element has a consistent height. Also, hide the loader when editing the page in a similar way. [1] odoo/enterprise@a5712d284a87af7530f186ecad765d2cfaf1f9d2 Task-6482389 Forward-Port-Of: odoo/enterprise#129646
Features or functions removed from Odoo
This update removes separate filename fields that are no longer needed when handling uploaded files across payroll, employee documents, and related reports. It simplifies forms and report records while keeping the actual file attachments available, reducing clutter and maintenance overhead for users and administrators.
Code cleanup and technical improvements
This update simplifies internal website tour testing utilities by removing redundant waiting steps and an unused helper. It should make automated tests easier to maintain without changing how users experience Odoo.
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
Miscellaneous changes
Related: https://github.com/odoo/enterprise/pull/129706
Original PR description
Related: https://github.com/odoo/enterprise/pull/129706
Related: https://github.com/odoo/odoo/pull/285307
This fixes an issue where color labels used outside the color picker could lose their intended styling, such as resource colors in Planning configuration. The change makes color styling consistent across screens and display modes, improving visual clarity for users.
Original PR description
The `o_colorlist_item_color_*` classes were scoped to `.o_colorlist > button` by 1aa9b957afdd , but they are also used standalone outside any colorlist, e.g. in Planning's `many2one_avatar_resource` field. `web_enterprise`'s dark-mode counterpart also defines them unscoped, so the two stylesheets disagreed. Move the color rules back to the root scope. The colors themselves and the `color-contrast()` text color introduced by the refactoring are kept. Steps to reproduce: - Go to "Planning" - Open "Configuration" => the resources in the "Resources" column. 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#283821 Forward-Port-Of: odoo/odoo#283232
This update fixes a failing automated guided test for the Knowledge calendar by switching it to the newer standard text entry method. It helps keep quality checks reliable and removes reliance on an outdated helper that is no longer used.
Original PR description
[Related PR 1] modified `editSelectMenuInput` to use the standard 'edit' action instead of a custom action, and moved several tours off of the helper function, but missed the knowledge calendar tour. In combination with [Related PR 2] which changed the conditions of editing a select input to not include the intial 'click' action, causes this tour to now fail to properly input the text value. This commit fixes this issue by using the new standard approach with the 'edit' action. Since there are no tours which make use of `editSelectMenuInput`, it is also deprecated and to be removed in master. Related PR 1: https://github.com/odoo/odoo/pull/264913 Related PR 2: https://github.com/odoo/odoo/pull/266912 runbot-941336 Forward-Port-Of: odoo/enterprise#128462
Fixed an issue in the Sign app related to user group handling. This helps ensure the right access or grouping behavior is applied when users work with signing features.
Original PR description
opw-6518598 Forward-Port-Of: odoo/enterprise#129647
A test workflow for Knowledge calendar editing was updated to use the current standard editing behavior. This helps keep automated checks reliable and prevents false failures during product validation.
Original PR description
[Related PR 1] modified `editSelectMenuInput` to use the standard 'edit' action instead of a custom action, and moved several tours off of the helper function, but missed the knowledge calendar tour. In combination with [Related PR 2] which changed the conditions of editing a select input to not include the intial 'click' action, causes this tour to now fail to properly input the text value. This commit fixes this issue by using the new standard approach with the 'edit' action. Since there are no tours which make use of `editSelectMenuInput`, it is also deprecated and to be removed in master. Related PR 1: https://github.com/odoo/odoo/pull/264913 Related PR 2: https://github.com/odoo/odoo/pull/266912 runbot-941336 Forward-Port-Of: odoo/odoo#283328
Point of Sale managers can now open payment method settings without running into an access error. The change gives POS managers the read access needed for online payment provider information while keeping the field hidden from users without the right roles.
Original PR description
Only admin users have read access to the `payment.provider` model. Opening the PoS payment method form as a non-admin would raise an access error because the `online_payment_provider_ids` many2many field tries to fetch `payment.provider` records on form load. Grant read-only access on `payment.provider` to `group_pos_manager` so POS admins can use the field. Restrict the field's group in the form view to `point_of_sale.group_pos_manager,base.group_system` so it is not rendered for users without either role. opw-6208656 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#278792 Forward-Port-Of: odoo/odoo#263837
This update replaces an older loop style with the preferred clearer wording in several core areas. It helps keep the codebase aligned with automated quality checks, reducing maintenance friction without changing user-facing behavior.
Original PR description
Ruff checks on runbot flagged `while 1:` Preferred syntax is to use `while True` [UP048](https://docs.astral.sh/ruff/rules/while-one) runbot-945983 Forward-Port-Of: odoo/odoo#284900 Forward-Port-Of: odoo/odoo#283962
Bank payment XML files now use uppercase encoding labels to satisfy stricter validation by some banking providers, such as SIX in Switzerland. This reduces the risk of warnings or rejected payment files when exchanging data with banks.
Original PR description
The W3C recommendations for XML state that the encoding defined for an XML document should not be case-sensitive. However, some banking providers (SIX for Switzerland) are stricter and may throw warnings or errors if upper-case is not used. https://www.w3.org/TR/2008/REC-xml-20081126/#NT-EncodingDecl opw-4948708 Forward-Port-Of: odoo/enterprise#129596 Forward-Port-Of: odoo/enterprise#125807
This fixes a dark mode display issue in the Point of Sale where some search and form fields could show dark text on a dark background. POS users can now read and enter information reliably when working in dark mode, reducing confusion during sales or restaurant operations.
Original PR description
**Description of the issue/feature this PR addresses:** When using the POS in dark mode, certain form control elements display black text on a dark background, making them illegible. This occurred…
**Description of the issue/feature this PR addresses:** When using the POS in dark mode, certain form control elements display black text on a dark background, making them illegible. This occurred because the POS application lacked the `color-scheme` CSS property. While the backend web client correctly applied this property, its absence in the POS meant the browser still assumed a light theme, forcing default User Agent styles (black text) onto native form controls that escaped standard view helpers. This commit resolves the issue by applying the `$o-webclient-color-scheme` variable to the POS application. This signals the browser to render form controls and UI elements based on the current web client color scheme, ensuring text remains legible within the POS app. **Steps to reproduce:** - POS > Open Restaurant Register - Hamburger icon (top right) > Switch to Dark Mode - Register > vertical ellipses icon (bottom left) > Quotation/Order > type in the search bar > observe black text on dark grey background **Current behavior before PR:** <img width="1911" height="588" alt="Before 1" src="https://github.com/user-attachments/assets/99581745-23eb-45e1-96f7-bca78853369c" /> <img width="1919" height="550" alt="Before 2" src="https://github.com/user-attachments/assets/b7eb9726-e2d2-492b-ad2b-6c0cc6613bb8" /> **Desired behavior after PR is merged:** <img width="1910" height="433" alt="After 1" src="https://github.com/user-attachments/assets/419b7a2a-234e-47c8-854e-22adf6a7c5c1" /> <img width="1915" height="513" alt="After 2" src="https://github.com/user-attachments/assets/8f1cf5c9-5ad1-4aac-9879-840d6d9d537e" /> opw-6508945 Forward-Port-Of: odoo/odoo#284831
This fixes an automated Knowledge calendar walkthrough that could fail when creating or editing calendar item properties. The change helps keep quality checks stable so future updates can be validated more reliably.
Original PR description
In `knowledge_calendar_command_tour`, we were experiencing two issues 1. First, when we change the properties of a new calendar item, we were running into an issues where the tour would fail due to…
In `knowledge_calendar_command_tour`, we were experiencing two issues 1. First, when we change the properties of a new calendar item, we were running into an issues where the tour would fail due to not being able to locate the dropdown option to create a new property. This only occurs if you don't set a step delay on the tour. This happens because in the `editSelectMenuInput` helper, we first check if the dropdown is open bfore we proceed. Since the tour runs so fast, we detect that the dropdown for the first property is open, so we pass the check. However, this then closes since we've moved on to the next dropdown, and since nothing has been input into the next dropdown, the create option doesn't appear. Now, we ensure that the create option will be present before attempting to click it 2. Later in the tour, we attempt to edit the properties on a new calendar item. We previously used `edit` to edit the property name, however this resulted in the "Select a template" modal being opened, which broke the tour, since we needed to click elements behind it. Using `fill` instead to populate the text field doesn't produce this behavior, allowing the tour to proceed without error. [runbot-939647](https://runbot.odoo.com/odoo/error/939647?debug=assets) Forward-Port-Of: odoo/enterprise#128830
The inventory report now prints with aligned columns and complete table borders when locations are grouped. This prevents confusing or unprofessional-looking PDF reports after warehouse inventory counts.
Original PR description
When new columns were added to the stock inventory report, the location grouping row was not updated. This results in mismatched column counts, causing missing gridlines and broken borders in the PDF output Fixed by ensuring the location row's column count matches the header <img width="603" height="200" alt="image" src="https://github.com/user-attachments/assets/86872bee-f315-4bdd-b3f2-a525e3bb5fe0" /> ### Steps to reproduce: - Ensure warehouses are activated in the settings - Go to Barcode -> Count Inventory - Add a Product - Select the gear Icon then "Print Inventory" - You will notice that the location row has missing gridlines opw-6307728 Forward-Port-Of: odoo/odoo#275918
Fixed the Real Margin report so that drilling into pivot results opens the standard analytic entries list instead of the timesheet list. This preserves expected navigation for project margin analysis and gives users access to the right detail records from the report.
Original PR description
**Steps to reproduce:** 1. Open a project. 2. Click on the Real Margin stat button or top menu action. 3. The pivot view opens by default. 4. Click on a cell in the pivot view to drill down into the list view. **Issue:** The system opens the timesheet list view instead of the standard analytic entries list view. **Cause:** Overwriting action['views'] erased the default list view, causing to fall back to the timesheet view during drill-down. **Fix:** Used a list comprehension to inject the custom pivot view while preserving the original view types. Added all view options to the Real Margin top bar. task-6192267 Forward-Port-Of: odoo/odoo#270494
This fixes an intermittent issue in an automated CRM forecast check by ensuring the system waits until an opportunity is fully marked as won before moving on. It helps keep internal quality checks stable and reduces false failures during release validation.
Original PR description
The crm_forecast tour is red randomly on runbot on the Won banner step. We click the won button and go back directly, so the kanban can be loaded before the lead is won. Now we wait for the ribbon first. runbot-242139 Forward-Port-Of: odoo/odoo#284721
This fix prevents Belgian payroll paid time off allocation from failing when an employee has no work schedule available. It adds a safety check and tests so the payroll process handles missing calendar data more reliably.
Original PR description
. Add check for the resource calendar before calling _get_days_per_week_for_period() method . Add corresponding tests task-6479161 Forward-Port-Of: odoo/enterprise#128319
The project margin grid view has been corrected so the real margin top bar displays updated information as intended. This helps sales and project users review profitability figures more clearly and consistently.
Original PR description
- update the grid view in project real margin top bar task-6192267 Forward-Port-Of: odoo/enterprise#122586
Closed or renewed subscriptions will no longer incorrectly appear in Orders to Invoice because prepaid recurring lines are cleared when billing should stop. Postpaid lines remain invoiceable where needed, so delivered products can still be billed after closure.
Original PR description
When a closed subscription could still show up in the Orders to Invoice because its recurring lines kept their "to invoice" status. This was misleading since no further period should be billed. When a subscription is churned (or renewed), prepaid lines are now flagged as nothing to invoice. Postpaid lines are left as is so that already delivered products can still be billed after closing. task-6227787 Forward-Port-Of: odoo/enterprise#117797
Project settings forms now align section headings more consistently and let setting descriptions use the available space before wrapping. This makes project-related configuration screens easier to read and reduces visual clutter for users.
Original PR description
In the project form settings: - The sections that sit on the same horizontal level should have their header aligned. - Settings description should use all the horizontal space available before wrapping to the next line Task-6360046 Forward-Port-Of: odoo/odoo#284771
The Time Off app now correctly finds time types when users search by their code. This removes a redundant app-specific search setup so the app uses the shared search behavior that already supports code searches.
Original PR description
Prior to this commit, searching for a time type by its code in the Time Off app yielded no results. This occurred because `hr_holidays` maintained its own search view (`view_holidays_status_filter`), which lacked the code filtering present in `hr_work_entry`. Since filtering on `create_calendar_meeting` is no longer needed, this view is entirely redundant. This commit removes `view_holidays_status_filter` so that `hr_holidays` falls back on the base search view from `hr_work_entry`, which already handles searching by code. Task: 6502422
This fixes an internal point-of-sale loyalty test so expired gift cards are consistently recognized as expired regardless of timezone. It helps prevent false test failures and keeps quality checks reliable without changing customer-facing behavior.
Original PR description
In the test "test_physical_gift_card", the expiration date of the expired gift card was set as date.today() - timedelta(days=1). It was then compared in a test against the current date to check if the gift card was expired. The problem was that the test would compare date.today() - timedelta(days=1) which is a day before the day of the run in the server timezone to a date in the American timezone. Between 0 and 6am, the expiration date would be the same date as the present day for the test timezone. This led to a gift card which was accepted instead of being flagged as invalid. We fix the issue by putting the expiration date a day before. runbot-error: 946584 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website configurator now shows the upload logo icon without cutting off its left edge. This small visual fix makes the setup flow look cleaner and avoids confusion during website customization.
Original PR description
Steps to reproduce: - Open the website configurator. - Continue to the color palette selection. => The upload logo icon is cropped on its left side. Before this commit, the gradient did not cover icon parts extending beyond the glyph box. After this commit, extra inline space lets the gradient cover the entire icon.
Checks created from templates and assigned to a tax return are visible again when users generate and open that type of tax return. This restores expected review controls in the Accounting app and helps teams verify tax filings without missing configured checks.
Original PR description
commit introducing the issue: https://github.com/odoo/enterprise/commit/034e0157eed0f19471879ca133faa40b7f0aabf3 Since this commit, it's no longer possible to see a check defined from a check template in a tax return. Steps to reproduce: - Go to Accounting / Configuration / Checks - Create a new one, give it a name, a random cycle and assign it a to a tax return - Open the tax returns view, generate them, and open a tax return of the same type -> The check should be visible Forward-Port-Of: odoo/enterprise#129707
The Belgian payroll salary simulation now opens correctly for eligible full-time employees instead of showing an error. This prevents disruption when HR users estimate employee salary details.
Original PR description
Steps to reproduce: - Go to a full-time employee form eligible for employment bonus (e.g. Laurie Poiret). - Click on the salary simulation button. - A traceback is raised (UnboundLocalError: 'paid_days'). Reason: `paid_days` and `total_days` were not defined in simulation context. As a result, testing the full-time condition (`paid_days < total_days`) raised an UnboundLocalError. Solution: Set `paid_hours = total_hours = paid_days = total_days = 1` when running in salary simulation context. Task-6485330
This update corrects visual problems introduced by the Frost design changes in the Accounting bank reconciliation screens. It helps keep statement line review and reconciliation clear and usable for accounting users.
Original PR description
Odoo frost created some css problem this pr will address them no task id
Restored padding around the Helpdesk teams dashboard so the page has proper visual spacing again. This makes the Helpdesk homepage easier to read and keeps the layout consistent after a shared Kanban layout change.
Original PR description
This PR restores a padding around the Teams Kanban view on the Helpdesk homepage. As the vertical padding was removed from the generic ungrouped Kanban component with the assumption it often stands below the `ControlPanel` which provides the right spacing, we need to ensure some scenario like the one in Helpdesk work well. task-6516134
This fix adjusts test dates so they are compared using the correct timezone. It helps prevent false test failures in point-of-sale planning checks, improving release reliability without changing user-facing behavior.
Original PR description
In the tests, the planning slot start and end times were set compared to current datetime in the server timezone. But in the tests, we have a timezone which is american. This leads to incorrect comparisons and that is why in the tests of pos_sale_planning, the dates of the planning slots were adjusted. runbot-error: 946614
Original PR description
https://github.com/odoo/odoo/pull/284302
The Point of Sale code has been reorganized by removing an internal helper service as part of preparation for the next OWL framework version. This should not change day-to-day cashier workflows, but it helps keep the POS interface maintainable and ready for future upgrades.
Original PR description
In order to migrate to OWL3 the contextual_utils_service is removed.
This update removes outdated code that handled settings no longer used by dynamic website snippets and event snippets. It keeps the website builder code simpler and easier to maintain without changing visible behavior for users.
Original PR description
remove data-url and the unused default for event cards This was a part of https://github.com/odoo/odoo/pull/258135, but it can be merged independently
Updates internal automated tests for the Knowledge app to use the standard way of editing selection fields. This keeps the test suite aligned with platform changes and helps maintain reliability without changing user-facing behavior.
Original PR description
editSelectMenuInput is being removed from web_tour's stepUtils (only used here); inline its two call sites as plain edit steps, same as the pattern used everywhere else for SelectMenu inputs.
Point of Sale code was reorganized by removing an older internal helper service. This helps prepare the system for a future OWL3 migration without introducing expected changes to day-to-day cashier workflows.
Original PR description
In order to migrate to OWL3 the contextual_utils_service is removed.
Original PR description
Related: https://github.com/odoo/odoo/pull/285307