Thursday, October 30, 2025
13 changes · master
Resolved issues and error corrections
A supporting spreadsheet filter check was moved to the shared Odoo codebase where it is now needed. This prevents issues when community features use spreadsheet-style global filter operators without the enterprise-only declaration.
Original PR description
THe method `has_searchable_parent_relation` was declared in spreadsheet_edition but it's been used in Odoo community since the introduction of operators for the global filters in http://github.com/odoo/odoo/pull/215217. Task-5189262 Forward-Port-Of: odoo/enterprise#97938
A payroll accounting test for the United Arab Emirates localization was updated so its test user always has the needed payroll permissions. This prevents environment-specific test failures when demo data is not installed, improving reliability of automated validation.
Original PR description
The test `TestPayslipValidation` in `l10n_ae_hr_payroll_account` was failing on runbot without demo data:
AccessError: You are not allowed to access 'HR Work Entry Type'
This happens because the test user does not belong to a group with access to `hr.work.entry.type`. With demo data, the user inherits the necessary rights, but without demo data it fails.
This commit explicitly grants the test user the `hr_payroll.group_hr_payroll_user` group to ensure consistent access across environments.
[RB-232462](https://runbot.odoo.com/odoo/error/232462)
Forward-Port-Of: odoo/enterprise#96102Companies in Belgium that are not subject to VAT can now connect to CodaBox even when their VAT number is marked as non-applicable. The system will use the company registry number instead, reducing setup issues for eligible businesses.
Original PR description
If a company is not subject to taxes, they may not have a VAT number. In that case, the field can be left empty, such that the Company Registry is used instead for the CodaBox connection. However, the case where "/" (Non Applicable) was used as the VAT number was handled. This commit now handles VAT="/" in the same way it handles no VAT at all by using the company registry as a fallback. The commit also cleans up how the company ID is used to avoid duplicated code by creating a computed field. opw-5164155 Forward-Port-Of: odoo/enterprise#98277 Forward-Port-Of: odoo/enterprise#98025
Opening the duplicate transactions wizard without a linked journal no longer causes an error. This improves reliability for Accounting users and prevents an unexpected crash in a setup or administrative view.
Original PR description
When user opens the ``account.duplicate.transaction.wizard.form`` view, a traceback appears.
Steps to reproduce the error:
- Install ``Accounting`` module
- Using Open View, Open ``account.duplicate.transaction.wizard.form`` view
Traceback:
```py
UndefinedFunction: operator does not exist: integer = boolean
LINE 5: WHERE st_line.journal_id = false
^
```
https://github.com/odoo/enterprise/blob/8146cfc7b47ba8536f0fa5208cc69685371b55b8/account_online_synchronization/models/account_journal.py#L278
When the view is opened, the ``_compute_provider_duplicate_ids`` method is triggered,
which calls ``_get_provider_duplicate_transactions`` method.
Since no journal is linked to the wizard, it will raise the traceback from the above line.
ref: 218e8a365b153a202d062152ff69234482bcccf2
sentry-6943450225
Forward-Port-Of: odoo/enterprise#97196This fix aligns Enterprise and Studio navigation behavior with a related core platform change. It helps ensure page state is updated at the right time when screens load, reducing the risk of inconsistent navigation in the web interface.
Original PR description
*web_enterprise,web_studio This commit is the counter-part of odoo/odoo#233446 which changes the way the router state is updated by the action service when an action is mounted into the DOM. Some tests could be adapted and/or simplified.
This fix prevents users from creating a new workplace directly from certain employee and contract screens when that shortcut could trigger an error. Users can still select existing workplaces, reducing confusion and avoiding failed data entry in Swiss payroll workflows.
Original PR description
The _rec_name was previously set to partner_id, causing type errors when typing a new workplace name in a Many2one field. Couldn't change it to anything else, as one should have to create a new field in that stable version and this is not the best practice. As a workaround, the corresponding field in the l10n_ch_hr_contract_views.xml is removed from it the quick_create to prevent the creation of new names on the fly. task-5043056 Forward-Port-Of: odoo/enterprise#98173 Forward-Port-Of: odoo/enterprise#93424
The Chilean electronic invoicing process now selects a single matching company when multiple companies share the same tax ID. This avoids processing errors for organizations with branches or duplicate tax identifiers.
Original PR description
Before this commit, if multiple companies shared the same RUT (VAT), for example companies with branches, searching a recipient could return more than one company record. This could lead to errors when accessing variables that expect a single record. To prevent this issue, the search is now limited to one company record. OPW-5128543 Forward-Port-Of: odoo/enterprise#98352
Deleting a signer role from a Sign template now works correctly even when that role includes linked radio buttons. This prevents an error that could interrupt template editing and improves reliability for users preparing documents for signature.
Original PR description
Before this commit, when deleting a Signer role that already had a radio button dropped in the Template, it would trigger a traceback since the were trying to delete radio buttons individually. This was problematic because radio buttons are deleted in chain, so when deleting the first, we already delete all the remaining radio buttons and its chain link. After this commit, no issue is raised anymore when deleting a signer role, as radio buttons already deleted are now skipped in the code. task-5130925 Forward-Port-Of: odoo/enterprise#96097
The Sign app now creates new signer fields in a more reliable order, avoiding occasional display issues caused by timing delays. This helps users add signers without inconsistent or missing form elements.
Original PR description
Refactor setTimeout usage in sign_template_sidebar.js to prevent non-deterministic behavior. The previous implementation introduced potential timing issues by relying on a fixed 100ms delay, causing span and input components to not render consistently. The refactored code ensures proper rendering order and resolves the timing-related problem. task-4926187 Forward-Port-Of: odoo/enterprise#89741
Changing a contact's email address only from uppercase to lowercase, or the reverse, no longer triggers previously sent signature requests to be emailed again. This prevents duplicate messages to customers and reduces confusion around already issued signing requests.
Original PR description
Before this commit, when changing the partner email to uppercase or lowercase, it would resend sign requests emails for each previously sent signed request to that email. After this commit, we don't resend anymore the sign requests emails after a case sensitive email change of a partner. task-4844230 Forward-Port-Of: odoo/enterprise#87112
Appointment shared links now handle invalid booking URL entries gracefully instead of triggering an error. This prevents users from being blocked by a crash when an incorrect extra link is entered, improving reliability during appointment setup.
Original PR description
This error occurs when a user provides an invalid URL (e.g., one containing characters like “:”, “..”, etc.) in the link field. Steps to reproduce: --- - Install `appointment` module - Appointment >…
This error occurs when a user provides an invalid URL (e.g., one containing characters like “:”, “..”, etc.) in the link field. Steps to reproduce: --- - Install `appointment` module - Appointment > Shared Links > New - Fill `Appointment Types` > Link: `testurl:` (provide wrong link in Extra link) Traceback: --- `ValueError: Extra URL must use same scheme and host as base, and begin with base path` At [1], this error occurs because during computation, the method calls `urljoin`. If the URL contains a colon (e.g., ‘:’), it is compared with the base URL, and when they differ, a `ValueError` is intentionally raised at [2]. This leads to the observed error. This commit resolves the issue by catching the error when an invalid URL is provided. [1]: https://github.com/odoo/enterprise/blob/fc931c81ca7b2ebad220cf057e15583e046810b9/appointment/models/appointment_invite.py#L280 [2]: https://github.com/odoo/odoo/blob/9900375bc0bac2754150fd8cd6a1e45ecad8da83/odoo/tools/urls.py#L55-L58 sentry-6941171133 Forward-Port-Of: odoo/enterprise#97353
This fixes an automated test that was failing because it depended on parts of the system that were not actually available in its test setup. The test now uses available related apps, helping keep the validation pipeline reliable without changing customer-facing behavior.
Original PR description
Purpose: -------- Commit [1] added a test tour relying on the ai_app app which is not a dependency of test_discuss_full_enterprise (only ai is). This commit replaces usages of the views of the ai_app by the views of crm and im_livechat, which are dependencies of the module. Fixes https://runbot.odoo.com/odoo/runbot.build.error/233603 [1]: https://github.com/odoo/enterprise/commit/a7b6eb985e85477f38f15c0e269c2b5ae10d37f6 Forward-Port-Of: odoo/enterprise#98371
This update adjusts spreadsheet edition tests so they remain reliable after recent styling changes. It helps ensure list and pivot spreadsheet autofill behavior continues to be validated without affecting day-to-day users.