Wednesday, January 28, 2026
8 changes · 19.0
New functionality added to Odoo
This update adds the necessary data to support Taiwan's VAT tax reporting requirements within Odoo. It includes the `account.return.type` model, enabling accurate reporting for businesses operating in Taiwan. This enhancement ensures compliance with local tax regulations.
Original PR description
This commit adds the necessary data records for the `account.return.type` model to support Taiwan VAT tax return. [Task-3371895](https://www.odoo.com/odoo/project.task/3371895)
Resolved issues and error corrections
This update resolves a test failure related to how contract end dates are handled in the Enterprise payroll module. The fix ensures that contract end dates are correctly calculated, preventing potential issues with automatic contract terminations. This improves the reliability of payroll calculations.
Original PR description
### Cause: Apparently the contract ends automatically after a period if `contract_date_end == False` ### Solution: Set `contract_end_date` to ` Date.today() + relativedelta(years=2)` like in `hr_payroll/tests/common.py` runbot-237945 runbot-237894 Forward-Port-Of: odoo/enterprise#104627
Code cleanup and technical improvements
This update streamlines the testing process for the Ar-EDI module by automatically verifying data against JSON files. Previously, tests required external modes, but now they run more reliably and easily adaptable with simple test tag adjustments. This improves the overall stability and maintainability of the Ar-EDI module.
Original PR description
This commit refactors the whole `l10n_ar_edi` test suite to use the new helpers, and made it possible for the test to (finally) be run without external mode. Now, when running these new tests, the test framework will by default assert the request data with their associated JSON file. When a change is made, new overwrites for the test files can be easily changed by just adding the `SAVE_JSON` test tag on the command to run the tests. task-4891206 Forward-Port-Of: odoo/enterprise#104886 Forward-Port-Of: odoo/enterprise#103370
The 'Unnamed' breadcrumb issue in the Documents section, triggered when navigating from the systray, has been resolved. This ensures the correct folder name is always displayed, providing a consistent and accurate user experience for accessing documents.
Original PR description
When navigating to Documents through the activity menu (systray), the breadcrumb displays "Unnamed" instead of showing the proper folder name. Steps to reproduce: 1. Click the activity menu icon (clock) in the systray 2. Click on "Documents" in the activity dropdown 3. Observe the breadcrumb shows "Unnamed" The issue occurs because when navigating from the systray, the folder section's activeValueId is undefined. This causes getSelectedFolderAndParents() to call folderSection.values.get(undefined), which returns undefined instead of the default folder. Without a valid folder object, the breadcrumb computation has no context and falls back to displaying "Unnamed". The fix ensures that when activeValueId is undefined, we explicitly pass false to values.get(), which correctly retrieves the root/default folder. opw-5473442
This update resolves an issue in Odoo's Web Studio where it could incorrectly create related fields linked to non-searchable data. This prevented warnings and errors, particularly in business settings. The change ensures that related fields are built correctly, regardless of the field's searchability, improving stability and reliability.
Original PR description
Before this commit studio allowed to make a related field with a non-searchable field (ie standard computed fields) in the the chain. This triggered a warning at creation (at fields.py:resolve_depends) and errors when using in a business setting. After this commit, the filter to build the relational field is modified to take into account this. opw-5436158 Forward-Port-Of: odoo/enterprise#105668 Forward-Port-Of: odoo/enterprise#105607
This update fixes a technical issue that previously caused errors when adding transcription snippets to new records. The change ensures proper record identification and saving, preventing exceptions and improving the stability of the AI transcription feature. It also resolves a localized testing issue.
Original PR description
This PR fixes an issues where an exception would be thrown when inserting a transcription snippet on an unsaved record. It does so by removing the resId, resModel props and only retrieving them when actually needed (when opening the full composer to send the summary). Also whennever opening the full composer, we force a save on the record to ensure proper resId. The PR also adapts `voice_transcription_plugin.test.js` to add the locale to the date that is inserted when starting a transcription, avoiding local test fails. task-5788331
This update corrects a technical issue preventing accurate payslip updates by ensuring the necessary permissions are granted during data access. Specifically, a sudo call is now used to read slip IDs, resolving a previous error and improving payroll processing reliability. This ensures employees' payroll information is correctly updated.
Original PR description
From a previous PR (103147), the payslip update logic was moved to the write function which gets called when a field is changed. In doing so, a sudo call is necessary to avoid problems with users modifying their own record (and not having access rights to read slip_ids). This also applies to tests and solves the following runbot error: Runbot Error: 237743 Forward-Port-Of: odoo/enterprise#105287
This update ensures that sign templates are automatically named with the correct document name, regardless of the user's language setting. Previously, templates created in non-English languages would default to 'New Template' due to a comparison issue. This fix guarantees accurate template naming for all users.
Original PR description
## Steps to reproduce: 1. Upload a new PDF document to be signed. 2. Select it in the Documents app to sign it. 3. Check the name of the sign template created. ## Issue: When creating signature templates in languages other than English, the template name would stay as "New Template" instead of updating to the actual document name. This happened because the code was comparing the template name against a translated version of "New Template", but the template was initially created with the English default value. Since "New Template" ≠ "Nueva Plantilla" (Spanish), the comparison failed and the name never got updated. The fix ensures we always compare against the original English default value, so the template name gets properly updated to match the document name regardless of the user's language. Related commit: 4254542 opw-4980747 Forward-Port-Of: odoo/enterprise#92682