Odoo Release Updates
Every commit to Odoo Community and Enterprise, parsed and categorized. Never miss a bug fix, improvement, or new feature.
Activity
2026-03-26
This fix corrects a reference to a data file in the Swiss HR Payroll module that was renamed from 'hr_contract_type_data.xml' to 'hr_employee_type_data.xml'. The change ensures the payroll system loads the correct employee type data during module updates, preventing data loading failures or missing payroll configuration in Swiss localization implementations.
[FIX] l10n_ch_hr_payroll: Fix file name that was renamed
This fix resolves a crash in the AI module's command palette when users attempt to message the LLM through the command palette interface. The issue was caused by an undefined return value from the action function in the askAIProvide method. The commit restructures the action function to explicitly return void instead of implicitly returning a value, eliminating the crash condition.
[FIX] ai: command palette crash on ai message
2026-03-25
This commit optimizes Facebook and Instagram API calls by implementing batch request functionality using Meta's batch API, reducing HTTP calls and significantly improving refresh performance. The changes introduce a new utility function that batches up to 50 API requests at once, resulting in measurable performance improvements (refresh time reduced from ~45 seconds to ~20 seconds for 6 Facebook and 1 Instagram page). Additional improvements include fixing engagement trend calculations for Instagram to use total_interactions instead of reach, displaying saved and view statistics for Instagram posts, and various UI enhancements including conditional visibility of statistics fields.
[IMP] social_facebook, social_instagram: batch the requests
The l10n_ar_edi module was adding selection values to the currency_provider field without declaring a direct dependency on currency_rate_live, causing upgrade failures when currency_rate_live was uninstalled. This fix adds the missing dependency declaration to ensure the field's selection values are always available when the module is active.
[FIX] l10n_ar_edi: Add dependency on currency_rate_live
This fix modifies the work entry type deletion logic in the HR Payroll module to allow the system administrator (SUPERUSER_ID) to bypass the restriction that normally prevents deletion of work entry types. Previously, all users including the superuser were blocked from deleting these records and forced to archive them instead. The change adds a uid check to exclude the superuser from this business rule enforcement.
[FIX] hr_payroll: Allow SUPERUSER_ID deleting work entry types
This fix resolves a PDF export failure in account reports when annotations are present and certain date filter options lack a date_from value (such as period type "today"). The solution removes redundant date filtering logic from the annotation rendering method since date filtering already occurs during annotation generation, simplifying the code and eliminating the crash condition.
[FIX] account_report: Unable to export Report with Annotations
This fix addresses a migration issue where Swiss bank journals retain obsolete SEPA PAIN version values after upgrading to version 18.0, causing ISO20022 XML file generation to fail bank validation. The code now dynamically detects empty sepa_pain_version fields at file generation time and defaults them to the supported PAIN 09 format, ensuring already-migrated databases continue functioning without manual intervention.
[FIX] account_iso20022: fix sepa_pain_version at file generation to make it PAIN 09 when empty
Fixed a constraint validation bug in the AI module that prevented module updates by incorrectly blocking any llm_model write operation on the image generation agent, even when the new value matched the existing one. The fix adds a check to only raise the constraint error when the llm_model is actually being changed to a different value, allowing legitimate updates while still protecting against unauthorized model changes.
[FIX] ai: fixing constraint issue with image agent
This fix removes an obsolete manual payslip_state assignment from demo data for an hr.leave record, allowing the system to automatically compute this field instead. The change eliminates a popup warning that appeared when viewing time off records in the payroll module during demo data initialization, improving the user experience in demonstration environments.
[FIX] hr_payroll: Fix TimeOff popup warning in demo
This commit refactors the ai_attachment_vacuum model to use explicit ORM record rules instead of custom Python-based access control logic. The custom _check_access method that manually filtered forbidden records and constructed access errors has been removed and replaced with declarative ir.rule records that enforce read/write permissions based on attachment public status and res_access fields. This modernizes the module to leverage Odoo's standard access control mechanisms, reducing code complexity while maintaining the same access restrictions.
[IMP] orm: access_domain and explicit record rules
2026-03-24
This fix corrects the deletion permission logic for salary rules in the HR Payroll module by allowing the SUPERUSER to delete any salary rule, including system-created ones, while preventing regular users from deleting system-generated rules. Previously, the SUPERUSER was incorrectly blocked from deletion due to flawed permission checking logic that only examined rule creation ownership rather than current user identity.
[FIX] hr_payroll: Allow SUPERUSER deleting a salary rule
The AI module's attachment vacuum model now uses Odoo's standard record rules mechanism instead of overriding the _check_access() method to enforce access controls. Two new record rules have been added that mirror attachment access permissions, allowing read access to public or readable attachments and write/create/delete access based on attachment write permissions, while the custom access control method has been removed from the codebase.
[REF] ai: use record rules for access domain
This commit fixes a migration issue in Belgian localization where account XMLIDs a4121 and a4521 were missing after database migration, causing the l10n_be_reports module to fail recovering partner and reconcile account references. The fix adds a fallback mechanism that resolves these accounts by their account code when XMLIDs are unavailable, eliminating post-init warnings while preserving normal XMLID behavior for non-migrated databases.
[FIX] account: preload BE report account xmlids during migration
This commit fixes a module dependency issue in helpdesk_stock where installation without auto_install would fail because the module was missing an explicit dependency on sale_stock. The fix adds sale_stock as a direct dependency instead of relying on stock, ensuring that sale_order.picking_ids field is available when the module initializes.
[FIX] helpdesk_stock: fix single module installation
This change excludes Joint Committee 999 (chairman/executive positions) from Belgian minimum wage compliance warnings in both contract salary offers and employee contract versions. The fix adds explicit filtering to skip minimum wage validation for JC 999 positions since they have different compensation rules, and includes test coverage to prevent regression.
[IMP] l10n_be_hr_payroll: Exclude JC 999 from the min wage warnings
This fix corrects the calculation of worked day line amounts in payslips when public holidays are present. The bug caused worked day amounts to be incorrectly inflated because public holiday hours were being excluded from work interval calculations, which then artificially reduced the computed work time and increased the per-hour attendance rate. By adding the compute_leaves=False parameter to _work_intervals_batch, the calculation now properly accounts for all hours including those on public holidays.
[IMP] hr_payroll: fix worked day lines amount
2026-03-23
This fix corrects the calculation of hourly rates displayed on US payslips when working very small time periods (such as seconds). Previously, the rate was calculated by dividing the rounded monetary amount by hours worked, causing compounding rounding errors that produced incorrect overtime multiplier rates. The fix now computes the rate directly from the hourly wage multiplied by the work entry type's rate multiplier, ensuring accurate display regardless of hours worked.
[FIX] l10n_us_hr_payroll: fix rate display for tiny overtime
This commit refactors WhatsApp test assertions to use a new BusResult helper class for improved clarity and maintainability of bus notification testing. The change replaces verbose dictionary-based assertions with a more structured BusResult object that explicitly separates the bus channel, message type, and payload, making tests more readable and reducing assertion boilerplate while maintaining the same functional validation.
[REF] test_whatsapp: improve assertion on bus notifications
This commit refactors Odoo's tracking API to simplify how addons generate and log field changes across models. It introduces new methods like _track_add (for manual tracking on current model) and _track_record (for logging changes to parent models), removes low-level data manipulation requirements, and adds a mail.track.mixin to allow tracking without inheriting from mail.thread. The changes include comprehensive tests covering various tracking use cases and API documentation updates to reduce confusion around tracking structures.
[IMP] mail: cleanup and test tracking usage
This fix modifies the salary rule and parameter deletion logic in hr_payroll to allow the SUPERUSER to bypass the restriction that prevents deletion of system-created payroll parameters. Previously, the code blocked deletion of any parameter created by the system regardless of user role; now it only enforces this restriction for non-superuser accounts. This enables system administrators and automated processes running with elevated privileges to manage or clean up payroll configuration as needed.
[FIX] hr_payroll: Allow SUPERUSER to unlink salary rules and parameters
This commit systematically adds `.this` prefixes to template variable references across multiple Odoo modules in preparation for OWL3 framework compatibility. The migration changes unqualified component properties, state variables, and method references in XML templates to explicitly use `.this` notation, ensuring templates correctly target component instance members rather than template scope variables. This is a large-scale refactoring applied across accounting, documents, appointment, and knowledge modules to maintain compatibility with OWL3's stricter variable scoping requirements.
[REF] *: run rendering context migration script entire codebase
This commit refactors the avatar popover system across multiple Odoo modules to use a unified AvatarCard component from the mail module instead of separate popover implementations, while updating the chat opening mechanism to use mail.store service. The planning module receives enhanced functionality to display employee role tags in the avatar card, and several modules (hr_appraisal, knowledge, hr_gantt, timesheet_grid) are updated to reference the new standardized components and hooks.
[REF] planning: update AvatarCardPopover template
The "Mark as Completed" button on tax returns is now always visible regardless of the return's current state, allowing users to manually complete returns even after a workflow has started. This fixes a critical issue for localizations that don't use API integration or when API connections are temporarily unavailable but users have manually submitted returns through alternative channels.
[FIX] account_reports: always show "mark as complete" for returns
This commit removes the "Register Payment" button and associated payment registration logic from individual payslips in the core hr_payroll_account module, consolidating payment handling at the payrun level instead. The "Payment Report" button in payruns is renamed to "Pay" for clarity, and related test files are removed, while the Australian localization module now inherits and maintains the payment registration functionality for its specific requirements.
[IMP] hr_payroll: remove register payment logic
The Stripe issuing top-up feature was incorrectly retrieving the country code from the financial address nested structure, which only exists in EU payloads. UK accounts return the country at the bank_transfer level instead. This fix relocates the country lookup to the common bank_transfer object, ensuring UK top-ups correctly identify the account holder's country for partner creation.
[FIX] stripe_issuing_proxy: UK topup country
This commit consolidates the separate l10n_pl_reports_jpk_fa module into the main l10n_pl_reports module by merging all JPK FA (Polish invoice register) reporting functionality, data files, models, views, and tests into a single unified Polish reporting module. The change updates all internal references and dependencies to reflect the new module structure while maintaining full backward compatibility of the JPK FA report functionality for Polish accounting compliance.
[REF] l10n_pl_reports,l10n_pl_reports_jpk_fa: merging JPK FA into polish reports
This commit upgrades the o_spreadsheet library to its latest version, replacing multiple native HTML select elements throughout the spreadsheet UI with the standardized Select component from the o-spreadsheet library. The changes modernize the spreadsheet interface by using consistent, component-based dropdown controls across filter editors, list sorting panels, comments filtering, and related dialogs, while also updating test helpers to work with the new component structure. This ensures better UI consistency, maintainability, and alignment with the o-spreadsheet design system.
[IMP] *_spreadsheet_*: update o_spreadsheet to latest version
2026-03-21
This commit fixes a test setup sequence issue in the HR Appraisal module where employee creation was occurring before the company's appraisal plan settings were configured, causing next appraisal date calculations to use incorrect default values. By moving the employee creation to after the appraisal plan configuration is complete, the test now properly validates the appraisal date computation logic with the correct settings in place.
[FIX] hr_appraisal: fix next appraisal date tests
2026-03-20
This commit systematically adds ".this" prefix to all template variable references across multiple Odoo modules in preparation for OWL3 framework migration. The changes ensure that component instance variables (props, state, methods) are properly scoped by explicitly referencing "this" in inline XML templates, which will become a requirement in OWL3 to avoid variable resolution ambiguity and improve template clarity.
[REF] *: run rendering context migration script on inline xml
This fix adds 'line_ids.account_id' to the dependencies of the _get_datev_account computed field in the German localization module, ensuring that the DATEV export account (l10n_de_datev_main_account_id) is automatically recomputed whenever a move line's account changes. Previously, updating an account on a move line did not trigger recalculation of the DATEV account, resulting in incorrect exports with duplicate lines when accounts were corrected (such as replacing suspense accounts with actual ones).
[FIX] l10n_de_reports: recompute DATEV account when line account changes