Monday, February 2, 2026
29 changes · 19.0
New functionality added to Odoo
This update introduces sample data for the Swiss HR Payroll Localization, making it easier to test and showcase the payroll functionality. The demo includes company and employee details, along with a year's worth of payslips, allowing for demonstration and verification of the Swiss payroll process.
Original PR description
This commit adds demo data for the Swiss HR Payroll Localization to facilitate testing and demonstration of Swiss payroll. The demo data includes the company setup, employee with relevant details, and 1 year of payslip history for that employee. Task: 5870506
Enhancements to existing features
Partners can now show which companies are linked to them, making it easier to tell whether a partner represents the current company, another company, or an external contact. This helps finance users review company relationships more clearly and avoid confusion when working with partner records.
Original PR description
When a company is created, a partner is linked via a Many2One field from company to partner. But the inverse is also needed to check whether this partner is linked to the current company or another company or is external. task-5365677
Resolved issues and error corrections
The live chat information side panel now uses the same font size for the Open Tickets and Open Leads section titles as the other sections. This fixes a small visual inconsistency and makes the panel look more polished and uniform for users.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ In the live chat info side panel, the "Open Tickets" and "Open Leads" section titles were displayed with a different font size compared to the other section titles. This created an inconsistent visual appearance in the info side panel. **Current behavior before PR:** --------------------------------- - "Open Tickets" and "Open Leads" titles use a different font size **Desired behavior after PR is merged:** ----------------------------------------- - "Open Tickets" and "Open Leads" titles use the same font size as other sections - Info side panel displays a consistent and uniform style **Task:** [5385392](https://www.odoo.com/odoo/project/1519/tasks/5385392) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Documentation and clarification updates
This pull request records an individual contributor license agreement for Kristian Solkær. It helps ensure the project has the necessary legal permissions to accept contributions from this contributor.
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
Point of Sale buttons now show a clearer visual difference between active and disabled states. This improves usability in action dialogs, especially in bright environments where low contrast can make choices harder to see.
Original PR description
Before this PR there was a contrast issue between disabled and active secondary buttons in the action dialog. This was due to a customization where the `btn-secondary`'s default background color was…
Before this PR there was a contrast issue between disabled and active secondary buttons in the action dialog. This was due to a customization where the `btn-secondary`'s default background color was lightened. To fix this, we used the same lighter background color for disabled `.btn-secondary`, reduced the opacity of its text and desaturated tho whole button for whenever there is color such as the "reward" button. This way we can distinguish between the two states. A border was added to `.btn-secondary` in order to make the button more visible in light-challenging situations (in broad daylight for example). task-5186928 | Before | After | | ------------- | ------------- | | <img width="1002" height="647" alt="Screenshot 2025-11-06 at 13 17 27" src="https://github.com/user-attachments/assets/cc63d6e1-8587-427e-b5cd-de99e96df8c0" />|<img width="1004" height="645" alt="Screenshot 2025-11-06 at 12 58 07" src="https://github.com/user-attachments/assets/f199fd94-1223-4c6b-869b-e8d66d99bc82" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Turkish Nilvera e-invoice integration now has automated tests covering key API interactions and invoice file handling. This helps reduce the risk of regressions and improves confidence that electronic invoicing continues to work reliably for Turkish businesses.
Original PR description
There are no tests for the Turkish e-invoice module. This commit adds that. Task ID: 4655864 Forward-Port-Of: odoo/odoo#230148 Forward-Port-Of: odoo/odoo#216179
This update adjusts the NSSF (National Social Security Fund) contribution limits in the Odoo Enterprise system to align with the latest regulations as of 2026. Specifically, the lower and upper earnings limits have been revised, impacting the maximum combined contribution an employee can make. This ensures compliance with Kenyan tax laws.
Original PR description
This commit updates the NSSF Lower and Upper Earnings Limits in accordance with the 4th year of implementation of the NSSF Act 2013. - Set Lower Earnings Limit (Tier 1) to 9,000. - Set Upper Earnings Limit (Tier 2) to 108,000. - Resulting max combined contribution is now 6,480. Task: 5485002 Forward-Port-Of: odoo/enterprise#105019
The Website app now only shows the eCommerce reporting menu to users who have permission to open it. If someone reaches the dashboard without the right access, they now receive a clear access error instead of being silently redirected to the website.
Original PR description
__Steps to reproduce on runbot:__ 1. Login with Mitchell Admin 2. Remove Marc Demo from the `sales_team.group_sale_salesman` access group (User: Own Documents Only) 3. Login with Marc Demo 4. Open…
__Steps to reproduce on runbot:__ 1. Login with Mitchell Admin 2. Remove Marc Demo from the `sales_team.group_sale_salesman` access group (User: Own Documents Only) 3. Login with Marc Demo 4. Open the Website app and go to Reporting > eCommerce => You are redirected to the website in frontend mode __Reason:__ Clicking on the eCommerce reporting menu calls `action_dashboard_redirect`, which redirects to the website if the user is not in `base.group_system`, `website.group_website_designer`, or `sales_team.group_sale_salesman`. Since Marc Demo is not in any of these groups, he is redirected to the website without any message, which is not very user friendly. __Fix:__ - Add the groups to the menu to prevent showing it if the user does not have access to it anyway. - Raise an access error instead of redirecting to the website to make it clear to the user that they cannot open the dashboard even if they could see it. This also fixes [`TestMenusDemo`] by preventing this menu from being tested with the demo user in case he doesn't have access to it. [`TestMenusDemo`]: https://github.com/odoo/odoo/blob/736b71202db840ba6a7ed7e7f014b5b7c493d589/addons/web/tests/test_click_everywhere.py#L41C9-L41C41 runbot-234747 Forward-Port-Of: odoo/odoo#244963
This update removes an unwanted checkmark indicator that could overflow in Mail discussion action dropdowns. It keeps the menu cleaner and prevents confusing or awkward visual artifacts for users.
Original PR description
Webclient style has style to apply checkbox next to active dropdown item when it doesn't have the `.dropdown-item_active_noarrow`, through adding some content in `.dropdown-item:before`. This checkbox is problematic because it overflows with `Dropdown`, and items in a discuss action list dropdown already have enough to show when they are active or not. This commit cancels the webclient style of adding the checkbox by adding `dropdown-item_active_noarrow` on ActionList's dropdown items. Part of Task-5867464 Before / After (see barely checkbox overflows on "Unmute" item): <img width="254" height="268" alt="Screenshot 2026-01-30 at 18 06 27" src="https://github.com/user-attachments/assets/196ec808-c22c-41f0-9ab3-c8f9b9a52535" /> <img width="254" height="264" alt="Screenshot 2026-01-30 at 18 17 42" src="https://github.com/user-attachments/assets/77a918db-fd55-4a09-8c47-ec615bd4f280" />
Selecting the reviews wall snippet in the mass mailing editor no longer causes the builder to crash. This keeps the email/page editing experience usable and prevents interruptions when working with that snippet.
Original PR description
This commit fixes an issue with the s_reviews_wall snippet which makes the builder crash if it selected. The issue was that the BorderConfigurator used on the option's template wasn't specified in the option's components. Leading to a crash that renders the builder inoperable. task-5380467 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures product display names update correctly when a user or process switches language context. It prevents previously cached product names from appearing in the wrong language, improving accuracy for multilingual users and customer-facing documents.
Original PR description
Description of the issue/feature this PR addresses: Compute of display_name in different languages that can be returned incorrect Current behavior before PR: When accessing two times in the same method the display_name of a configured product but the second time having a .with_context(lang=lang) other than the previous language, the returned display name will not be in the specified language as the cached value will be returned. Desired behavior after PR is merged: _compute_display_name should always take into account a change of language in context when the value is accessed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246489 Forward-Port-Of: odoo/odoo#242829
Opening a record from Mail now respects cases where the record should not default to a form view, allowing other appropriate views to appear. This improves navigation consistency and avoids showing users the wrong record layout, especially for document-related workflows.
Original PR description
Records of some models may not want to be shown in their form view by default. See related ENT PR for documents. We re-export to avoid patching order issues. In particular, this makes sure that if we are in the webclient, the chat window is opened before executing the "real" open. Task-5386466 Forward-Port-Of: odoo/odoo#246410 Forward-Port-Of: odoo/odoo#244289
This update fixes an intermittent automated test failure in the Website module when adding an image as a cover. It makes the test wait until the editing sidebar is fully updated, reducing false failures and improving confidence in releases.
Original PR description
The test "Add image as cover" was failing intermittently due to image loading depending on an RPC with an unpredictable duration. This could exceed the 200ms timeout used in waitFor. Use `waitSidebarUpdated`` to wait for the ongoing action to finish and ensure the sidebar is fully updated. error-Add image as cover 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#246470
The point of sale QFPay integration now recognizes QFPay's updated refund notification wording. This helps ensure refund updates are processed correctly after QFPay changed its notification type from cancel to refund.
Original PR description
QFPay changed the notify_type for refund notifications from "cancel" to "refund". https://sdk.qfapi.com/docs/common-api/async-notifications/ --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where the API documentation could display or process some newer Python type labels incorrectly. It helps keep generated developer documentation reliable and prevents related documentation tests from failing.
Original PR description
In python 3.10, `parse_signature` causes some issues with some of the newer type annotations (eg: `list[int]`). This broke several test cases in api_doc where signatures were stringified except when converted from `Self`, `models.BaseModel` and `models.Model`. This commit forces those type aliases to be replaced by the string `'list[int]'`. runbot-237792
This fix prevents the line below list headers from disappearing in Firefox at certain zoom levels when sticky headers are used. It keeps list views visually consistent and easier to read for users working in Firefox.
Original PR description
In Firefox, the separator below the list header could disappear at certain zoom levels when using sticky headers. After this commit, the list header border will not disappear. Task-5249221 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where users wouldn't receive a warning when entering invalid email addresses during shared sign request declines. Now, the system validates email formats and displays a clear warning message, preventing incorrect data entry and improving the overall user experience. This ensures data integrity and reduces potential errors.
Original PR description
Version: - saas-18.4 Steps to reproduce: - Create a shared sign request. - Try to decline the sign request. - Enter an email address in an invalid format. Issue: - No warning is shown to the user for an invalid email and An RPC_ERROR appears in the console. - This happens because the _check_signer_email_validity constraint fails when signer_email is not valid. Solution: - Validate the email format when the user submits the refusal request. - Show a warning message if the email format is invalid. task-5454929 Forward-Port-Of: odoo/enterprise#103146
This update fixes an issue where the UrbanPiper store identifier field was visually overflowing its container. The changes include wrapping the field and button in a container with a flexible width, ensuring a cleaner and more professional appearance for users.
Original PR description
Before this commit: --- - The UrbanPiper store identifier field could overflow its container. After this commit: --- - Wrap the store identifier field and action button in a container. - Apply `overflow-hidden` and flexible width to the store identifier field. task-5472992 Forward-Port-Of: odoo/enterprise#103464
This update resolves a technical issue where the demo data for the Mexican payroll modules incorrectly set the company and partner names during installation. This prevented proper CFDI stamping of invoices and payment complements within the demo databases, ensuring accurate demonstration functionality.
Original PR description
The demo data of the Mexican payroll modules was overriding the company and partner name during installation, which can break the CFDI stamping flow for invoices and payment complements in demo databases. Forward-Port-Of: odoo/enterprise#105367 Forward-Port-Of: odoo/enterprise#102558
This update resolves a bug that caused incorrect schedule calculations when using planning slots linked to material-type resources. The fix restricts schedule computations to only include attendance records for the employee creating the record, ensuring accurate time tracking and preventing scheduling discrepancies.
Original PR description
Steps to reproduce: - Set the work entry source to planning for an employee. - Create an attendance for that employee. Issue: - Errors occurred when planning slots linked to material-type resources were included in schedule computation. Fix: - Restrict planning slots used for schedule computation to records whose employee_id belongs to self.ids. task-5476771
This update resolves an issue where the default packaging type for service products in the l10n_ke_edi_oscu module was incorrectly configured. The previous XML ID no longer existed, leading to a potential error. This change ensures service products are correctly packaged for EDI reporting in Kenya.
Original PR description
Update the xmlid for the default packaging type for service products, the previous one `l10n_ke_edi_oscu.packaging_type_ou` seems to have never existed. opw-5220129 Forward-Port-Of: odoo/enterprise#105905
This update resolves an issue where documents actions would fail after a language was deactivated. The system now filters actions to only include those linked to the currently active languages, ensuring a smoother user experience and preventing errors when switching languages. This improves stability and usability for users working with multiple languages.
Original PR description
Filter Embedded Actions Based on Active Languages ### Impacted versions: 18.0 and later ### Steps to reproduce: - Install at least 2 languages - Install documents and accounting or other app to have actions on select - Uninstall one language - You will get an error when trying to activate again actions on select (also appears on network interface) ### Current behavior: When a language is deactivated, its corresponding translations may still appear in server actions, leading to errors when trying to add them to the context. This issue is now resolved by filtering actions to only include those linked to active languages. Task: [5420820](https://www.odoo.com/odoo/project/49/tasks/5420820) Forward-Port-Of: odoo/enterprise#102938
This update reactivated previously disabled tests related to work order accounting, specifically focusing on scenarios involving employee access rights and project restrictions. The changes, including the necessary `sudo` implementation, ensure accurate accounting and reporting for work orders, addressing a previous gap in testing.
Original PR description
Bring back all tests temporarily disabled by [1] `.test_mrp_aa_employee_without_account_rights` `.test_user_can_complete_workorder_despite_project_restrictions` Use lowest rights level. This explains the needed `sudo` in: `/project_mrp_workorder_account:MrpWorkcenterProductivity.write` [1] https://github.com/odoo/enterprise/commit/be6eb5e22283e952554b1bab435a7113f3061e23
This update addresses a usability issue by preventing the Documents app from automatically opening the document's form view when accessed through various paths, such as direct links or systray notifications. This change ensures a cleaner user experience and aligns with how users typically interact with documents within Odoo.
Original PR description
Users do not want to access the form view of the document by default. This PR solves three cases for accessing documents.document records that were not covered before: * From the basic path pattern `odoo/x/documents.document/<id>` * From a systray notification "Open Form View" * when we are not yet in Documents * when we already are in Documents * From the Discuss app, on the record's thread Tests for most of these are included. Additionally, make sure the document is selected on accessing from `_get_access_action`. Task-5386466 Forward-Port-Of: odoo/enterprise#105934 Forward-Port-Of: odoo/enterprise#104622
This update resolves an issue where users were repeatedly prompted to select an employee when adding goals to an appraisal. The fix corrects a technical error that caused the system to incorrectly pass employee information, streamlining the goal creation process. This ensures a smoother and more efficient experience for HR staff.
Original PR description
When adding goals from an employee appraisal, Appraisal of an employee > Goals > Open Library > Select Goals > Continue On the next screen, you need to select the employee, but you come from an employee appraisal! The employee was already known but the flow still asked to re-select an employee again. - The root cause was the employee context was passed as a list while goal creation expects a single employee. - This fix adapts the context so goals are directly created for the current appraisal employee. task-[5420664](https://www.odoo.com/odoo/project/1251/tasks/5420664)
This update resolves an issue where the portal payment screen would scroll to the bottom without displaying a warning message when no payment providers were available. The fix ensures a clear warning message appears, guiding users to a suitable payment method and improving the overall user experience. This prevents confusion and potential payment failures.
Original PR description
The portal payment screen incorrectly scrolls to the bottom when the Pay button is clicked, but no payment methods or warning message are shown. This happens when no payment provider is published. This PR fixes the issue by ensuring the "no provider" warning message appears in all cases. task-5388313
This update fixes an issue where the rental report was displaying incorrect dates. The fix ensures that each row in the report accurately reflects the start and return dates of a rental order, providing more reliable reporting data. This improves the accuracy of rental tracking and analysis.
Original PR description
The rental report is a daily report with x rows by rental order, with x the days between the start and return dates. With generate_series inside the select, the query was creating x rows with the same id, resulting in the date field not being correctly displayed (one unique date, the start date). This fix corrects the generation of the report to display the real date on each row. opw-5266525 Forward-Port-Of: odoo/enterprise#104764
This update corrects a previous issue where confirming one upsell on a subscription didn't automatically cancel the remaining alternative upsells. Now, confirming any upsell will ensure all other upsells for that subscription are cancelled, streamlining the subscription process and preventing unnecessary orders.
Original PR description
Currently, when creating multiple upsells for a specific subscription, confirming one of them leaves the others in the sent state instead of cancelling them. This fix ensures that all other upsells for the same subscription are cancelled once one upsell is confirmed. task-5270139 Forward-Port-Of: odoo/enterprise#105694 Forward-Port-Of: odoo/enterprise#100058
This update resolves a bug preventing the creation of vendor partners from UY EDI vendor bills. The issue stemmed from incorrect state detection when the 'Departamento' XML tag was missing. This fix ensures accurate vendor partner creation from these bills, streamlining invoice processing.
Original PR description
If the xml file has a tag "Departamento" without a value, the vendor partner creation fails because the state is searched with an empty string and detects a state that is not correct because the xml has no state value. Task Adhoc side: 109004 Forward-Port-Of: odoo/enterprise#105801