Thursday, September 10, 2026
7 changes · master
New functionality added to Odoo
Belgian companies can now generate SAF-T reports directly in Odoo. This supports local accounting compliance needs by making the required audit file export available for Belgium.
Original PR description
SAF-T reports can now be generated for Belgium. task-5129628 Forward-Port-Of: odoo/enterprise#107270
Financial reports can now include fields where users choose from predefined options instead of typing free text. This helps standardize report inputs and reduce data-entry mistakes, with related editing support added for report administrators.
Original PR description
### [IMP] account_reports: Add support for selection figure type in reports This commit adds support for selection type values in report cells that enables user to select a value from a list of…
### [IMP] account_reports: Add support for selection figure type in reports
This commit adds support for selection type values in report cells that enables user to select a value from a list of available values
This values can be defined in the report XML by defining a dict as `selection={'key1': 'value1', 'key2: 'value2'}` and setting the report `figure_type` as `string`.
### [CLN] account_reports: order imports in account_report.py
### [IMP] account_reports: manage selection options in report expressions
Following the related community commit, we add the UI to allow users to edit the selection options for report expressions. We use a small hack to show the translation button for the selection options field, while still allowing users to edit the HTML/XML in the original language only. This is done to avoid users editing the HTML/XML in translations, which could break the report expressions.
We also modify the code extracting the selection options to extract them from the HTML/XML string.
### [IMP] l10n_fr_reports: add sample selection options
THIS COMMIT SHOULD BE DELETED BEFORE MERGING. IT'S ONLY FOR TESTING PURPOSES.Belgian payroll now supports the withholding tax reduction for eligible extra hours, including different deduction rates and annual hour limits. This helps employers calculate overtime-related payroll tax reductions more accurately and stay aligned with Belgian rules.
Original PR description
**Description** This PR implements the Belgian withholding tax reduction for extra hours/overtime (code: P.P.DEDEH) in l10n_be_hr_payroll, where it introduces support for deduction rates (66.81% and…
**Description** This PR implements the Belgian withholding tax reduction for extra hours/overtime (code: P.P.DEDEH) in l10n_be_hr_payroll, where it introduces support for deduction rates (66.81% and 57.75%), annual hour capping (360h standard / 450h Horeca and cash register), **Implementation** . Added the P.P.DEDEH salary rule linked to Belgian CP200 and applicable structures. . A work entry type qualifies for the extra hours reduction if it is flagged as an extra hours entry (is_extra_hours = True) and satisfies the minimum surcharge requirement of at least 20%. Qualification is determined either directly on the work entry type—when its base rate is 120% or higher (amount_rate >= 1.20)—or through its associated category hierarchy. In cases where the base rate itself is lower (e.g., 100%), the system evaluates both assigned categories and optional categories for any child category marked with premium pay (is_premium_pay = True). If the combined sum of the base rate and the child category's premium percentage reaches or exceeds 120%, the work entry line successfully qualifies for the reduction. . To calculate the reduction amount, the system first determines the employee's basic hourly wage rate by dividing their contract wage by the total worked hours in the payslip period. It then evaluates the eligible extra hours against an annual cumulative cap, set to 360 hours or 450 hours if the company uses a registered cash register, by subtracting any extra hours already claimed on prior validated or paid payslips within the same calendar year. For the remaining eligible hours, the system determines the effective rate by adding the work entry type's base rate and any applicable child category premium rates. Surcharges between 20% and 50% receive a 66.81% deduction rate, while surcharges of 50% or higher receive a 57.75% deduction rate. Finally, the total deduction is computed by multiplying the capped extra hours by the basic hourly rate and the applicable deduction percentage. **Example** > Scenario: An employee with a monthly wage of 2,650.00 € works 15.2 extra hours (2 days) in January 2026 under a 200% overtime rate (+100% premium $\ge 50\%$) > . Total Monthly Worked Hours: $167.2 > . Basic Hourly Rate: 2,650.00 / 167.2 = 15.84928$ > . Extra Hours Base Amount: $15.2 *15.84928 €/h = 240.91€ > . Applicable Rate: 57.75 > . Computed Reduction Amount: $240.91 * 57.75 = -139.13€ task-5431919
Odoo now supports Canadian Pre-Authorized Debit as a Stripe payment option. This lets eligible Canadian customers pay through a locally supported debit method, expanding payment choice for businesses using Stripe.
Original PR description
Add support for the Canadian Pre-Authorized Debit payment method in the Stripe provider. task-6276419
Turkish companies can now store both official buying and selling exchange rates and choose which one applies to invoices, bills, and payments. This helps apply the correct rate per transaction while keeping existing records on the previous selling-rate behavior.
Original PR description
## Description of the issue/feature this PR addresses: Odoo's TCMB integration applies a single selling exchange rate everywhere, but Turkish customers need to apply either the buying or the selling…
## Description of the issue/feature this PR addresses: Odoo's TCMB integration applies a single selling exchange rate everywhere, but Turkish customers need to apply either the buying or the selling rate depending on the transaction - a single rate doesn't fit every case. This lets a TR company fetch both rates and explicitly select which one - Buying or Selling - applies to a given invoice, bill, or payment. ## Current behavior before PR: Only a single (selling) exchange rate is fetched and applied to all invoices, bills, and payments, regardless of the direction of the transaction. ## Desired behavior after PR is merged: `l10n_tr_currency_live_rate` fetches and stores TCMB's buying rate alongside the existing selling rate, and adds a Selling/Buying toggle on invoices, bills, payments, and the Register Payment wizard. The toggle defaults from the document's sale/purchase type or the payment's direction, with a per-partner override that is learned from the first document posted for that partner. Buying rates and the relabelled columns are shown only for companies whose currency provider publishes both rates, so nothing changes for other companies. A `pre_init_hook` backfills existing records to the Selling rate, preserving prior behavior. task-5017817 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Dashboards now open in a visual kanban-style gallery with thumbnails, making it easier for users to browse, create, and open dashboards. This replaces the older landing-page flow and simplifies dashboard creation by letting users start from the dashboard app or convert an existing spreadsheet.
Original PR description
Add kanban view for dashboards Task: [3848129](https://www.odoo.com/web#id=3848129&menu_id=4720&cids=1&action=333&active_id=2328&model=project.task&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo spreadsheets can now display hierarchical Odoo data using sunburst and treemap chart formats. This gives business users clearer visual ways to explore grouped data, spot proportions, and understand nested relationships directly in spreadsheets.
Original PR description
This commit adds the odoo_sunburst chart type, which allows to visualize hierarchical odoo data in a sunburst format. Task: [4953941](https://www.odoo.com/odoo/2328/tasks/4953941) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr