Daily updates from Odoo
Tuesday, February 10, 2026
20 changes · master
Enhancements to existing features
This update enhances the bank reconciliation feature by prioritizing key information like date, label, and balance at the top of the list. It also optimizes the scrolling experience to only apply to the table data, making it easier to navigate and review transactions.
Original PR description
1. The bank statement line info (date, label and balance) are moved to the top now. 2. Scrolling only applies to the table rows (other elements are fixed). task-5212851 Forward-Port-Of: odoo/enterprise#103709
Resolved issues and error corrections
This update fixes a minor issue with the placement of the 'Import' button in the account_base_import module. The change reuses existing elements within the user interface, ensuring compatibility with the core Odoo system and avoiding potential conflicts. This results in a cleaner and more consistent user experience.
Original PR description
The initial implementation added a new <header> element via xpath in order to insert the `Import` button. The related Community commit adds header to the parent view to add a new button. This commit updates the xpath to directly target the parent header element and append the button to it, ensuring compatibility with the base implementation while avoiding header overrides. task-5462685 Related Community PR: https://github.com/odoo/odoo/pull/243063
This update fixes a visual inconsistency in the Field Service Report generated from the Bubble document layout. The report now has consistent, rounded table borders, resolving a conflict between the layout and default table styles. This ensures a cleaner and more professional appearance for field service reports.
Original PR description
Steps to reproduce: -------------------------------- 1. Install `industry_fsm_sale` module 2. Go to Settings > Configure Document Layout 3. Select the Bubble document layout and save 4. Open any…
Steps to reproduce: -------------------------------- 1. Install `industry_fsm_sale` module 2. Go to Settings > Configure Document Layout 3. Select the Bubble document layout and save 4. Open any Field Service task 5. Use the Products smart button to add one or more products 6. Click the Settings icon > Print > Field Service Report Observation: -------------------------------- In Time & Material tables using the Bubble layout, table borders show a mix of rounded corners and sharp edges, resulting in inconsistent visuals Issue: -------------------------------- The table tags in the report were missing the `table-borderless` class. As a result, the layout-applied rounded borders conflicted with the default table borders Solution: -------------------------------- Add the `table-borderless` class to the affected table tags so the tables inherit consistent rounded borders from the document layout Before: <img width="787" height="317" alt="before_css" src="https://github.com/user-attachments/assets/dac136a8-022a-4c36-8cdb-1c0fbb048f3e" /> After: <img width="816" height="372" alt="after_css" src="https://github.com/user-attachments/assets/b5f96e75-2cd3-44cf-89e3-9a3b564c8369" /> opw-5401612 Forward-Port-Of: odoo/enterprise#105616
This update fixes an issue where the selected appointment card outline disappeared when navigating between months in version 19.1 and later. The fix ensures the outline remains visible and consistent, improving the user experience when selecting appointments. A styling adjustment was also made to resolve inconsistent outline behavior.
Original PR description
Starting from version 19.1, the user / resource manual selection for appointments has been moved to a grid of cards when picking the user / resource first in the front-end. However, when using chevrons to navigate between month, the selected card looses its outline, making it hard to understand which one is selected. This is because we removed the first 'active' class without checking what is was linked to. Fix: only remove the one on the day element, as it is meant to be (as the day should not be selected anymore when changing month) Also add an '!important' on the outline class, as a strange behavior from existing styling was messing with it depending on its focus and focus-visible properties. To reproduce: select a user. Then click anywhere on the page. The card outline was first thin, then thicker. Now, the behavior is consistent across cards and btns on that page. Task-5870725 Forward-Port-Of: odoo/enterprise#106613
This update resolves an issue where canceling a payslip could lead to inconsistencies in data. By unlocking snapshots before updates, the system now maintains more accurate records, particularly during payroll adjustments. This ensures data integrity and reliability for financial reporting.
Original PR description
When canceling a payslip, we now unlock the snapshots before updating them to improve consistency Forward-Port-Of: odoo/enterprise#106439
This update resolves an issue that occurred when users attempted to create new payslip runs in the Hong Kong payroll module. The problem stemmed from incorrectly passing a 'false' value to an internal system call, triggering an error. The fix now ensures an empty list is passed, preventing the error and allowing users to successfully create payslips.
Original PR description
Currently an error occurs when user tries to create a new payslip run.
Steps to replicate:
- Install `l10n_hk_hr_payroll_empf` with demo and switch to Hong Kong company.
- Go to Payroll > Payslips > Pay Runs > Click New > Continue.
Error:
```
File "/home/odoo/src/odoo/saas-19.1/odoo/orm/models.py", line 5202, in browse
assert all(ids) or all(isinstance(x, NewId) or x for x in ids), "Invalid falsy real id"
AssertionError: Invalid falsy real id
```
Cause:
- While making the orm call the [resId] was being passed as False, that further calls the browse and caused the error to occur.
Solution:
- Passed an empty list instead of passing a falsy ID to the ORM call.
[resId]: https://github.com/odoo/enterprise/blob/55a71ba4d0c2f3e4478d47c7edb442009f4fc1c4/l10n_hk_hr_payroll_empf/static/src/views/payslip_run_form/hr_payslip_run_form.js#L12
sentry-7207509338
Forward-Port-Of: odoo/enterprise#106432This update fixes an issue where users could see contract templates from multiple companies when creating a new offer. Now, the system automatically limits the displayed templates to only those relevant to the company the offer is being created for, ensuring accuracy and preventing confusion.
Original PR description
Currently, if you have more than one company active and go to an employee to make a new offer, you see all of the templates for all of the companies. If you select a template for a different company from the current one, the company on the employee also changes, which we don't want. With this PR, the list of templates is limited to the ones related to the company currently in use. Task: 5062941
This update fixes an issue where users without admin sign rights couldn't access the sample template. The change ensures that users can correctly create and manage sign items within the copied template, allowing them to proceed with signature requests. This improves the user experience for all users.
Original PR description
**Issue** Users without 'Admin' Sign rights could in some cases not access the sample template. **Steps to reproduce** 1. Go to 'Templates' and archive the existing one in order to have the 'Try our…
**Issue** Users without 'Admin' Sign rights could in some cases not access the sample template. **Steps to reproduce** 1. Go to 'Templates' and archive the existing one in order to have the 'Try our sample document' shown and click on it. 2. Add some sign items to the template, and send it for a signature request. 3. With an user having only 'User: Own Templates' Sign rights, go to 'Templates' and click 'Try our sample document'. Access Error: Blame the following rules: - sign.item: group_sign_user: Create and manage template items **Cause** When the template has an associated sign request, it is copied. The problem is that the user currently doesn't have enough rights to create sign items for the copied template: https://github.com/odoo/enterprise/blob/2e8fb2ca274a0cf15d7b78a663bffe9cbb700153/sign/security/security.xml#L92-L101 **Change** Change the `user_id` of the new template to allow creating the sign items for it. opw-5254566 Forward-Port-Of: odoo/enterprise#105656 Forward-Port-Of: odoo/enterprise#102227
This update simplifies the creation of new employee records in the Swiss payroll module. The system now automatically generates a unique employee ID and sets the initial marital status to the employee's birthday if they are single, reducing manual data entry and improving accuracy.
Original PR description
For quality of life improvement, the unique employee identification is now automatically generated and initial marital status date is set to the birthday by default if the person is single Forward-Port-Of: odoo/enterprise#106752
This update corrects missing translations within the French reporting module (l10n_fr_reports). The change ensures accurate and localized reporting for French-speaking users of Odoo Enterprise. This improves the overall user experience and compliance with French accounting regulations.
Original PR description
See: https://github.com/odoo/enterprise/commit/1591288736e998fc3d6cf50af96827de7472e6bc
This update hides potentially confusing live chat commands (like `/help`) from website visitors and guests. Previously, these commands were visible, even though they weren't functional for non-users. This change enhances the user experience and reduces the risk of accidental actions by unauthorized users.
Original PR description
**Before PR:** channel commands like `/help ` or `/leave` and more are visible to visitors or guest even it is not functional for them. **After PR:** all commands are now hidden from visitors/guests. task-4548666 Forward-Port-Of: odoo/enterprise#105995 Forward-Port-Of: odoo/enterprise#82963
This update ensures that screenshots taken during the trial mode of Odoo Enterprise capture the correct end-result data. Previously, the system lacked the database URL needed to fetch this data. Now, the database URL is forwarded when retrieving the result, resolving this issue and improving the trial experience.
Original PR description
During the trial flow, we don't know the db url when making the ws request. To still be able to take screenshots of the end result in trial mode, we forward the db_url when getting the result back.
This update adjusts the taxonomy used for Dutch tax reports from NT19 to NT20, a standard change required for compliance. The update only involves namespace adjustments and maintains compatibility with older versions of the XBRL template. This ensures continued accurate reporting for Dutch tax filings.
Original PR description
The taxonomy for the Dutch tax reports was updated from NT19 to NT20. There were only changes in the namespaces. Olders versions of the XBRL template are kept for backwards compatibility. task-4568359 Forward-Port-Of: odoo/enterprise#106732
This update simplifies the sales order interface for subscription customers. The 'remaining hours' field, which could be misleading due to subscription renewal cycles, has been hidden when a line is linked to a subscription. This ensures a cleaner, more intuitive experience for our customers and avoids potential confusion.
Original PR description
This change hides the `remaining_hours_so` field when the sales order line is linked to a subscription. Unlike standard service or time-based sales orders, where this field reflects the difference…
This change hides the `remaining_hours_so` field when the sales order line is linked to a subscription. Unlike standard service or time-based sales orders, where this field reflects the difference between the quantity ordered and the quantity delivered, the concept does not translate well to subscription logic. In the context of a subscription, the service is delivered on a recurring period (monthly, yearly, etc.). Delivery quantities continuously accumulate over time, and because the subscription renews indefinitely until cancellation, the “remaining hours” calculation quickly becomes misleading. In many cases it can drift into negative values, giving the impression of an error or over-consumption when, in reality, the subscription is simply following its recurring delivery cycle. To avoid confusing end-users and to maintain a clean, intuitive interface, we hide this field whenever the line is part of a subscription. opw-5246238 Forward-Port-Of: odoo/enterprise#106807 Forward-Port-Of: odoo/enterprise#99813
This update resolves a technical error that was preventing correct display names from being set for spreadsheet cell threads. The fix ensures that only one display name is used, preventing a crash and improving stability of the spreadsheet edition. This change ensures data is displayed correctly.
Original PR description
**Before this change** We were trying to set the `display_name` of one spreadsheet cell thread record to a set of more than one `display_name`s coming from a set of potentially multiple spreadsheets. **After this change** We use `record` instead of `self` when calling `_get_spreadsheet_record` so that it can only return a set of 1 `display_name`, preventing the crash that occurs when trying to set that field value. opw-5380947 Forward-Port-Of: odoo/enterprise#106785 Forward-Port-Of: odoo/enterprise#106230
This update clarifies the terminology used in the recruitment stage labeling within the Odoo Enterprise system. The 'Initial Qualification' label has been renamed to 'Qualification' for better consistency and understanding. This change improves the user experience for recruiters and hiring managers.
Original PR description
This is a small follow-up PR to the original PR to simply rename a stage label. See https://github.com/odoo/enterprise/pull/105278 Task-ID: 5454691 Forward-Port-Of: odoo/enterprise#105854
This update simplifies the salary simulation process by hiding temporary offers from the user interface. These offers are automatically removed after a month by a scheduled task, so this change only improves clarity and prevents confusion for users.
Original PR description
The salary simulator creates temporary offers to compute salary configurations. These offers must still exist for backend computations, as the configurator relies on them when updating results. Simulation offers are already cleaned up by a cron job after one month, so this change simply hides them from the list view to avoid user confusion. task: 5498873 Forward-Port-Of: odoo/enterprise#104493
This update resolves a potential instability issue in the document search functionality. The team corrected a programming error that could have resulted in a missing context, leading to errors. Now, the document search model reliably accesses the necessary context information.
Original PR description
**Before this commit** We were accessing the context on the `DocumentsSearchModel` object by using `_context`. This is incorrect because this property is private, and we can't guarantee its structure. In some cases, `_context` can be `null`, causing later issues when we try to access properties from the context. This was likely just a programming error, rather than intentional. **After this commit** We'll use the public API to get the context by accessing `context` on the `DocumentsSearchModel` object. The internals of that getter method can speak for themselves, but they are useful because they will give us a non-`null` context to work with. opw-5903535 Forward-Port-Of: odoo/enterprise#106751
This update resolves a technical issue that prevented the accurate calculation of document counts during system upgrades. The problem occurred when the system expected a single partner record, but multiple records were found, leading to an error. This fix ensures accurate document counts are calculated.
Original PR description
When trying to compute the document count during the upgrade, we encountered a ValueError because multiple records were found for a partner. The system expected a singleton ``` File…
When trying to compute the document count
during the upgrade, we encountered a ValueError
because multiple records were found for a partner. The system expected a singleton
```
File "/home/odoo/src/enterprise/19.0/documents_hr/models/hr_employee.py", line 34, in _compute_document_count
('partner_id', '=', self.work_contact_id.id)
File "/home/odoo/src/odoo/19.0/odoo/orm/fields_misc.py", line 112, in __get__
raise ValueError("Expected singleton: %s" % record)
ValueError: Expected singleton: res.partner(11393, 11612, 13026, 13085, 13066, 11674, 13007, 11240, 11420, 13086, 2687, 8998, 10309, 8195, 8468, 6439, 8151, 6580, 7928, 10301, 11058, 10515, 5274, 9243, 8141, 8435, 8889, 7761, 7733, 8443, 8545, 9252, 8457, 9980, 5495, 11424, 6458, 10558, 11070, 8924, 11731, 11528, 11615, 11766, 13021, 13080, 11758, 11742, 9306, 8826, 11004, 9393, 8879, 9317, 11652, 13075, 11744, 11160, 11644, 11763, 11416, 11618, 11732, 7931, 3846, 8442, 10299, 7916, 8429, 8057, 11061, 9342, 6435, 6553, 6512)
```
Forward-Port-Of: odoo/enterprise#101902Features or functions removed from Odoo
This update removes an outdated field (`uom.uom.rounding`) from Odoo's unit of measure model. This change was made to eliminate confusion and unnecessary configuration, ensuring data consistency. The removal simplifies development and improves the overall stability of the system.
Original PR description
This commit removes the obsolete field `rounding` on `uom.uom` model. This field has been obsolete since 18.1 (look at 947d18a). This caused some confusion for developers, which led to setting the field value in some occurrences, while it has no real effect. This commit replaces all the usages of the field with its real value, which is the 'Product Unit' decimal accuracy record.