Tuesday, April 7, 2026
17 changes · master
New functionality added to Odoo
This update introduces the ability to generate an XML file for Slovak VAT reports, aligning with the specific requirements of the Slovak government. This ensures accurate and compliant reporting for our Slovakian clients, streamlining their VAT submission process. The change improves reporting capabilities and reduces potential errors.
Original PR description
Add XML export for the Slovak VAT report, following the official government format Related: https://github.com/odoo/odoo/pull/257528 task-6040973 Forward-Port-Of: odoo/enterprise#112963
Enhancements to existing features
This update makes it easier to upsell non-recurring products when the subscription start date aligns with the next invoice date. The change improves the process by separating constraint logic, allowing for greater flexibility and preventing potential errors related to zero prorata ratios during the upsell confirmation.
Original PR description
Make easy for module that extend sale subscription to allow for some specific case to upsell subscription with start_date = next_invoice Forward-Port-Of: odoo/enterprise#112730
Resolved issues and error corrections
This update resolves a visual issue in the Belgian localization's return checks reports. Empty line breaks were disrupting the styling, leading to inconsistent formatting. Removing these unnecessary lines restores the correct styling and ensures a professional appearance.
Original PR description
Description of the issue this commit addresses: The return checks templates in the belgian localization have empty line breaks in their message causing the continuity of the styling of the return checks to break. --- Desired behavior after this commit is merged: This commit removes all the unnecessary blank lines from the return checks messages so the styling is restored and accurate according to the defined style --- task-6050886
Code cleanup and technical improvements
This update streamlines the code for Odoo charts by separating the data handling logic from the common chart elements (like titles and axes). This reduces redundancy and makes future chart updates easier and more efficient, improving maintainability.
This update resolves an issue impacting product exports within the Web Studio module. The team has decoupled export logic, requiring a second context key to be added. This change ensures product exports function correctly and reliably, maintaining data integrity.
Original PR description
This commit https://github.com/odoo/odoo/pull/254323 changed the way product( template)s are created, which now decouples the logic into two context attributes instead of one. This commit fixes this by adding the second one. Forward-Port-Of: odoo/enterprise#112903 Forward-Port-Of: odoo/enterprise#112753
This update fixes a restriction in the bank reconciliation process that prevented users from manually unmatching tax lines when the related tax account was set to 'reconcilable'. Previously, tax lines were protected to maintain tax integrity, but this now allows for greater flexibility in reconciling transactions, particularly when tax accounts are configured for reconciliation. This improves the user experience and accuracy of bank reconciliation.
Original PR description
In the bank reconciliation widget, tax lines are protected from unreconciliation to maintain tax integrity. However, when the tax account is set as reconcileable the user may need to manually unmatch transactions. Steps to reproduce: - Open the 'Tax Paid' account and enable 'Allow Reconciliation' - Create a bill using a tax and post it - Go to the Bank Reconciliation widget - Select a statement line and match it with the tax line from the bill Issue: The line cannot be unmatched because the related button is missing opw-5871821 Forward-Port-Of: odoo/enterprise#112540 Forward-Port-Of: odoo/enterprise#110186
This update resolves a problem where the Kanban view for work orders wasn't correctly displaying colors. The change utilizes a new color field introduced in a recent update, ensuring work orders are properly categorized and visible within the Kanban interface. This improves the user experience and accuracy of work order management.
Original PR description
Forward-Port-Of: odoo/enterprise#107702
This update fixes an issue where search filters in the MRP Planning view would reset when users navigated away and returned. The fix ensures that search filters are retained, providing a more consistent and efficient user experience for planning and reporting.
Original PR description
Issue: In the MPS view, when the user sets a search filter, navigates away and then returns via the breadcrumb, the search filters that were applied are gone. This happened because the MPS client action was not passing `globalState` to the `WithSearch` component. Fix by passing `globalState` in `withSearchProps`. task-5368078
This pull request reverts recent changes to the Odoo template architecture, bringing back the previous design style (M3.1). This ensures continued functionality and stability while allowing for necessary adaptations. The change addresses an issue related to existing code present in the M3 implementation.
Original PR description
This commit reverts the changes made for M3 to the arch, and bring back the previous template with some adaptation when needed. Note: * M3: some class are still present task-6054024 Co-authored-by: Romeo Fragomeli <rfr@odoo.com>
This update corrects an issue preventing the generation of XML reports for Profit & Loss statements when footnotes were included. The fix addresses a dependency on an outdated model, ensuring the export functionality now works correctly. This resolves a technical problem impacting report generation.
Original PR description
**Steps to reproduce:** * Install the **l10n_lu_reports** module. * Go to **Accounting → Reporting → Profit & Loss**. * Add a footnote on a report line (**⋮ → Annotate**). * Click **Export (XML)** to open the export wizard. * Enable **Import notes as references** and export. **Observed behavior:** * Export fails with `KeyError: 'account.report.manager'`. * XML file cannot be generated when references are enabled. **Cause:** * The export logic relied on the deprecated `account.report.manager` model. * This model was removed in v17([commit](https://github.com/odoo/enterprise/pull/33604/changes#diff-5fc5051f5c0211c0eec96b892e7d29e01b68d804417443502d17bccd8333d7ecL41)) and replaced by `account.report.footnote`. * The footnote retrieval code was not migrated accordingly. **Fix:** * Migrate reference retrieval to use `account.report.footnote`. opw-5890630 Forward-Port-Of: odoo/enterprise#112917 Forward-Port-Of: odoo/enterprise#107765
This update fixes an issue where the correct fields (employee or applicant) weren't consistently displayed when creating a contract offer. The change ensures that the appropriate field – employee ID or applicant ID – is shown based on whether the offer is for an existing employee or a new applicant, improving the user experience and data accuracy.
Original PR description
Ensure the correct field (employee or applicant) is visible when creating a contract offer, whether for an existing employee or a new applicant. Visibility truth table: | employee_id | applicant_id | Visible Field | |-------------|--------------|---------------| | False | False | applicant_id | | False | True | applicant_id | | True | False | employee_id | | True | True | applicant_id | Task: 6094737
This update fixes a warning displayed in payslips when all GOSI contributions are zero, a problem identified in versions 19.2 and above. The change ensures the WPS report can be generated correctly by adding a minimum GOSI contribution percentage, preventing the warning and maintaining accurate payroll reporting.
Original PR description
[IMP] l10n_sa_payroll: GOSI integration warning
When all of the GOSI contributions are 0, I showed warning in payslip
This is for version 19.2 and above.
task - 6032714
Forward-Port-Of: odoo/enterprise#112888This update fixes inconsistencies in how the Odoo editor creates empty blocks. The system now automatically inserts a line break when a container is empty, simplifying the process for developers and ensuring a more reliable editing experience. This change improves the editor's stability and ease of use.
Original PR description
*: accountant_knowledge, ai, knowledge, web_studio ### Purpose of this commit: - Previously, `createBaseContainer` returned an empty container and callers were responsible for ensuring it remained editable. In practice, some code paths manually inserted a `<br>` while others relied on `fillEmpty()`, leading to inconsistent handling of empty blocks. - This commit updates `createBaseContainer` to handle empty containers directly by inserting a `<br>` when no children are provided. - The function now also accepts optional `children`, allowing callers to create a populated container. community - https://github.com/odoo/odoo/pull/254081 task-6014415
This update corrects a restriction on a key field used in payroll reporting, preventing access errors when generating reports. The change expands access rights to allow necessary operations related to HR versioning, ensuring accurate and reliable payroll processing. This resolves a technical issue impacting report generation.
Original PR description
onss_expeditor_number is used to fetch dimonas and other operations on hr.version, leading to access errors since this field is restricted to base.group_system This commit changes the access rights on the field from `base.group_system` to `hr_payroll.group_hr_payroll_user` task-6094854 Forward-Port-Of: odoo/enterprise#112944
This update eliminates a technical issue causing errors when adding multiple attendance work entries, specifically within the Payroll app. The fix removes duplicate entries created through the work entry calendar, preventing a crash in the user interface. This ensures a smoother experience for users managing their work schedules.
Original PR description
### Steps to reproduce: - Download Payroll app - From the top bar 'Employees' > 'Employees', create a new employee - From the top bar 'Work Entries' > 'Work Entries', add 2 Attendance work entries on…
### Steps to reproduce: - Download Payroll app - From the top bar 'Employees' > 'Employees', create a new employee - From the top bar 'Work Entries' > 'Work Entries', add 2 Attendance work entries on different days, with different creation days (either wait 24h between creations, or adjust one create_date in DB) - Click on any empty cell, you'll find the "Replace by Attendance" smart button replicated > If you activate debug mode and click on any cell > **UncaughtPromiseError > OwlError** ### Cause of issue: https://github.com/odoo/enterprise/blob/482b4564b3a81e914d6eead9a7b85a23b7cac3dc/hr_work_entry_enterprise/static/src/work_entries_gantt_model.js#L110-L138 `formattedReadGroup` is called with both `work_entry_type_id` and `create_date:day`. If the user has created several work entries of the same type on different days, we would get multiple group results having the same `work_entry_type_id`. These duplicated records later produce an Owl crash because the button list uses `t-key="workEntry.id"`. https://github.com/odoo/odoo/blob/72be98d705e225f663b65e289e11d0b8642ec6f8/addons/hr_work_entry/static/src/views/work_entry_calendar/work_entry_multi_selection_buttons.xml#L16-L17 ### Fix: Since the goal of the above method is to extract the favorite work entries to later use in smart buttons and `userFavoritesWorkEntriesIds.map((r) => r.work_entry_type_id?.[0]).filter(Boolean)` extracts all the entries' `work_entry_type_id` (including duplicates), the easiest way to get rid of these duplicates is to create a `Set`. opw-5953671 Forward-Port-Of: odoo/enterprise#110245 Forward-Port-Of: odoo/enterprise#109823
This update optimizes how Odoo retrieves information about knowledge articles. The change involves clearing a temporary cache, which improves the speed and responsiveness of accessing these articles for users. This results in a smoother user experience and faster access to important documentation.
Original PR description
https://github.com/odoo/odoo/pull/257771
This update streamlines chart creation by separating data management from chart-specific design and generation. By extracting common code, the team reduces redundancy and simplifies future chart development, leading to faster updates and improved maintainability.
Original PR description
The current problem with charts ------------------------------- All chart types (bar, line, pie, etc.) have quite a lot of code in common: mainly to manage ranges (adapt, copy, duplicate sheet, etc.) Odoo charts also brings a bunch of duplicated code: the data part is not, but all the other parts of the code is duplicated, like for design (title, legend, axes, etc.), runtime generation. Much of the code for an odoo bar chart is exactly the same as for a range-based bar chart (except to get the data). Lots of duplicated code is already factorized in helper functions, but the boilerplate remains important and not all code is factorized. When we add a new feature to charts, we usually need to change both o-spreadsheet and odoo. With this refactoring, we extract the data part from all the rest: the data management is specific to each data source (odoo vs range), the rest is specific to the chart type and is agnostic of the data source. Task: 6036223