Thursday, October 9, 2025
28 changes · master
Resolved issues and error corrections
This fix checks whether the required records are available before running the Indian withholding tax wizard. If no records are selected, users now receive a clear error instead of encountering a system failure.
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#230469 Forward-Port-Of: odoo/odoo#190324
Clearing browser data in Chrome could cause an error for users with Live Chat installed. This update adds a safeguard so the app handles that browser event cleanly, improving stability without changing user workflows.
Original PR description
**Steps to reproduce:** Install 'Live Chat' Open Chrome Log in as 'Admin' Clear browser data **Current behavior before PR:** Clearing data triggers a storage event where the key parameter is null. An event listener attempts to call a method on this null key, leading to a runtime error. **Desired behavior after PR is merged:** A check has been added to ensure the key is not null, preventing the error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230298
The Point of Sale preset form now displays key fields more cleanly, especially on mobile screens. This makes setup easier to read and reduces confusion from cramped labels, misplaced inputs, and an incorrect placeholder.
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 Forward-Port-Of: odoo/odoo#226607
Vendor credit notes created through purchase order matching now show the correct positive quantity when reversing over-billed received quantities. This helps purchasing and accounting teams avoid confusing negative quantities and ensures credit notes reflect the intended correction.
Original PR description
Steps to reproduce:- - Create a Purchase Order with Product A(invoicing policy: received quantities) and Quantity 3. - Create Vendor Bill with Product A and Quantity 3 and match it with the PO. - Receive only 2 on PO. - Now on PO, Quantity: 3, Received:2, Billed:3 - Create a Vendor Credit Note for that partner, add an empty line and save. - Click on PO Matching at the top. - Select line from Vendor Credit Note and line from PO, click match. Problem: In Vendor Credit Note Quantity: -1 (which should be 1) Before this commit: When credit note values are prepared from purchase order, quantity to invoice on purchase order is set as quantity on credit note. After this commit: When credit note values are prepared from purchase order, inverse(-ve) of quantity to invoice on purchase order is set as quantity on credit note. task-4975200 Forward-Port-Of: odoo/odoo#230487 Forward-Port-Of: odoo/odoo#221203
This fix updates a mail test to use a more reliable save action when editing HTML mail fields. It helps prevent automated test failures where a manual save click could be ignored if the save button was not ready, improving confidence in the mail editing workflow.
Original PR description
This commit tries to solve runbot issues with mail html fields widget. It seems clicking on the save button manually is not generating a call to the backend. This could be due to the fact the button is not enabled due to the data being invalid. Therefore using the clickSave util could be useful in those situation since waiting that the button becomes enabled. This solution is not 100% sure to fix the issue in all cases but manually disabling the button is creating the issue we can observe in those runbots. There is a good chance it might work. fixes-runbot-231582 fixes-runbot-233049 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230375 Forward-Port-Of: odoo/odoo#227484
This fixes a visual issue where background videos in the eCommerce categories showcase could flicker when visitors hovered between blocks in Chrome. The video area now stays stable, creating a smoother and more polished website browsing experience.
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 Forward-Port-Of: odoo/odoo#229637
This fixes a crash in the Attendances app when a user clears the Check In field while creating a new attendance record. The form now safely uses today's date instead, allowing users to continue editing 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…
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 Forward-Port-Of: odoo/odoo#230068
This fix adjusts how a setting is written in the sales timesheet invoice wizard so it works reliably with more customization tools. It helps prevent errors for companies with custom processes that inspect or modify Odoo screens programmatically.
Original PR description
Versions -------- - 17.0+ Issue ----- Some customizations may parse XML views using Python, in which case the `date_start_invoice_timesheet` field could return an error, as the `options` attribute uses a Javascript boolean `true`. Solution -------- Use `'true'`, which will get parsed as `true` in JS via `archParseBoolean`. Forward-Port-Of: odoo/odoo#230278
Event description links are now formatted so they display correctly in Gmail. This prevents broken or confusing links in event emails, improving the experience for recipients.
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#230529 Forward-Port-Of: odoo/odoo#228359
This fixes an issue that prevented users from editing properties on certain demo job offers in the Recruitment app. The affected demo jobs now use the current company automatically, so their settings can be opened and changed without warning errors.
Original PR description
Steps to reproduce: - Go to the Recruitment app - Open the configuration panel for the demo offer for CTO, Consultant, Experienced Developer or Human Resources Manager - Click on the cogwheel - Select "Edit properties" - A warning appears and you can't edit properties Reason: The definition of the job demo data sets the "company_id" field to False, which causes an error when you try to edit the properties. How it was fixed: By removing the explicit value of False for the field "company_id", it will auto assign the field to the current company and allow the properties to be edited correctly. Task ID: 5093032 Forward-Port-Of: odoo/odoo#227633
This fix prevents an error when employees open their personal preferences after being assigned to a group. It also adds test coverage to ensure the preferences page remains accessible in this HR-related setup.
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 Forward-Port-Of: odoo/odoo#229498
Creating a new website page while using mobile view no longer triggers an error. This helps website editors work reliably across device previews without interruptions.
Original PR description
Steps to reproduce: 1.open website. 2.switch to mobile view. 3.click new button and select new page option 4.a traceback occurs. Before this commit: Creating a new page in mobile view raised a traceback because contentDocument was undefined due to an incorrect selector. After this commit: The issue is resolved by using the correct querySelector value, ensuring that contentDocument can be accessed properly. Forward-Port-Of: odoo/odoo#227218
This fix updates the purchasing stock test setup so product route selection is available when automated reordering rule tests run. It prevents a test failure caused by a recent internal configuration change, helping maintain system reliability without changing user-facing behavior.
Original PR description
The setup class `TestReorderingRule` fails with `AssertionError: field 'route_ids' is not visible`.
This happens because the `route_ids` field on the product form is only visible when `has_available_route_ids` is `True`, which requires at least one route to be `product_selectable`.
After recent changes here: https://github.com/odoo/odoo/pull/223685, the Buy route (`purchase_stock.route_warehouse0_buy`) is no longer product-selectable, causing the field to be hidden and the test to break.
This commit re-enables `product_selectable` on the Buy route in tests to make sure `route_ids` is visible and the reordering rule tests run successfully.
I also removed `cls.env.user.group_ids += cls.env.ref('uom.group_uom')` it was a duplicated line, from two different fixes.
[RB-232574](https://runbot.odoo.com/odoo/error/232574)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#228429Invoice and sales report line spacing has been corrected so regular lines keep their intended table alignment, while section headers use the adjusted spacing. This improves the visual consistency and readability of customer-facing documents without changing report content.
Original PR description
In commit 4e81bb2e2f99ef6e038534de05a4dbe48080c49e the section design was reviewed on the reports. However the condition applying the default padding applies on every line instead of the sections, defaulting the line padding-left to 4px instead of its table design offset. We now set the first section to 8px padding to follow the natural external_layout table design offset. task-5152869 Followup task-5085892 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes Adyen redirect payments so they no longer fail due to amount or currency checks that do not apply to this payment flow. It helps ensure customers can complete redirected card payments more reliably.
Original PR description
Amount and currency validation is skipped for redirect transactions. Forward-Port-Of: odoo/odoo#227289
The guidance animation in Discuss calls now appears on the fullscreen button instead of the overflow menu. This makes it clearer for users how to enter fullscreen mode now that the button is directly available in the call view.
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  Forward-Port-Of: odoo/odoo#230382
Copied payment providers are now published by default again. This prevents newly duplicated providers from being hidden unexpectedly, helping businesses keep payment setup flows working as intended.
Original PR description
Following commit d2949c8, the copied provider is no longer published by default. Runbot issue 233300
Changing the time off type no longer unexpectedly alters the selected start and end hours for hourly leave requests. This helps employees and HR teams avoid accidental scheduling errors when editing leave details.
Original PR description
- made `request_hour_from` and `request_hour_to` stay unchanged when switching between time off types task-id: 5085389 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227235
WhatsApp message read indicators can now be shared consistently across message previews and chat bubbles. This reduces duplicated logic and helps ensure users see the same read-status cues in more places.
Original PR description
Before [this](https://github.com/odoo/odoo/pull/230075), the `showSeenIndicator` was part of the `Message` component, since that is the only place it was used, but with the intended change it will now be used by the `NotificationItems` and `Chatbubble` to show in the message previews. As the `showSeenIndicator` was part of the message component we had to redifine this getter every time we had to use it. This commit moves it from message component to message model so that it can be reused anywhere it is needed. Community PR: https://github.com/odoo/odoo/pull/230075 task-4825814
This update changes how AI tool functions are called so they are easier to customize and stay aligned with newer Odoo versions. It helps reduce compatibility issues for future overrides without changing the user-facing AI experience.
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#96630 Forward-Port-Of: odoo/enterprise#96528
The Mexican electronic invoicing module now preserves valid accented characters, including ü, in legal names. This prevents compliant customer or company names from being incorrectly altered and helps avoid issues with SAT invoice 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
The Indian payroll demo contract now uses Mitchell Admin as the HR Responsible instead of OdooBot. This makes the sample offer signing flow better match a realistic logged-in user scenario for demos and testing.
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 Forward-Port-Of: odoo/enterprise#95176
Payroll payment reports now handle employees who have multiple bank accounts, including accounts assigned a 0% salary split. This prevents report generation from failing and lets payroll teams produce the CSV reliably in split-payment setups.
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. Forward-Port-Of: odoo/enterprise#94468
The update moves HR-related scheduling tests into the HR-specific project module so builds no longer fail when the HR app is not installed. This keeps automated checks aligned with installed apps and improves reliability without changing user-facing behavior.
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 Forward-Port-Of: odoo/enterprise#96365
Closing the AI chat window in Discuss is now covered by a test to ensure it does not cause a crash. This helps keep the messaging experience stable when users dismiss AI-assisted drafting.
Original PR description
https://github.com/odoo/odoo/pull/230609
fix an accidental change during a forward port from "Out of Contract" to "Out of version" task-5075058 Forward-Port-Of: odoo/enterprise#94144
Original PR description
fix an accidental change during a forward port from "Out of Contract" to "Out of version" task-5075058 Forward-Port-Of: odoo/enterprise#94144
The spreadsheet document tests now load the full chart support they need before running. This prevents later tests from failing unpredictably when they rely on specialized chart types such as treemap or geo charts.
Original PR description
Some tests were loading Chart.js using loadJS, without the corresponding bundle. That means that the test that comes after could fail if they required treemap/geo charts, as they weren't loaded in ChartJs. Task: [5003595](https://www.odoo.com/web#id=5003595&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#96697
The payroll settings now show the Accounting section for every country, making the Batch account move lines option accessible to all users. SEPA-specific payroll settings remain limited to SEPA countries, so businesses outside SEPA can use the accounting batching option without seeing irrelevant payment settings.
Original PR description
Made the "Accounting" block visible for all countries and placed the Batch account move lines option inside it, instead of inside Payroll SEPA. As a result, Payroll SEPA remains visible only for SEPA countries, while Batch account move lines is now available for all. task-5138344