Wednesday, February 11, 2026
30 changes · master
New functionality added to Odoo
This update adds the necessary data to support Taiwan's VAT tax reporting requirements within Odoo. Specifically, it incorporates data records for the `account.return.type` model, enabling accurate reporting for Taiwanese businesses. This change aligns with ongoing efforts to improve Odoo's localization capabilities.
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) Forward-Port-Of: odoo/enterprise#105739 Forward-Port-Of: odoo/enterprise#104698
This update adds a dependency on the `web_hierarchy` module to the `hr_appraisal` module to support new hierarchical views introduced in version 19.0. Without this dependency, upgrading from an older version (18.0) to 19.0 would cause errors due to the changes in the `hr_appraisal` views. An upgrade script will now ensure `web_hierarchy` is installed alongside `hr_appraisal`.
Original PR description
In version `19.0` new hierarchy view was added to module `hr_appraisal` by this commit[^1]. But the module `web_hierarchy` is not dependency of `hr_appraisal`. When we install `hr_appraisal` it…
In version `19.0` new hierarchy view was added to module `hr_appraisal` by this commit[^1]. But the module `web_hierarchy` is not dependency of `hr_appraisal`. When we install `hr_appraisal` it triggers the installation of `hr` because of dependency. On the other side `hr_org_chart`[^2] gets installed because of auto_install=true. So it makes `web_hierarchy` installed because of the `hr_org_chart` dependency. If we upgrade db from `18.0` to `19.0` which `hr_appraisal` installed and `web_hierarchy` uninstalled we will get issue as `hr_appraisal` requires dependency to `web_hierarchy` because of new views. We have added this dependency on master and we will ensure `web_hierarchy` installed while `hr_appraisal` is installed in `19.0` with upgrade script. Steps to reproduce (case 1): 1. Install `hr_appraisal` in `18.0` 2. Uninstall `web_hierarchy` 3. Upgrade to `19.0` Traceback we will get: ``` ... odoo.tools.convert.ParseError: while parsing /home/odoo/src/enterprise/19.0/hr_appraisal/views/hr_appraisal_goal_template_views.xml:71 Invalid view type: 'hierarchy'. You might have used an invalid starting tag in the architecture. Allowed types are: list, form, graph, pivot, calendar, kanban, search, qweb, cohort, gantt, grid, map, activity ``` [^1]: odoo@dbe4946 [^2]: https://github.com/odoo/odoo/blob/dec621e60794ede263222e3b5be0ebfc33ed6f40/addons/hr_org_chart/__manifest__.py#L16-L17
Enhancements to existing features
This update improves the way Odoo handles printer configurations for IoT-enabled point-of-sale systems. The change aligns with a previous Odoo development to standardize printer formats, enhancing compatibility and reliability. This ensures smoother operation of IoT printers within the enterprise system.
Original PR description
See also odoo/odoo#247496
Resolved issues and error corrections
This update restores the printer type selection field within the Point of Sale module. Previously, this field was moved, causing confusion for users. This change ensures the correct printer selection process is maintained within the POS system, improving usability and accuracy.
Original PR description
See odoo/odoo#247317
Features or functions removed from Odoo
This update removes the 'consumption' field from Bills of Materials (BoMs), streamlining the process and eliminating the 'strict' and 'flexible' consumption options. The default behavior now simply warns of over- or under-consumption, which can be temporarily bypassed with a specific setting, ensuring a more straightforward workflow.
Original PR description
### redo of odoo/enterprise#86712 We're removing the `consumption` field from BoMs, thereby getting rid of the 'strict' and 'flexible' options. The former 'warning' option is the default behaviour now. It can still be bypassed through the `skip_consumption` context parameter. Task ID: [4441090](https://www.odoo.com/odoo/my-tasks/4441090), [4603609](https://www.odoo.com/odoo/my-tasks/4603609)
This update enhances the Install Timesheets Assistant Dialog by adding subtle animation to the timesheet icon. This visual improvement makes the dialog more engaging and user-friendly, providing a slightly better experience for users setting up timesheets.
Original PR description
In this PR we've animated the timesheet icon in the Install Timesheets Assistant Dialog. task-5922305
This update moves the worker code management menu within the Odoo Enterprise system. It has been relocated from the reporting tab to the configuration tab under the Belgium section, streamlining access for users managing Belgian payroll settings. This change improves the user experience and organization of related settings.
Original PR description
We moved worker codes menu from reporting tab to configuration tab under Belgium section. task - 5922762
This pull request updates the core logic for timesheet calculations and reporting across several Odoo modules. The changes aim to streamline the process and improve the accuracy of timesheet data, particularly related to subscription and sale timesheets. This enhancement focuses on internal operational improvements.
This update refines the taxonomy used for exporting Dutch tax reports in Odoo Enterprise. The change involves updating the taxonomy model from NT19 to NT20, which only impacts the namespaces used for reporting. This ensures compliance with the latest Dutch tax regulations for accurate report generation.
Original PR description
The taxonomy for the Dutch tax reports export XBRL updated from model `NT19` to model `NT20`. Task [link](https://www.odoo.com/odoo/project.task/4568359) task-4568359
This update enhances the way time durations are displayed in Odoo, presenting them in a more user-friendly format (e.g., 12h 30m 25s). Users can now customize the display format and unit of time, and a helpful popover clarifies how values are interpreted. This improves clarity and ease of use when managing time-based data.
Original PR description
In this commit I change the format of the durations (float_time). Now they are displayed as follow by default: 12h 30m 25s You can also specify the unit of time, like that you can specify to float_time what value it's reading. For example, if the unit of time is "minutes" and that you give it 30, it will translated to 30m. The value set to 0 are removed from the result. 0h 30m 0s => 30m There is also a bottom popover on float_time fields that display how the typed value will be interpreted. The format hh:mm:ss can be forced by putting the option "numeric" to true. The seconds are shown by default, they can be hide by putting the option "showSeconds" to false. TASK-5347051
This update corrects a user experience issue where the 'Some required fields are not filled' warning appeared twice when the salary configurator form was submitted with empty required fields. The fix removes redundant validation and clears existing warnings, ensuring a cleaner and more reliable user experience. This improves usability and prevents confusion.
Original PR description
On submitting the salary configurator form, keeping the required fields empty, the warning “Some required fields are not filled” is displayed twice. [Steps to reproduce](https://drive.google.com/file/d/1bKeXhtXN5nY5pdVYhPiau7pDwGnrzgg4/view?usp=sharing) ## Root cause The same warning message was added for radio field validation, causing duplicate alerts to appear. ## Fix Removed the radio validation and centralized with other fields validations. ## Additionally Remove existing alerts to prevent stacking of warnings on multiple clicks on button. task-[5113853](https://www.odoo.com/odoo/project/1251/tasks/5113853) Forward-Port-Of: odoo/enterprise#102096
This update prevents a crash that occurred when using the budget filter in accounting reports. The issue stemmed from the system incorrectly assuming budget columns were always present, leading to an error. The fix adds a safety check to gracefully handle missing columns, ensuring the budget filter functionality works reliably.
Original PR description
**Steps to reproduce:** * In **Accounting**, create a new accounting report. * Set **Root Report** to **Profit and Loss**. * Add a report line with **Figure Type = Percentage**. * set **Computation…
**Steps to reproduce:** * In **Accounting**, create a new accounting report. * Set **Root Report** to **Profit and Loss**. * Add a report line with **Figure Type = Percentage**. * set **Computation Engine = External Value** and **Formula = 0** on report line. * Add a report column with **Figure Type = Monetary**. * Create a menu item for the report. * Open the report and click **Budget**. * Create a new budget filter and click **Create**. **Observed behavior:** * The system crashes with `TypeError: 'NoneType' object is not subscriptable`. * The error occurs while accessing budget column values. **Cause:** * Budget comparison logic assumes required budget columns always exist. * When the report configuration lacks compatible budget columns, internal variables remain unset and are accessed anyway. **Fix:** * Add a safety check to skip budget comparison when required columns are missing. * Prevents the crash and allows budget filters to be created safely. opw-5357339 Forward-Port-Of: odoo/enterprise#104162
This update resolves an issue where saving settings in a Guatemalan company's branch would incorrectly display a 'Missing required field' error. The fix ensures the 'Service Provider' field is correctly populated for branch companies, aligning with the parent company's settings.
Original PR description
Currently, saving the General Settings in a branch of a Guatemalan company raises a "Missing required field" error for the 'Service Provider' field (`l10n_gt_edi_service_provider`), even if no…
Currently, saving the General Settings in a branch of a Guatemalan company raises a "Missing required field" error for the 'Service Provider' field (`l10n_gt_edi_service_provider`), even if no changes were made. ### **Steps to reproduce:** 1) Install `l10n_gt_edi` and switch to a GT company. 2) Create a branch of the GT company. 3) In the parent company, go to Accounting Settings, set the Guatemala Localization to 'Demo', and save. 4) Switch to the branch company. 5) Open Accounting Settings and click Save. ### **Observed Behavior:** An error occurs because `l10n_gt_edi_service_provider` is empty but required. ### **Root Cause:** The `l10n_gt_edi_service_provider` field is marked as `required` whenever `country_code == 'GT'` (see[1]). However, the field is hidden in branch companies via the `invisible="not l10n_gt_edi_is_root_company"` domain on the settings block. Because the field is required but empty (and invisible to the user), the form validation fails. [1]- https://github.com/odoo/enterprise/blob/6f3265aad51a264bee754ca239e8a5019487b38c/l10n_gt_edi/views/res_config_settings_views.xml#L19-L22 ### **FIX:** Update the `required` domain to include `l10n_gt_edi_is_root_company`. This ensures the field is only mandatory in the root company where it is actually visible and configurable and also set the `l10n_gt_edi_service_provider` for branch company same as parent company. **opw-5385819** Forward-Port-Of: odoo/enterprise#106323
This update corrects a previous issue where the payslip report displayed the company's working schedule instead of the employee's. The report has been updated to accurately reflect the employee's individual working schedule, ensuring payroll reports are more precise and relevant.
Original PR description
-The display for working schedule info in the payslip report was referring to the company's working schedule. -The report has been adjusted to include the employee's working schedule. -Task #5900303 Forward-Port-Of: odoo/enterprise#106266
This update corrects a technical issue where the preparation printer wasn't being properly disconnected during testing. By assigning 'False' instead of an empty list, the system now correctly manages printer connections, ensuring consistent and reliable test results. This resolves a potential instability in the preparation display functionality.
Original PR description
In this commit: --- - Properly unlink the preparation printer from `pos_config` by assigning `False` instead of an empty list. task-5347023 related-https://github.com/odoo/odoo/pull/237741
This update corrects a technical issue where VAT reports generated in Odoo were missing email addresses for certain customers. The fix ensures that email addresses are populated correctly, fulfilling mandatory reporting requirements and preventing data discrepancies. The change was made to improve the accuracy of financial reporting.
Original PR description
**Steps to reproduce:** - Install l10n_be_reports and contacts - Switch to a Belgian company (e.g. BE Company CoA) - Go to Contacts - Open the company contact (i.e. BE Company CoA) - Add an invoice address withtout email - Create an invoice: * Customer: [a Belgian customer with a VAT number] * Invoice Lines: [a line with a tax] - Confirm the invoice - Go to "Accounting / Reporting / Belgium / Partner VAT Listing" - Export the XML **Issue:** In the XML, "<EmailAddress>" is empty althouth it is mandatory. **Cause:** The email is retrieved from the invoice address, but there is no fallback on the parent contact if it is empty. **Solution:** Fallback on the email of the parent contact as it is the case for the phone. opw-5870750 Forward-Port-Of: odoo/enterprise#106893 Forward-Port-Of: odoo/enterprise#105654
This update resolves an issue where users without accounting rights were unable to duplicate partners using the l10n_mx_edi module. The change prevents the copying of sensitive data related to EDI addenda, ensuring proper access controls and preventing errors. This improves the reliability of partner duplication for all users.
Original PR description
l10n_mx_edi.addenda field on partner require accounting right to duplicate. So you try to duplicate a partner using a user without accounting rights, you will get this error: ``` You are not allowed to access 'Addenda for Mexican EDI' (l10n_mx_edi.addenda) records. This operation is allowed for the following groups: - Accounting/Administrator - Accounting/Invoicing ``` This commit avoid to copy the data of this field when copying the partner. opw-5495639 Forward-Port-Of: odoo/enterprise#105751
This update incorporates new 2026 codes for intrastat reporting, aligning with European statistical requirements. These codes, sourced from the National Bank of Belgium, improve the accuracy of international trade data tracked within Odoo Enterprise. This ensures compliance with reporting standards.
Original PR description
This commit adds 2026 codes based on https://www.nbb.be/en/statistics/foreign-trade/nomenclature-and-codes opw-5504187 Forward-Port-Of: odoo/enterprise#106896
This update fixes a noisy warning message that appeared during PDF upload tests. The change silences specific logging related to PDF parsing errors, ensuring test failures are clear and focused without unnecessary alerts. This improves the reliability of our PDF upload testing process.
Original PR description
Before this commit, the test test_invalid_pdf_upload was logging pypdf warnings when testing invalid PDF uploads, because the relaxed PDF parsing attempts to read malformed PDFs before raising a ValidationError. After this commit, the test mutes the pypdf._reader logger in addition to the existing mute, preventing the "invalid pdf header" warning from appearing during expected test failures. task-5921293 Forward-Port-Of: odoo/enterprise#106850
This update resolves a test failure related to a recent change in the l10n_uy_edi module. The change introduced a new method extension, and this commit simply ensures the test suite recognizes and accommodates this updated functionality. This ensures the payment processing continues to function correctly.
Original PR description
The PR odoo/odoo#244443 introduces a new extension to the method _is_downpayment hence the test fails since it is not patched. This commit adds the new extension to the patched list. task-5135918 Forward-Port-Of: odoo/enterprise#106618 Forward-Port-Of: odoo/enterprise#105165
This update resolves an error that prevented non-employee users from creating expenses from documents. The issue stemmed from a required field ('employee_id') not being populated correctly. The fix now displays a user-friendly error message instead of crashing, ensuring a smoother experience for all users.
Original PR description
Currently an exception is generated when the non-employee user tries
to generate expenses from the documents.
Steps to produce an error:
- Install the `documents_hr_expense` module without demo data
- Delete employee `Administrator`
- Upload any PDF/image file inside the company's `Internal` folder
- Click on the uploaded document and click on the `Create an Expense` button
Error: `ValueError: NotNullViolation('null value in column "employee_id" of ...`
This error occurs because `employee_id` is required when creating an
expense. Since the current user is not linked to an employee record,
`employee_id is` set to false, which causes the issue.
This commit resolves the issue by raising a `UserError` when the current
user is not linked to an employee.
sentry-7192984733
Forward-Port-Of: odoo/enterprise#106855
Forward-Port-Of: odoo/enterprise#104762This update fixes a technical error that was preventing the correct calculation of simulation offers within the HR contract salary module. The issue stemmed from a misplacement of a key setting, which has now been corrected. This ensures accurate offer generation for users.
Original PR description
…576b35b9ef08 is_simulation_offer is defined in hr_contract_salary_payroll, not in hr_contract_salary, hence this leads to a traceback. Forward-Port-Of: odoo/enterprise#107099
This update fixes a calculation error in the Belgian payroll module that incorrectly accounted for expenses related to both private and company cars when employees had multiple occupations. The change ensures accurate expense reporting for employees using both types of vehicles, aligning with Belgian tax regulations. This improves payroll accuracy and reduces potential tax discrepancies.
Original PR description
…occupation Forward-Port-Of: odoo/enterprise#106865
This update corrects a technical issue where the user ID was missing during payment processing for the pos_iot_six module. The fix restores functionality previously broken by a recent update, ensuring accurate user identification for transactions. This resolves a potential problem with payment tracking and reporting.
Original PR description
This PR reinstates https://github.com/odoo/enterprise/pull/98021 broken by https://github.com/odoo/enterprise/pull/98203 This fixes user id being undefined for pos_iot_six payments Forward-Port-Of: odoo/enterprise#106737
This update clarifies the type of data stored in the 'vector' field within the AI module. The addition of a 'ttype' field provides better organization and control over this data, ensuring consistency and accuracy. This change improves the overall reliability of the AI features.
Original PR description
Add field ttype for vector field. community: https://github.com/odoo/odoo/pull/247542 For problem https://github.com/odoo/odoo/pull/247323#discussion_r2767940038 Forward-Port-Of: odoo/enterprise#106892 Forward-Port-Of: odoo/enterprise#106612
This update fixes a layout issue where unscheduled event text was being cut off in the Gantt chart. By adjusting the text truncation placement, the chart now displays correctly, ensuring all event details are visible and preventing potential display problems. This improves the overall user experience.
Original PR description
Previously, the `text-truncate` class was applied only to the text span of unscheduled events in the gantt side panel. This failed to account for the width of the drag handle, potentially causing layout issues. This commit moves the truncation class to the parent container, ensuring the text is properly truncated while respecting the space occupied by the drag handle.
This update resolves an issue where users were encountering authorization errors when accessing audit trails for accounts created in different companies. The fix ensures users can correctly view audit trails related to the company where the account was initially created, improving data accuracy and user experience.
Original PR description
When accountant module is installed, and the user creates an account from a company and attempts to access audit trail from another company, they are faced with an authorization error.
This update fixes a minor issue in the payment widget on account move forms. When hovering over a Bill with a potential bank statement match, users now see both the transaction reference and the line name, ensuring clearer information display. This enhancement improves the user experience when managing payments.
Original PR description
the forward port https://github.com/odoo/odoo/commit/2490d32f2a28cc05c7cd5d8450701232aede2c29 introduced some minor issues in the payment widget on the account move form view, such as the title on hover. When viewing a Bill, for example, with a possible match on a bank statement, on hovering, we should see both the ref and the line name. Combined with community pr: https://github.com/odoo/odoo/pull/245912
This update ensures that the IoT printer test buttons now correctly align with the 'use_lna' configuration setting in Odoo. Previously, this functionality wasn't consistently applied, and this fix guarantees the buttons behave as expected based on the system's settings.
Original PR description
Ensure the IoT printer Test buttons use LNA when triggered, aligning behavior with `point_of_sale.use_lna` configuration. Task-5886700 Related: https://github.com/odoo/odoo/pull/246446 Forward-Port-Of: odoo/enterprise#107045 Forward-Port-Of: odoo/enterprise#106594
This update ensures that product prices within Odoo are stored with a minimum level of precision, addressing a technical issue. This change improves data accuracy and reliability for pricing calculations, particularly in areas like invoicing and reporting. It’s a foundational update to the core system.
Original PR description
Fix tests, related to https://github.com/odoo/odoo/pull/243987 task-4895014 Forward-Port-Of: odoo/enterprise#106526 Forward-Port-Of: odoo/enterprise#104728