Daily updates from Odoo
Tuesday, October 14, 2025
17 changes · master
Enhancements to existing features
The attendance overtime rule form now prevents users from editing the rate when the Work Entry module is installed. This keeps overtime configuration consistent with payroll work entry rules and reduces the chance of accidental changes.
Original PR description
If Work Entry module is installed --> Make the rate readonly within the form view of the attendance overtime rule. Task-5107738 Forward-Port-Of: odoo/enterprise#95352
The spreadsheet selector grid now automatically receives focus when opened, so users can start interacting with it right away. This reduces an extra click and makes spreadsheet editing feel smoother and faster.
Original PR description
Task: 5106371 Forward-Port-Of: odoo/enterprise#95254
This update adds shared automated checks for localized point-of-sale flows across several countries. It helps reduce the risk of country-specific compliance or invoicing issues reaching customers by making these scenarios easier to test consistently.
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#96447 Forward-Port-Of: odoo/enterprise#91928
Resolved issues and error corrections
Creating a Belgian company with an alphanumeric ZIP code no longer triggers an error. The system now skips regional assignment when the ZIP code is not valid for Belgium, preventing interruptions during company setup.
Original PR description
Currently, in the Belgium localization, creating a company with an alphanumeric ZIP code raises an error. **Steps to Reproduce:** 1) Install **account,l10n_be_reports** module 2) Navigate to…
Currently, in the Belgium localization, creating a company with an alphanumeric ZIP code raises an error. **Steps to Reproduce:** 1) Install **account,l10n_be_reports** module 2) Navigate to **Settings>Users & Companies>Companies**. 3) Create a New Company and first set country as `Belgium` and then set a alpha-numeric value to `ZIP=(e.g. R93R2R3)` 4) Click anywhere on the screen **Error:** `ValueError: invalid literal for int() with base 10: 'R93R2R3'` **Root Cause:** since [this commit](https://github.com/odoo/enterprise/pull/93219/commits/d9f116b5ceda85a11c997b8d46ec9af5425cbf09), a new field `l10n_be_region_id` is computed based on zip as shown at [1]. When an alphanumeric `ZIP` is added, the computation searches the company region based on `zip_start` and `zip_end` as shown at [1]. However, `zip_start` and `zip_end` expect integer values only, as mentioned at [2], which causes the error. **Fix:** Prevent calculation of region for companies with invalid zip code for belgium localization. [1]- https://github.com/odoo/enterprise/blob/424a470188756fffed4437b83d127039795fbe59/l10n_be_reports/models/res_company.py#L37-L45 [2]- https://github.com/odoo/enterprise/blob/71cc92c9526234dcd44ec756375647a67729029f/l10n_be_reports/models/l10n_be_company_region.py#L17-L18 sentry-6931185627 Forward-Port-Of: odoo/enterprise#96736
SEPA payment files will now mark payments as high priority only for Belgian companies. This avoids unnecessary bank fees in other countries, such as Switzerland, while preserving the required behavior for Belgium.
Original PR description
Having priority set as HIGH for SEPA payments can induce extra fees (ex. in CH). This commit only sets the priority to HIGH for BE companies. task-4874217 Forward-Port-Of: odoo/enterprise#97006 Forward-Port-Of: odoo/enterprise#95420
This update corrects access settings for Swiss payroll employee version fields so the right payroll users can view and use them. It prevents HR officers from running into access issues when opening employee records, helping payroll-related workflows and automated checks run reliably.
Original PR description
Some fields on the version were still with the hr_user group where they should be payroll_user. This was causing some tour to fail when an HR officer tries to access an employee. Build error: https://runbot.odoo.com/odoo/runbot.build.error/233204
Payroll salary rules can no longer have their salary structure changed once they are linked to employee-specific properties. This helps prevent accidental changes that could affect payroll calculations or employee compensation records.
Original PR description
As some other `hr.salary.rule` fields (like Section and Unit), Salary Structure is now readonly when the rule has a property on an employee. 5135927 [task-5135927](https://www.odoo.com/odoo/project/1251/tasks/5135927) Forward-Port-Of: odoo/enterprise#96938
Employee contracts in Swiss payroll now only allow selecting insurance records that belong to the employee's company. This prevents accidental use of another company's insurance settings in multi-company environments and helps keep payroll data accurate.
Original PR description
Currently, in a multi-company setup, you are able to select insurances from other companies on the employee contract task-5157106 Forward-Port-Of: odoo/enterprise#96932 Forward-Port-Of: odoo/enterprise#96821
This update adjusts an internal workaround used by Gantt chart unit tests so the test suite remains compatible with recent testing framework changes. It is limited to automated tests and does not change business functionality for end users.
Original PR description
## Pull Request HOOT 37 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/230556 Forward-Port-Of: odoo/enterprise#97046 Forward-Port-Of: odoo/enterprise#96647
A typo was corrected so importing multiple images for a product variant no longer causes a crash. This improves reliability when generating or importing product content for online stores.
Original PR description
Fixed a typo that leads to a crash when importing multiple images for a product variant Forward-Port-Of: odoo/enterprise#96134
This fix updates an automated payroll pay run check so it no longer depends on a net payslip amount that can change from month to month. It helps keep payroll validation builds stable while still confirming wages are calculated and the net amount is present.
Original PR description
Instead of checking the net payslip amount which may vary from month to month, just check the basic wage and that the net amount is not 0. Build error: https://runbot.odoo.com/odoo/runbot.build.error/233213
Phone numbers in the VoIP call list now line up properly when no country flag is shown. This removes a small visual offset, making call records easier to scan and more consistent.
Original PR description
In the voip.call list view, when no flag is displayed, the phone number is slightly offset to the right. This is because the margin that separates the flag from the phone number is still present. This commit moves the margin from the phone number (always displayed) to the flag (sometimes absent). How to reproduce: 1. Make a call to an invalid phone number 2. Go to voip.call list view 3. Look at the numbers without a flag Forward-Port-Of: odoo/enterprise#96877
This change corrects how the Belgian reports partner form is linked so updates no longer fail when the citizen identification field is required. It helps ensure Belgian reporting modules can be upgraded smoothly without a server error blocking the process.
Original PR description
The citizen_identification field was added to the partner view in l10n_be_reports, but the form 281.50 view for this required field was incorrectly inheriting from the base partner view. That led to…
The citizen_identification field was added to the partner view in l10n_be_reports, but the form 281.50 view for this required field was incorrectly inheriting from the base partner view.
That led to a traceback when updating account_reports/l10n_be_reports modules in 19.0+ versions:
This fix PR is a backport requested from upgrade: https://github.com/odoo/enterprise/pull/92104#pullrequestreview-3144302023.
```py
Odoo Server Error
Occured on 86642809-master-all.runbot135.odoo.com on model ir.module.module on 2025-08-11 14:04:32 GMT
Traceback (most recent call last):
------- A lot of calls ------
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/data/build/odoo/odoo/tools/convert.py", line 745, in convert_xml_import
obj.parse(doc.getroot())
File "/data/build/odoo/odoo/tools/convert.py", line 616, in parse
self._tag_root(de)
File "/data/build/odoo/odoo/tools/convert.py", line 559, in _tag_root
f(rec)
File "/data/build/odoo/odoo/tools/convert.py", line 570, in _tag_root
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
odoo.tools.convert.ParseError: while parsing /data/build/enterprise/account_followup/views/partner_view.xml:4
Error while parsing or validating view:
Element '<xpath expr="//field[@name='citizen_identification']">' cannot be located in parent view
View error context:
{'file': '/data/build/enterprise/account_followup/views/partner_view.xml',
'line': 1,
'name': 'res.partner.view.form',
'view': ir.ui.view(5824,),
'view.model': 'res.partner',
'view.parent': ir.ui.view(127,),
'xmlid': 'res_partner_view_form'}
```
Forward-Port-Of: odoo/enterprise#96855The Swiss payroll salary rule screen now includes all relevant configuration fields that were previously only available in the backend. This helps payroll teams review and adjust wage type settings more easily, reducing the risk of incomplete salary rule setup.
Original PR description
task-4954650 Forward-Port-Of: odoo/enterprise#96824
This update corrects how Swiss payroll records identify companies by using the country set on the related partner record. This prevents payroll processes from missing the right companies when the company country value cannot be searched directly.
Original PR description
As the country_id field on the company is computed and not searcheable, this commit adapts the domain to search for the country of the associated partner. task-5096037 Forward-Port-Of: odoo/enterprise#97040 Forward-Port-Of: odoo/enterprise#95255
Restores the broken action behind the “Some transactions may be duplicates” banner in online bank synchronization. Users can again navigate from the reconciliation screen to the tool for finding duplicate bank transactions, reducing confusion and manual follow-up.
Original PR description
Before this commit, the action "Some transactions may be duplicates." was broken because 2 elements from the old bank reconciliation widget were removed. The commit [[1]] of the new bank reconciliation widget forgot to add the action service and a link to the journal. These 2 elements were used to redirect the customer to the Find duplicates tool. This commit adds, in the extension of the bank reconciliation kanban controller, the call to the action service and adapt the old code to match the new one. no task id [1]: https://github.com/odoo/enterprise/commit/2335c953723dce66af8811fdfbfd5b811d42b109 Forward-Port-Of: odoo/enterprise#96849
This update adjusts an internal barcode inventory test so it matches the intended setup when demo data is present. It helps prevent false test failures and supports more reliable validation of inventory barcode workflows.
Original PR description
When running this test with demo data, it will always fail because the option to create new lots on outgoing picking is activated, even though the docstring says it shouldn't be. This fix disable `use_create_lots` on outgoing pickings in accordance with the docstring. Forward-Port-Of: odoo/enterprise#97141