Wednesday, October 8, 2025
45 changes · 19.0
Enhancements to existing features
The state selection field now uses the same spacing as similar lookup fields. This creates a more consistent form layout and removes an unnecessary visual gap when searching for states.
Original PR description
Related PR: https://github.com/odoo/odoo/pull/229290 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230338
This change updates the follow-up process tests to use the newer journal items action instead of the older overdue entries flow. It helps keep the accounting follow-up feature aligned with the current workflow while removing unused pieces.
Original PR description
Current behavior before PR: - The test_journal_items_action_domain_filters_partner_posted_entries test was calling action_open_overdue_entries on the partner. - It checked overdue invoices by…
Current behavior before PR: - The test_journal_items_action_domain_filters_partner_posted_entries test was calling action_open_overdue_entries on the partner. - It checked overdue invoices by searching moves with the returned domain. Desired behavior after PR is merged: - The test now calls the new action action_open_partner_followup_journal_items. - It searches for account.move.line records using the action domain. - It validates the related invoices via line_ids instead of directly searching moves. - Removes redundant code. Changes implemented: - Replaced action_open_overdue_entries with action_open_partner_followup_journal_items. - Replaced search on account.move with search on account.move.line. - Assertion updated to check the invoices line ids are equal to move_lines.ids. - Removed view_followup_invoice_list custom view and action_open_overdue_entries which no longer used - Renamed test_overdue_invoices_action_domain_includes_children_partners testcase to test_journal_items_action_domain_includes_children_partners and updated its docstring. related commit-[75533f4](https://github.com/odoo/enterprise/commit/75533f4808f2aa52f70a12dba8829caef44bf1b7) related pr-[upgrade#8470](https://github.com/odoo/upgrade/pull/8470)
This update adds shared automated testing for country-specific point of sale compliance features, with tailored steps where local rules require them. It helps reduce the risk of regressions across several localized POS setups and improves confidence when delivering future changes.
Original PR description
Thi commit add a generic tour that can be run in all pos l10n_modules. In some cases it requires some extra steps, this can be done with hooks. The hooks will execute different steps depending on the country the tour is run in. opw-4606788 Forward-Port-Of: odoo/enterprise#96074 Forward-Port-Of: odoo/enterprise#91928
This update adds shared automated checks for point-of-sale localization modules across multiple countries. It helps reduce the risk of country-specific POS compliance or invoicing issues reaching customers by validating common flows with local variations.
Original PR description
Thi commit add a generic tour that can be run in all pos l10n_modules. In some cases it requires some extra steps, this can be done with hooks. The hooks will execute different steps depending on the country the tour is run in. opw-4606788 Forward-Port-Of: odoo/odoo#229614 Forward-Port-Of: odoo/odoo#222232
Resolved issues and error corrections
Moving a CRM opportunity into an empty pipeline stage with recurring revenues enabled no longer triggers an error. This keeps sales teams' pipeline views stable during normal drag-and-drop updates.
Original PR description
**Steps to reproduce:** 1.Install crm 2.Enable 'Recurring Revenues' from settings 3.Go to CRM > 'My pipeline' > Create a record here 4.Enable debug mode 5.Either create a new stage or move records from any stage to make an empty stage 6.Move created record to an empty stage **Issue:** This Traceback accurs : "Uncaught Promise > Invalid props for component 'AnimatedNumber': 'value' is not a number" **Cause:** https://github.com/odoo/odoo/blob/5ade756227abf58769ff904651628a3ccaf8e19a/addons/web/static/src/views/view_components/animated_number.js#L8-L21 AnimatedNumber expects a numeric value for its value prop. When moving to an empty stage, the aggregate value is false, which is not a valid number for the component. **Solution:** Check for the rrmAggregate value to render the component. opw-4972672 Forward-Port-Of: odoo/odoo#221705
Code cleanup and technical improvements
This update reorganizes how embedded action settings are managed so they are easier to maintain and less prone to mistakes. It also adds automated checks to help ensure project-related settings are copied, removed, saved, and retrieved correctly.
Original PR description
In this PR, we rework the embedded actions settings logic in the control panel, to use a "pure" class that contains all the state and logic related to these settings. We also rework the `ResUserSettings` mock model in `web` to make it generic and use it in other modules, like in `mail`. Finally, we add Python tests to ensure the correct behavior of the embedded actions settings when copying/removing projects and when setting/getting those settings from the DB (check validity of fields and correctness). We also add some checks in the JS tests to ensure that the embedded actions settings are correctly set. task-5003800 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The accounting dashboard's drag-and-drop buttons and upload areas now automatically adapt to light and dark themes. This removes mismatched hardcoded colors, improving visual consistency and readability for users who switch themes.
Original PR description
Current behavior before PR: - Drag & drop buttons and upload drop zones of dashboard cards had hardcoded backgrounds (#F2EDF0 / grey), which did not adapt to dark mode. Desired behavior after PR is merged: - Removed hardcoded background colors from drag & drop button and upload drop zone cards on dashboard and updated their background to adapt in light & dark modes. Changes implemented: - Removed hardcoded background color (`#F2EDF0`) from `account_drag_drop_btn` & `drag_to_card` CSS classes. - Removed overriding background-color property from `o_drop_area` CSS class. - Updated background-color of `o_drop_area` in `o_account_dashboard_kanban_view` CSS class to `o-view-background-color`. task-5092460 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227707
Saving an invalid website domain now displays a user-friendly validation message instead of causing an unexpected error. This helps administrators quickly correct domain entries and prevents disruption when updating website settings.
Original PR description
Currently, an error occurs when user tries to save an invalid domain. Steps to replicate: - Install `website_sale`. - Go to `Settings > Website`. - In the domain field, give value as `[`. (any normal URL with a square bracket will also work). - Save and error will occur. Error: `ValueError: Invalid IPv6 URL` Cause: - The error happens because `config.get_base_url()` returns a malformed URL (like containing stray `[`), which makes urljoin [1] raise the error. Solution: - The solution prevents error by adding a constraint and raising a user-friendly `ValidationError` if the URL is invalid. [1]: https://github.com/odoo/odoo/blob/77398aefc291d33264b039e38681f0cd8f65483f/addons/website_sale/models/res_config_settings.py#L135 sentry-6805151048 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223336
This fixes how the HTML editor recognizes background-related styling classes, including variants with custom prefixes. It prevents unrelated class names from being treated as color styles, making editor formatting more reliable.
Original PR description
The previous regex `/\bbg-[^\s]*\b/` did not correctly handle class names with prefixes and could incorrectly match strings like 'someprefix-bg-primary'. Updated regex: `/(?:^|\s)(?:text-)?bg-[^\s]+/` | Feature | Old Regex | New Regex | |:----------------------|:--------------|:-------------------------------| | 'bg-*' classes | ✅ Yes | ✅ Yes | | 'text-bg-*' classes | ✅ Yes | ✅ Yes | | Avoid 'someprefix-bg-*' | ❌ Incorrect | ✅ Correct | | Custom prefixes | ❌ No | ✅ Yes (e.g., 'foo-bg-*') | | Boundary detection | \b word | ^ or whitespace (?:^|\s) | This fix ensures accurate parsing of CSS class names in the codebase while supporting both standard and custom prefixes. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes a CRM test select the intended customer record and wait for the opportunity name to be ready before continuing. It reduces false test failures and helps keep CRM quality checks stable without changing customer-facing behavior.
Original PR description
The problem here is twofolds: - After odoo/odoo#206314 the field being searched is filtered on `is_company` which means it's literally impossible to find the partner we create as that field defaults…
The problem here is twofolds: - After odoo/odoo#206314 the field being searched is filtered on `is_company` which means it's literally impossible to find the partner we create as that field defaults to `False`. - Before that PR, since we just `click` the first link we find in the dropdown, we might get a random company which exists in the database (if any) or we might hit the "create" option. In the latter case we have a non-zero chance of clicking `o_kanban_add` before the client has had the time to `name_create` the record, set the partner, call the onchange, and return with the opportunity's name, leading to an attempt to create a nameless opportunity and a "missing required field" error Selecting the very specific partner we created (correctly this time) and then actually waiting for the opportunity's name to be set should resolve the issue, and make problems in that step show up in the right location in the future rather than hit some sub-sub-sub-symptom 20 steps later. https://runbot.odoo.com/odoo/error/229719 Forward-Port-Of: odoo/odoo#230251
Link previews now show the correct page title even for users who lack access to certain backend actions. This prevents confusing generic “Odoo” preview titles and gives users clearer context when sharing or pasting links.
Original PR description
Users without access for specific actions cannot see the right preview information, using sudo like the search for generic action but on specific model solve the issue. Steps: - Login with a user without window actions access - Copy a link somewhere to have preview dialog Actual result: - Preview title is Odoo due to access error Expected result: - Preview title is the one of the page opw-4933194 Forward-Port-Of: odoo/odoo#222435
Closing the barcode scanning dialog before the camera preview finishes loading no longer causes an error. This improves reliability for users who navigate back or press Escape while opening the scanner.
Original PR description
Steps to reproduce: 1. Install `barcode` 2. Barcode > 'click to scan' 3. Before the camera preview loads, click the back button of the dialog Issue: A traceback occurs: `OwlError: The following error occurred in onMounted: 'Cannot set properties of null (setting 'srcObject')' ` Cause: Clicking the back button triggers `onWillUnmount`, which clears the stream and sets `this.videoPreviewRef.el` to null. However, some asynchronous functions in `onMounted` are still pending and try to access the video element, leading to a crash. Solution: Add a safe check based on component status before accessing `this.videoPreviewRef.el` opw-5055566 Forward-Port-Of: odoo/odoo#229937 Forward-Port-Of: odoo/odoo#226068
The German Datev export no longer fails when sale or purchase receipts are created without a customer or vendor. This helps businesses export accounting data reliably even when receipts do not require partner details.
Original PR description
Since 18.4, there are purchase receipts as a function for vendor bills, where you can choose to put no vendor in the vendor field, the same is true for invoices with sale receipts. Making sure that partners are not Null task-5114562 Forward-Port-Of: odoo/enterprise#95649
The sales dashboard spreadsheet now applies the selected medium filter to list sections as expected. This keeps dashboard list data consistent with the rest of the filtered sales report, improving reliability for users reviewing sales performance.
Original PR description
Before this commit, the medium global filter was not applied to the lists in the sales dashboard spreadsheet. Task: 5129301 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
The Point of Sale automated test tour now waits longer for the system to load when many localizations are installed. This reduces false test failures in slower setups and helps keep release validation stable.
Original PR description
Loading the PoS with all the localizations installed can take up to 15s to load, so we increase the timeout of the first step of the generic tour to 20s to make sure it doesn't fail. runbot-233059 Forward-Port-Of: odoo/odoo#229925
Fixes minor visual issues when editing spreadsheet date filters on mobile. Active selections now show the check mark correctly, and navigation arrows remain visible and usable in the bottom sheet.
Original PR description
In mobile, the dropdown to edit a date filter value is now displayed in a bottom sheet. There was some minor issues in the styling: - the check icon for active item wasinside another icon - the arrow next/previous were grayed out since ":hover" doesn't really exist on mobile Task: [5092756](https://www.odoo.com/odoo/2328/tasks/5092756) 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
Adyen redirect payments now skip amount and currency checks that do not apply to that payment flow. This prevents valid redirect transactions from being blocked unnecessarily, helping checkout completion stay smooth.
Original PR description
Amount and currency validation is skipped for redirect transactions.
This update fixes an internal website test that was failing when video snippets opened an unexpected media dialog. The test now skips video snippets in the same way it already skips image snippets, helping keep automated checks reliable without changing customer-facing behavior.
Original PR description
Since PR odoo/odoo#214984, the “test_03_snippets_all_drag_and_drop” test fails because the video snippet opens the media dialog and the test does not handle it. Solution: as with image snippets, we will ignore them in this test. Error: https://runbot.odoo.com/odoo/runbot.build.error/231594 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
The website builder now clearly disables the remove button when a carousel has only one slide left. This prevents users from seeing an action that appears available but cannot actually remove the final required slide.
Original PR description
Steps to reproduce: - Drop a carousel snippet - In the builder options, click on the "-" button to remove all items except the last one. => The button is still displayed as working (not disabled), even though clicking on it won't remove the last slide. To clarify that this is the expected behavior, we disable the button if there is only one carousel item left. Forward-Port-Of: odoo/odoo#226877
This update prevents a crash when website interaction code waits on an action that intentionally returns no value. It makes the web interface more reliable for developers building interactive pages, with no expected change for everyday users except fewer errors.
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 Forward-Port-Of: odoo/odoo#229029
This fixes incorrect buyer document values shown on Indonesian e-Faktur invoices when contacts use Other ID or National ID document types. The change helps ensure exported tax invoice data matches the expected official labels, reducing confusion and compliance issues.
Original PR description
the byer document has a wrong value in others and NIT. so this commit change the values to `Other ID` and `National ID` To check values: go to fields and search for `l10n_id_buyer_document_type` opw-4974469 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222346
A test setup issue was corrected so that one internationalization test no longer changes settings used by later tests. This helps keep automated checks reliable and prevents false CI failures or missed test coverage.
Original PR description
The `config.parse_config` call changes the test flags, effectively disabling all following tests and breaking the CI. See: odoo/odoo#229755 Forward-Port-Of: odoo/odoo#230504
Restaurant floorplan buttons now display their labels when users hover over the whole button, rather than only when hovering the icon. This makes actions easier to identify and helps staff navigate the point of sale interface more quickly.
Original PR description
Display the title of buttons on hover in the floorplan (instead of showing title only when hovering icons). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Online store cart notifications will now close automatically after 4 seconds instead of staying on screen indefinitely. This improves the shopping experience by preventing persistent messages from blocking or distracting customers.
Original PR description
Due to the notifications revamp in https://github.com/odoo/odoo/commit/bbe90382f6c65a6b8737b3e8ec8295b2ee733475, eCommerce notifications were showing indefinitely, with no way to hide them. This commit adapts the cart notification component to close itself after 4 seconds.
This update corrects how the website editor decides the default image format when adding or editing images. It prevents incorrect image type behavior caused by a browser interpretation issue, helping image handling work more reliably for users.
Original PR description
This commit fixes an issue introduced by 9685f54b53525429d5fbcfd5bdc45e0ff75d4581 with a condition that isn't properly interpreted by the browser's engine following the operators' precedence. The `!==` is interepreted before the `??` which leads to unwanted behaviors. [Source](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_precedence#table) task-5152847 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Creating a new attendance record no longer crashes if the Check In field is emptied. The system now safely uses today's date when no check-in value is provided, allowing users to continue editing the record without interruption.
Original PR description
The system crashes with an error when the user removes the Check In value while creating a new attendance record and then tries to modify other fields. **Steps to produce:** - Install the `Attendances` module. - Go to the `Attendance app` and click on `New`. - In the wizard, remove the `Check In` value and click anywhere. **Error:** ```py AttributeError: 'bool' object has no attribute 'tzinfo' ``` **Cause:** - At [1], when the `check_in` value is changed, the `_compute_date` method is triggered. If `attendance.check_in` is `False`, the computation attempts to access `tzinfo` on a boolean value. **Solution:** - If the `check_in` value is not present, set the `attendance.date` to today’s date. [1] https://github.com/odoo/odoo/blob/b5a08dcd33cf72c129c4c512045edfe1d8c852a7/addons/hr_attendance/models/hr_attendance.py#L83-L90 **sentry-6924425687** I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures separator lines in the email marketing showcase template remain visible in sent emails. It improves email layout consistency, especially on desktop displays, so recipients see the design as intended.
Original PR description
Problem: When adding the `s_showcase` template in email marketing and saving, the separator is not properly rendered in the received email. Cause: The separator is implemented as an empty `<div>` with `display: inline-block` and `height: 100%`. In emails, this can collapse to 0px, making the separator invisible. Additionally, `border-<position>-color` was not applied correctly in some cases. Solution: - Lock the computed height of empty separator elements so they remain visible. - Restrict visibility of separators to desktop screen sizes where columns are stacked horizontally. - Fix rendering of `border-<position>-color`. Steps to reproduce: 1. Open a new email marketing. 2. Add the `s_showcase` template. 3. Test-send the email. 4. Observe that the separator is not visible. opw-5077992 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230485 Forward-Port-Of: odoo/odoo#226350
The website editor now shows clean mailing list names when adding checkbox options to a newsletter subscription form. This removes confusing numbers from the selection list, making form setup clearer for website editors.
Original PR description
In the "Subscribe to newsletter" form, "Add new Checkbox" on the web editor for "Subscribe to" field lists mailing list with number. This commit removes the number by fetching the records from mailing list via "name" and not "display_name". Steps to Reproduce: 1. Add a form 2. Change action to "Subscribe to Newsletter" 3. Click on "Subscribe to" field 4. Click on "Add new Checkbox" and you see the numbers on the list. opw-4730089 Forward-Port-Of: odoo/odoo#223499 Forward-Port-Of: odoo/odoo#210891
The employee form now shows a complete count of employee documents stored in the main employee folder and any subfolders, while excluding folders from the total. This gives HR teams a more accurate view of how many documents are attached to each employee.
Original PR description
Before this commit, the documents count on the employee form view showed only the count of documents (folders included) inside the employee folder but not the ones in subfolders. This commit fix that by showing the count of every documents (folders excluded) included in the employee folder or its subfolders. Task-4944895 Forward-Port-Of: odoo/enterprise#91009
This fix prevents an error that could occur when employees opened their personal preferences after being assigned to a group. It helps ensure users can reliably access and update their profile settings without interruption.
Original PR description
Currently an error occurs when user open their preferences. **Steps to Reproduce:** - Install the `hr` module. - Go to `Groups`, create a group, and assign the `current user to it`. - Make sure this user has an `Employee record`. - Click on the `profile icon` in the top-right corner and select `My Preferences`. `IndexError: list index out of range` This commit adds a test for this [PR], as the issue is fixed here. [PR]: https://github.com/odoo/odoo/pull/230210 sentry-6913468854 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds a safeguard in electronic invoicing calculations to avoid a rare division-by-zero error when very small amounts round down to zero. It helps keep invoice generation more robust against edge cases and future changes, with no expected impact on normal workflows.
Original PR description
[FIX] account_edi_ubl_cii: float comparison safeguard. This fix solves a potential issue where the `delivered_qty * price_unit` is too close to zero making it pass the float comparison check, later we divide against the same product, but this time wrapped in `curency.round` which may round it to zero, resulting in a division by zero error. Whilst I found no functional way to reproduce the issue as the value of price_unit should already be zero when we get here but, the fix is to simply safeguard from potential future changes. Ticket [link](https://www.odoo.com/odoo/project.task/5013588) opw-5013588 Forward-Port-Of: odoo/odoo#230236
The website builder now applies the correct spacing and text-size styling when regenerating pricelist descriptions. This keeps pricelist sections visually consistent after users edit or toggle description text.
Original PR description
New description paragraphs generated by the builder for the "pricelist" snippets were missing two expected classes. - "mt-2" was never applied, so all pricelist variants lacked the vertical spacing below product titles. - The boxed and cafe snippets also needed the `o_small` class to keep their text size consistent. Steps to see the missing "o_small": 1. Drop an "s_pricelist_boxed" or "Pricelist Cafe" snippet on a page. 2. Use Backspace to delete the text already present in one of the descriptions. 3. Toggle the "Descriptions" option off and on; the regenerated paragraph appears larger than expected because `o_small` is absent. task-5117864 Forward-Port-Of: odoo/odoo#229464
This change moves HR-dependent scheduling tests into the HR-specific project module so builds no longer fail when the HR app is not installed. It helps keep automated testing reliable across different installation setups without changing business functionality.
Original PR description
Steps to reproduce: - start test_auto_schedule_flex_resource when hr not installed. => `AttributeError: 'res.users' object has no attribute 'action_create_employee' Source: - action_create_employee comes from hr, but the test is in project_enterprise Fix: - tests related to hr moved to project_enterprise_hr
Mexican electronic invoicing now keeps valid accented characters, such as ü, in legal names. This prevents compliant customer or company names from being altered and helps avoid issues with SAT validation.
Original PR description
Previous commit (#95207) removed accents for names including character ü which indeed is a recognized character for SAT opw-5125107 Forward-Port-Of: odoo/enterprise#96043
This update adjusts an internal website performance test so it no longer fails because of small query count differences caused by optional installed add-ons. It helps keep automated testing reliable without changing customer-facing behavior.
Original PR description
The difference query is not relevant to the overall performance of the page. This difference depends on how you run the tests with the other addons installed. issue: AssertionError: 36 != 37
The Join and Reject buttons shown in chat calls now keep the intended pill-shaped style and no longer appear oversized. This makes call actions clearer and more consistent for users when returning to conversations with active calls.
Original PR description
Before this commit, "Join" and "Reject" call actions with label, which are shown on chat with a call for which the user has already joined a call at least once, had wrong style. This happens because:…
Before this commit, "Join" and "Reject" call actions with label, which are shown on chat with a call for which the user has already joined a call at least once, had wrong style. This happens because: 1. they use `.rounded-pill` and `.rounded-start/end-3`, and the `.rounded-3` are behaving as `rounded-0` when with `rounded-pill` 2. buttons are bigger than expected, because of `aspect-ratio: 1` The `.rounded-3` and non-intentional: the button must be pill-shaped. This commit fixes this by making the condition for `.rounded-3` more specific, i.e. not consider join-leave-call buttons that are circled and pilled. For the sizing, this comes from recent change [1] that fixed issue in Picture-in-Picture were the buttons have different size than in the browser tab. The fix made by [1] affects more buttons than expected, such as the "Join" and "Reject" buttons. More investigation is necessary to understand why buttons have different sizes in picture-in-picture, but in the meantime it's best to remove the `aspect-ratio: 1`, as the current bug is more important to fix than the sizing of picture-in-picture buttons. Task-5149688 [1]: https://github.com/odoo/odoo/pull/228657/files#diff-94618ed43461f410ce199f94861d88901c7d868045d6bfe5614e134498e856aaR37 Before <img width="174" height="132" alt="Screenshot 2025-10-07 at 14 33 12" src="https://github.com/user-attachments/assets/ed228673-7cde-45a1-91e3-2438b258373b" /> After <img width="171" height="128" alt="Screenshot 2025-10-07 at 15 50 30" src="https://github.com/user-attachments/assets/b8882714-24a7-4fea-8442-2c915a9519b9" />
Stock quantity lists now only highlight products in red when they have a removal date that is already past due. This prevents regular products from being incorrectly flagged for stock users, making the list easier to read and helping teams focus on genuinely expired items.
Original PR description
Description of the issue/feature this PR addresses: For stock users (not admins), the stock quantities list view display red lines for every product. Current behavior before PR: <img width="2243" height="217" alt="image" src="https://github.com/user-attachments/assets/330c591c-6ef4-46cb-8336-fa39fb483333" /> Desired behavior after PR is merged: Red lines are only displayed for products with a removal date and a removal date < current date <img width="2241" height="290" alt="image" src="https://github.com/user-attachments/assets/fe37adc7-e736-447e-a21e-e2fae984e074" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228992
This fixes a Chrome-specific issue where background videos in the ecommerce category showcase could flicker when visitors hovered between blocks. The change keeps the video display steady, improving the visual polish of website pages using this snippet.
Original PR description
**[FIX] website: stabilize showcase background video in Chrome** Steps to reproduce: - Drop the "s_ecomm_categories_showcase" snippet. - Change its background to a video. - Hover between the different blocks. - Bug: the video flicker on hover. Before this commit Chrome kept resizing the iframe, making the video flicker on hover. After this commit we freeze the iframe sizing in pixels so Chrome keeps the video stable. task-5104176
Event description links are now formatted so they work reliably in email clients such as Gmail. This prevents broken or confusing event URLs for recipients, helping attendees access event information without issue.
Original PR description
When website_event is installed an anchor tag is added inside the event description which is guaranteed to break the url in the gmail client. We now quote the description appropriately so that there's no confusion. task-5092759 Forward-Port-Of: odoo/odoo#229979 Forward-Port-Of: odoo/odoo#228359
The point of sale preset form now displays key fields more cleanly, especially on mobile screens and when time-based order management is disabled. This makes setup easier for restaurant or shop staff by avoiding overlapping labels, misplaced inputs, and confusing placeholder text.
Original PR description
In this commit: -------------- - The preparation capacity field was not properly displayed when manage orders by time is disabled, now we have added a additional class to make ui proper. task: 5077509
This fix changes how AI tool functions receive their inputs, making them easier to customize and better aligned with the current version. It helps reduce compatibility issues for implementations that extend or override AI behavior.
Original PR description
To ease the override and compatibility with what is done in 19.0, we call the function with kwargs instead of args. Forward-Port-Of: odoo/enterprise#96528
This fix prevents an error in the Indian withholding workflow when the action is opened without any selected records. Users now receive a clear message instead of encountering a confusing failure, helping avoid interruption during tax-related processing.
Original PR description
We need to first check if active_ids exist and get usererror if there are no active_ids present. [Link to Runbot Error builds](https://runbot.odoo.com/web#id=74407&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190579 Forward-Port-Of: odoo/odoo#190324
The video call interface now highlights the fullscreen button directly instead of drawing attention to the overflow menu. This makes it clearer for users how to switch to fullscreen during Discuss calls.
Original PR description
Before this commit, when someone enabled video for the 1st time in a discuss conversation, the "..." call action had pulse animation. This is there to incite using the fullscreen mode, which was in the "..." in the past. Now that this button is in the bottom right of call view and immediately available, the pulse effect can be immediately moved to the fullscreen button. Before  After 
The Indian payroll demo contract now lists Mitchell Admin as the HR Responsible instead of OdooBot. This makes the sample offer signing flow better match a realistic logged-in user experience.
Original PR description
Currently, OdooBot is set as the HR Responsible in the default contract template demo data. To make the offer signing process more realistic and aligned with the login user, OdooBot is replaced with Mitchell Admin. task-5095841
Payroll payment reports can now be generated when an employee has multiple bank accounts with a 100% and 0% salary split. This prevents report failures and ensures all configured bank accounts can be included correctly in the CSV output.
Original PR description
-When generating a payment report CSV for user with multiple bank accounts that have a salary split of 100%/0%, a traceback occurs. -The logic has been adjusted so that bank account of 0% split percentage can be included in the payment report.