Saturday, August 29, 2026
25 changes · master
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
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