Daily updates from Odoo
Monday, February 16, 2026
28 changes · master
New functionality added to Odoo
This update ensures Odoo Enterprise complies with new Polish tax reporting requirements mandated by the KAS. Starting in 2025, businesses will need to generate specific electronic reports, and this change enables the creation of the required JPK KR PD file to avoid potential tax penalties and ensure continued legal use of the software.
Original PR description
Ensure compliance with the new electronic reporting obligations imposed by the Polish National Revenue Administration (KAS). This takes effect starting in 2025 for large enterprises, followed by SMEs with a one-year delay. Local software providers (such as Comarch or InsERT) will natively integrate this standard; failing to do so would expose users to severe tax penalties, rendering the software de facto unusable for legal accounting in Poland Enable the generation of the JPK_KR_PD file in the strict XML format mandated by the Polish Ministry of Finance. task-5163281 Forward-Port-Of: odoo/enterprise#100345
Enhancements to existing features
This update combines KMD and KMD INF reports into a single, streamlined report, automating the generation of Intrastat and EC Sales List tax returns. This simplifies VAT reporting for Estonian businesses and provides a new XML export option for the VAT Report Annex.
Original PR description
*: intrastate, reports Current behavior before PR: - KMD Report & VAT Report Annex (KMD INF Part A & Part B) were separate reports. - Intrastat and EC Sales List tax returns were not auto-generated.…
*: intrastate, reports
Current behavior before PR:
- KMD Report & VAT Report Annex (KMD INF Part A & Part B) were separate reports.
- Intrastat and EC Sales List tax returns were not auto-generated.
- The VAT Report Annex (KMD INF Part A & Part B) had no XML export option.
Desired behavior after PR is merged:
- KMD Report and VAT Report Annex (KMD INF Part A & Part B) are now merged into single combined report (`kmd_inf_tax_report`). Each report appears as a section within the merged report.
- Intrastat and EC Sales List reports are now automatically generated when a fiscal is defined.
- Added an option to export the VAT Report Annex (KMD INF Part A & Part B) in XML format.
Changes implemented:
- Added a new combined report (`kmd_inf_tax_report`) that includes the KMD Report as a section. When the `l10n_ee_reports` module is installed, it also includes KMD INF (Part A & Part B) as additional sections.
- Enabled auto-generation for Intrastat and EC Sales List reports by setting `auto_generate=True` in their tax return definitions.
- Updated the KMD Report tax return to use the new combined report (`kmd_inf_tax_report`) using the `report_id` field.
- Updated the VAT Report Annex (KMD INF) in `l10n_ee_reports` to support the new combined report (`kmd_inf_tax_report`) which also adds KMD INF (Part A & Part B) reports in the `section_report_ids`.
- Added `Export to XML` button in the combined tax report (kmd_inf_tax_report).
- Added `export_to_xml` method that calls the correct export function for the selected report section. If no valid section is selected, it returns None.
- Added helper methods:
- `export_tax_to_xml`,
- `export_kmd_inf_part_a_to_xml`,
- `export_kmd_inf_part_b_to_xml`
- Added dedicated QWeb templates (`kmd_inf_part_a_xml`, `kmd_inf_part_b_xml`).
related pr: odoo/odoo#233791
task-5136165
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update enhances the portal's chat functionality by allowing the server to better understand the origin of requests. It enables the system to apply specific limitations needed for portal chatter, preparing for a future migration to the mail fetch route. The change also streamlines internal code for improved efficiency.
Original PR description
This is a preparation change for replacing the portal chatter fetch route with the mail fetch route. Fetch methods can now receive extra fetch params from the caller components if needed, making it possible to inform the server when a request originates from the portal. This allows the server to apply specific limitations required for portal chatter. The change also involves a minor refactoring of the `useMessageScrolling` hook, which makes the thread built-in and removes the need to pass it as a parameter in every call. Extra fetch params could also be passed through another callback in the same way. [Community PR](https://github.com/odoo/odoo/pull/248208)
This update adjusts the layout of the Gantt chart by moving the side panel to the right. This change enhances the user experience by providing more screen real estate for the chart itself and improving visual clarity. It's a minor improvement focused on usability.
Original PR description
task-5937290
This update allows HR administrators to modify the Payrun field directly on the payslip form, regardless of the payslip's state. This provides greater flexibility in correcting payroll data. Additionally, a warning message appears if a different month's payrun is selected, preventing potential errors.
Original PR description
In this PR, the Payrun field in the payslip form view is now editable in all states. Task-5924637
This update modifies the payroll rules used in Odoo Enterprise to accurately reflect the latest Belgian tax regulations, specifically regarding the calculation of seizable amounts. The changes include incorporating a new valuation (2026) and removing outdated terminology related to the CP200 system, ensuring compliance and accurate tax reporting.
Original PR description
Update CP200 Seizable Amount Percentages salary Parameters . Add 2026 valuation . Remove CP200 from name & code task-5478481
This update enhances the workorder planning process by introducing a Kanban view that allows users to easily rearrange production orders after initial planning. Additionally, the core planning function has been refactored to enable efficient batch rescheduling of workorders. This improves workflow flexibility and operational efficiency.
This update strengthens controls around provider pricing by allowing restrictions based on approved pricelists. It also introduces minimum amount validation alongside existing maximum amount checks, ensuring consistent and accurate payment processing. This improves financial oversight and reduces potential errors.
Original PR description
Adding filtering based on sale order pricelist to restrict providers to allowed pricelists. Extending amount validation to include minimum amount filtering alongside existing maximum amount checks. See also: - https://github.com/odoo/odoo/pull/234969 task-5129542
This update enhances the barcode kanban view for stock pickings, making it easier for operators to quickly identify the correct picking based on sales or purchase references. Previously, multiple pickings needed to be reviewed, leading to delays. This change streamlines the process and improves operational efficiency.
Original PR description
When several pickings exist for the same partner, operators often rely on the sales or purchase reference to find the correct one. In the barcode kanban view, the available information makes this difficult and forces operators to open multiple pickings before finding the right one. This improvement helps operators identify the correct picking more easily at a glance, making it easier to find the correct picking. Task-5248999
This update introduces a system to automatically suggest automating reconciliation models after they've been used three times. Users will receive a notification with options to automate, reset the usage counter, or permanently disable automation. This streamlines the reconciliation process and reduces manual effort.
Original PR description
This commit will do multiple things: - In the chatter, whenever a reconciliation model is applied, a link to the model is now available. - When a reconciliation model is automatically created by Odoo, after it has been used three times, a dialog will appear asking if you want to automate that model. You also have the option to reset the usage counter to give yourself more time to decide, or to never automate that model. - Also fixed some linter issues task-5062143
This update automatically populates employee birthdates and sex information when the Belgian NISS (National Identification System Number) is entered. The birthdate is derived from the first 6 digits of the NISS, and sex is determined by the 9th digit – even numbers indicate female, odd numbers male. This streamlines data entry and improves accuracy.
Original PR description
When the NISS is filled in, it should automatically populate the birthdate and the sex. The birthdate is the first 6 digits of the NISS in the format YYMMDD. If the 9th digit is even, the sex is female. Otherwise, it's male. Task: 5432128
This update enhances the tracking of goal progress, particularly for goals linked to parent goals. Now, goal progression can reflect partial completion (0-100%) instead of being limited to just 0 or 100, providing a more accurate representation of performance. This change improves the visibility and management of employee goals within the system.
Original PR description
purpose: If you have a parent goal, the progression of the parent goal will only be 0 or 100 so we improve it to span the values in between 0 and 100 as well. - added a computed field to track the children progression for parent goals - added a computed field to show goal progression as a percentage task-id: 5076030
Resolved issues and error corrections
This update resolves an issue where global discounts on sales orders using Avalara Brazil weren't correctly calculating tax totals. The change improves the accuracy of discount application by cleaning up tax calculations before applying the discount, ensuring the discount is applied to the correct price unit.
Original PR description
This commit df08643 introduces support for global discounts for tax calculation at Avalara Brazil. When using global discounts from 'sale.order.discount' wizard, the lines weren't adding up to the amount specified. This new commit targets to fix that by cleaning up taxes before applying a discount, this way to have the target amount as price unit and avoid to depend on the taxes. target: master task-3452935
This update corrects an access error that prevented users with limited inventory permissions from validating recurring product deliveries. The issue stemmed from a lack of necessary access rights to retrieve invoice information, specifically related to subscription plans. This fix ensures all users can properly validate recurring deliveries.
Original PR description
When a user that only has inventory access right validate a delivery that has an recurring product it will trigger an access right error. Steps to reproduce: ------------------- * Install sales,…
When a user that only has inventory access right validate a delivery that has an recurring product it will trigger an access right error. Steps to reproduce: ------------------- * Install sales, inventory, subscription, * Create a subscription product * Create and validate a sale order with this product and a recurring plan * Connect to Odoo with an user that only has inventory user right * Validate the delivery -> Access Error Observation: ------------- When we validate the delivery,we call button_validate that will call [_action_done](https://github.com/odoo/odoo/blob/93fa6d9fff63534cfa9251e21fc82797d8b83468/addons/stock/models/stock_picking.py#L1427) During this we try retrieve invoices information [here](https://github.com/odoo/enterprise/commit/b07b1c47c97bb6d6da9fa61dacb5cba66aff2a16#diff-dbf7b40a6942fbcc81ebc4c3009a8a37a5a620cffac74889bd0ff2bccd52b1e3R30-R36). The issue is that this user doesn't have access right to several records: * sol.order_id.invoice_ids -> sale.order.invoice_ids * sol.order_id.last_invoice_date -> sale.subscription.plan opw-5869446 Forward-Port-Of: odoo/enterprise#106623
This update corrects a calculation error in how mobility budgets are determined for employee contracts, specifically in Belgium. The change implements an iterative method to ensure budgets align with legal minimums, maximums, and wage rates, leading to more accurate and compliant payroll processing.
Original PR description
We implement in this PR the iterative computation method of mobility budget. Given an employer cost, we find the wage and mobility budget such that mobility budget amount respect legal constraints of minimum and maximum and rate with respect to wage Forward-Port-Of: odoo/enterprise#106754
This update resolves a previous limitation where commission and achievement data for completed sales plans couldn't be displayed in reports. Now, sales reports accurately reflect performance against achieved goals, providing a more complete view of sales results. This enhancement improves reporting accuracy and supports better sales management decisions.
Original PR description
Before this commit, it was not possilbe to display commission/achievements of done plans. task-5937055
This update fixes a limitation in the payroll schedule wizard that prevented users from selecting resource calendars without a company assigned. The change expands the selection options to include all calendars, regardless of company affiliation, improving flexibility and usability for resource scheduling. This ensures all resources can be correctly assigned to payroll schedules.
Original PR description
Steps to reproduce: 1. Create a resource calendar without any company 2. Open the payroll set schedule wizard 3. The calendar without company is not selectable Bug cause: The domain on `resource_calendar_id` field only filtered for calendars belonging to the current company, excluding calendars with no company set. Solution: Update the domain to include both calendars from the current company AND calendars without any company using an OR condition. Task Id: 5912974
This update enables users to download accounting reports even when errors are detected. Previously, a system error would prevent download attempts. This change supports users who need to manually correct downloaded files, streamlining the report fixing process.
Original PR description
[IMP] account_reports, *: Allow user download invalid file modules: l10n_at_saft, l10n_lu_reports, l10n_ro_saft Before this commit, when a user try to export an accounting report, if an error with the level 'danger' is detected a wizard open and do not allow to download the file (the "Download Anyway" button is disabled). With this commit, the user will be able to download the file in any case. The target is the user that will modify the file manually to correct it. task-5487096
This update resolves an issue where the timesheet's systray label was not displaying correctly. The fix ensures the label accurately reflects the timesheet's status, providing a clearer visual indication for users. This improves the overall user experience and data accuracy.
This update resolves an issue where DMFA export reports were being rejected due to duplicate employee records sharing the same NISS. The fix groups employees with the same NISS and merges their payslips into a single record, ensuring accurate DMFA declarations and preventing errors.
Original PR description
In some real-life situations, multiple employee records can share the same NISS (e.g. a student contract followed by a regular contract after archiving the first employee). When exporting DMFA data, this resulted in multiple NaturalPerson nodes with identical identifiers.
This caused the DMFA declaration to be rejected with error 90017-006 ("Personne physique - Trop d'occurrences avec les mêmes identifiants").
To fix this, employees sharing the same NISS are now grouped in the DMFA export, and their payslips are merged into a single NaturalPerson node.
task-5470180This change prevents automatic transfer validation when quality checks are pending, giving users more control over the picking process. Previously, automatic validation blocked adjustments to quantities or lot numbers needed after failed quality checks. Now, users must manually validate the transfer after all checks are complete, ensuring a more flexible and predictable workflow.
Original PR description
*: stock_barcode_quality_control Before this change, when a picking with pending quality checks was validated, the system opened the quality check wizard. Once all checks were completed, the transfer…
*: stock_barcode_quality_control Before this change, when a picking with pending quality checks was validated, the system opened the quality check wizard. Once all checks were completed, the transfer was automatically validated. This behaviour caused issues in cases where some quality checks failed, as users might need to adjust quantities, correct lot numbers, or handle exceptions before finalising the transfer. Since the transfer was already validated automatically, users lost the opportunity to review or modify the picking. With this commit, validating a picking while some quality checks are still pending no longer triggers automatic validation of the transfer. Users must now explicitly validate the transfer manually after all checks are completed. The Validate button is also made secondary when there are pending quality checks to perform. This makes the validation flow more predictable and gives users better control and flexibility when handling pickings that include quality checks. Task ID: 4898373
This update corrects a recent change that exposed sensitive time-off type information to all users within the time-off overview. The change has been reverted to ensure employee time-off types remain private, maintaining data security and confidentiality.
Original PR description
This commit reverts back the change done to gantt color of time-off overview to be based on time off type instead of employee, which made private information (time off type) available to everyone. Task: 586835
This update fixes an issue where the salary calculator was incorrectly re-encoding values when changing budget types. The system now accurately preserves user input and calculates yearly costs based on the selected budget, ensuring more reliable salary projections. This change improves the accuracy of salary calculations within the applicant and offer stages.
Original PR description
Prevent the salary calculator from re-encoding value when switching budget type; preserving user input. The separate monthly_wage field has been repurposed into salary amount, it is used to calculate final_yearly_cost depending on budget_type. task-5030704
The Pay Run status bubble now correctly reflects the status of payroll processing. Previously, it incorrectly showed a green status even when no payslips had been generated. This update ensures the bubble remains grey until payslips are created, providing a more accurate visual representation of the payroll process.
Original PR description
Previously, the Pay Run status bubble appeared green even with 0 payslips. This commit updates the `StatusBubble` component to check `payslip_count`. The current stage bubble will now remain grey (`bg-secondary`) until payslips are generated, only turning green (`bg-success`) when `payslip_count > 0`. - JS: Added `payslip_count` to field dependencies. - XML: Updated class conditions to respect payslip count.
Features or functions removed from Odoo
This update removes the 'mass_mailing_name' field from the email configuration within Odoo. This change simplifies the marketing automation process and aligns with updated system standards. It ensures consistent data handling and improves the overall efficiency of email campaigns.
Original PR description
[IMP] marketing_automation: remove mass_mailing_name
As parts of changes to mass_mailing, the mass_mailing_name field
is removed from the mail.compose.message wizard.
As such, references to that field are removed from the
marketing_automation module.
task-5423645This update removes a reference to a deleted field in the l10n_be_hr_payroll module. This cleanup ensures the system remains consistent and avoids potential issues related to outdated data. It's a routine maintenance task to improve the stability of the payroll functionality.
Original PR description
In this PR (https://github.com/odoo/odoo/pull/246332) the display_type field was removed from resource_calendar_attendance, here we remove the refernce to it. Task: 5886926 Community PR: https://github.com/odoo/odoo/pull/246332 Upgrade PR: https://github.com/odoo/upgrade/pull/9376
This update removes a previously introduced barcode widget from the MRP Workorder module. The widget was no longer needed after related functionality was removed, streamlining the code. This change improves code maintainability and reduces potential complexity.
Original PR description
This widget was introduced in [1] but its usage was removed in [2]. We can also remove the mixin, as `on_barcode_scanned` is no longer used either. [1] https://github.com/odoo/odoo/pull/102150/ [2] https://github.com/odoo/enterprise/commit/3724d76fc1a216558ba8f0bbbf3b95aa706ad659#diff-a1880ae8ffd9373bbc49230d522c8e6696e9f4deafbeba01c8eda2c3223a1be7L10-L29
This update simplifies the ordering of contract types within Odoo. The team removed a redundant 'sequence' field, as contract types are now automatically ordered alphabetically by name. This change improves the system's efficiency and reduces potential for future configuration issues.
Original PR description
This commit removes the sequence field, as contract types are already ordered by name by default, making the sequence field unnecessary. Task:5868349