Daily updates from Odoo
Tuesday, June 30, 2026
51 changes
7 changes
Enhancements to existing features
The check status button is now disabled when a user does not have permission to edit it. This avoids access errors and makes the interface clearer by only allowing actions that the user can actually perform.
Original PR description
Before this commit: Only main company of tax unit have write access on check, so when main company is not selected and user tries to change status of check, access error is thrown. After this commit: Disable check status button if user don't have write access on check. task-5951364 Forward-Port-Of: odoo/odoo#271447
This update makes e-Dispatch handling easier by moving upload options into the Actions menu, adding a one-step fetch for XML and PDFs, and improving how matching documents are labeled and refreshed. It also fixes commercial invoice status updates so the correct response banner appears while the invoice is awaiting the recipient's reply.
Original PR description
## Description of the issue/feature this PR addresses: Fetch-button and matching UX improvements for e-Dispatch (receipts & deliveries), plus a fix to commercial (TICARIFATURA) invoice status…
## Description of the issue/feature this PR addresses: Fetch-button and matching UX improvements for e-Dispatch (receipts & deliveries), plus a fix to commercial (TICARIFATURA) invoice status handling and its response banner on account.move. ## Current behavior before PR: - "Upload e-Dispatch (XML)" is only available as a list-view toolbar button. - There is no single action to fetch e-Dispatch XMLs and then their PDFs. - "Update From GİB e-Dispatch (XML)" shows even when no XML is linked to the receipt. - Updating a receipt from its XML does not (re)fetch the matching Nilvera PDF. - Outgoing deliveries do not fetch the Nilvera PDF on status synchronization. - Fetched XML attachments are hard to match (no customer name in the name). - Commercial (TICARIFATURA) invoices that succeed without a recipient answer never reach the "succeed" status, and the commercial response banner (awaiting / approved / rejected) does not display correctly. ## Desired behavior after PR is merged: - "Upload e-Dispatch (XML)" is moved to the Actions menu on the list view. - A new "Fetch e-Dispatches" action fetches the XMLs and then the PDFs, in order (receipts and deliveries). - "Update From GİB e-Dispatch (XML)" is hidden until an e-Dispatch XML is linked. - Updating a receipt from its XML (re)fetches the matching Nilvera PDF. - Outgoing deliveries fetch the Nilvera PDF (via the Sale channel) on a successful status sync. - Fetched XML attachments carry the customer name for easier matching. - Commercial invoices persist "succeed" while awaiting the recipient's answer, and the awaiting / approved / auto-approved / rejected banners display correctly. Upgrade PR: https://github.com/odoo/upgrade/pull/10625 task-6044179 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a Swedish VAT number is entered, Odoo can now automatically extract and fill in the company’s registry number. This reduces manual entry and helps keep business identification details consistent.
Original PR description
Organization number is part of the VAT number Official reference: https://www.skatteverket.se/foretag/moms/kopavarorochtjanster/inkopfranandraeulander/kopavarorfranandraeulander.4.3a7aab801183dd6bfd380005738.html > I Sverige börjar alla VAT-nummer med bokstäverna SE (landskoden) och avslutas med siffrorna 01. Om du har en enskild firma följs landskoden av de 10 siffrorna i ditt personnummer. Om du har ett bolag eller en förening följs landskoden av de 10 siffrorna i organisationsnumret. VAT-numret skrivs utan bindestreck. which translates to > In Sweden, all VAT numbers begin with the letters SE (the country code) and end with the digits 01. If you are a sole proprietor, the country code is followed by the 10 digits of your personal identification number. If you are a corporation or an association, the country code is followed by the 10 digits of your organization number. The VAT number is written without a hyphen. Forward-Port-Of: odoo/odoo#269590
The Australian payroll rules have been updated for the 2026-27 financial year, including revised tax rates and formulas. The change also corrects how the Medicare exemption is applied from 2024 onward, helping ensure payroll calculations and historical corrections stay accurate.
Original PR description
Update tax rates and formulas for the 2026-27 financial year in the Australian payroll module. This commit also amends the tax rates and formulas from 2024 onwards. The Medicare exemption is now properly factored into the tax rates from the 2024-25 fiscal year forward, with the revised formula applied accordingly. Data for pre-2024 remains supported to facilitate importing historical payslips for corrections, aligning with the ATO rule allowing amendments for up to 5 years after the original payslip date. 6252689 Forward-Port-Of: odoo/enterprise#121561
Users can now choose a date directly from the stock report search panel instead of opening a separate inventory-at-date screen. This makes it faster to review stock levels at a past moment while keeping all current filters, and users can switch back to live stock with one click.
Original PR description
Backport of odoo/odoo#264699 Instead of navigating to a separate view via the 'Inventory at Date' wizard, users can now pick a date directly in the search panel. This sets 'to_date' in the context, causing quantities to be computed at the chosen date while preserving all active filters (category, warehouse, search terms). The date picker uses 1-minute rounding for precise timestamp selection, and defaults to the current time when opened. A 'Current stock' link appears to clear the date and return to live quantities. task-6152466 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change adds an initial aging report for stock values and quantities, letting users analyze remaining inventory by period in pivot-style reports. It makes these figures available on demand for reporting, which improves visibility into inventory aging and stock valuation trends.
Original PR description
First implementation of the aging report. It's not optimized yet. The values are simply coming from the existing compute method. Task: 5967087 ##stats for 100 products We can see the quantity on hand has | | naive impl (30 % without qty) | naive impl (0 % without qty)| |--------|--------|--------| | 450 m/M | 1.9sec | 3.1sec | | 2000m/M | 8.6sec | 26sec | Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Charts in spreadsheets can now display an info icon that opens additional information. Users can add a short description and a “see more” link from the design panel, making charts easier to understand and giving viewers a quick path to more context.
Original PR description
It's now possible to add a information text and/or a see more link to a chart. Accessible with the info icon on the chart. Editable in the design side panel. Task: 5365254
6 changes
Enhancements to existing features
The Inventory at Date wizard now opens the same richer stock report used for current inventory instead of a basic product list. This gives users the same buttons, filters, and stock details when checking stock at a past date, making the results easier to review and act on.
Original PR description
## Summary Minimal alternative: make the "Inventory at Date" wizard open the same rich stock report view instead of the basic one. ### Problem The wizard opens `stock.view_stock_product_tree` (basic…
## Summary Minimal alternative: make the "Inventory at Date" wizard open the same rich stock report view instead of the basic one. ### Problem The wizard opens `stock.view_stock_product_tree` (basic product list) instead of `stock.product_product_stock_tree` (full stock report with action buttons and search panel). ### Solution Change the wizard's `open_at_date()` to use the stock report view and its associated search view. The wizard flow is preserved — this is purely a view swap. ### Changes - `stock_quantity_history.py`: Changed `tree_view_id` from `view_stock_product_tree` to `product_product_stock_tree`, added `search_view_id` for the stock report search view ### Alternative See #263507 for a more integrated approach that replaces the wizard entirely with a date picker in the search panel. [Task #6152466](https://www.odoo.com/odoo/rd-fun-logistics-966/6152466) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263509
The stock move value is now read-only in the list view, so users can’t change it inline by mistake. Any manual valuation adjustment must now go through the audited Adjust Valuation wizard, which keeps a clear record of who changed what and why.
Original PR description
### Description of the issue/feature this PR addresses: The stock move value was inline-editable in the moves list, which is misleading. Editing it directly behaves inconsistently across cost…
### Description of the issue/feature this PR addresses: The stock move value was inline-editable in the moves list, which is misleading. Editing it directly behaves inconsistently across cost methods: for FIFO products the edit updates the remaining value, but for AVCO products there is no mechanism to propagate it, so the change has no effect. The direct edit also bypasses the audited revaluation channel, the Adjust Valuation wizard (product.value), which records the user, date and justification. Disable direct modification by marking the field read-only by default, so manual revaluation always goes through Adjust Valuation. Internal valuation writes are unaffected. ### Current behavior before PR: The value field is editable in the stock move list view. <img width="1890" height="460" alt="image" src="https://github.com/user-attachments/assets/8ddc6495-4beb-4481-bdbf-2a44b70f3784" /> ### Desired behavior after PR is merged: The value field should not be editable. Users should use the Adjust Valuation wizard to ensure the operation is auditable. @qrtl QT6826 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267360
This update improves how Australian payroll handles superannuation corrections after a payslip has already been submitted and paid. It helps the system calculate and report the missing amount through amended STP processes, reducing manual work and the risk of reporting errors.
Original PR description
Amending STP creates an update action if full file replacement is not available. Amended STPs create delta superannuation stream lines. task-6245415 Forward-Port-Of: odoo/enterprise#119946
This update makes the timesheet assistant clearer and more reliable for users. It now gives more specific guidance when the connection or browser extension is missing, shows better suggestions when items are deleted, and uses the most relevant project information to reduce confusion.
Original PR description
Forward-Port-Of: odoo/enterprise#121247 Forward-Port-Of: odoo/enterprise#115859
For Swedish companies, Odoo can now extract the organization number from the VAT number and use it to prefill the company registry field. This reduces manual entry and helps keep business identification details consistent.
Original PR description
Organization number is part of the VAT number Official reference: https://www.skatteverket.se/foretag/moms/kopavarorochtjanster/inkopfranandraeulander/kopavarorfranandraeulander.4.3a7aab801183dd6bfd380005738.html > I Sverige börjar alla VAT-nummer med bokstäverna SE (landskoden) och avslutas med siffrorna 01. Om du har en enskild firma följs landskoden av de 10 siffrorna i ditt personnummer. Om du har ett bolag eller en förening följs landskoden av de 10 siffrorna i organisationsnumret. VAT-numret skrivs utan bindestreck. which translates to > In Sweden, all VAT numbers begin with the letters SE (the country code) and end with the digits 01. If you are a sole proprietor, the country code is followed by the 10 digits of your personal identification number. If you are a corporation or an association, the country code is followed by the 10 digits of your organization number. The VAT number is written without a hyphen. Forward-Port-Of: odoo/odoo#269590
Polish invoices sent outside KSeF now include the required QR code and KSeF number directly on the PDF. This makes the invoices compliant with Polish e-invoicing rules and easier to verify for recipients.
Original PR description
While communicating outside KSeF, invoices must have a QR Code and their KSeF number displayed. QR Code content spec is available here: https://github.com/CIRFMF/ksef-api/blob/main/kody-qr.md opw-6211058 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#271713
6 changes
Enhancements to existing features
The Australian payroll rules have been updated to reflect the 2026-27 tax year. It also corrects the tax and Medicare-related calculations from 2024 onward, helping ensure payroll deductions are accurate while still supporting older records for historical corrections.
Original PR description
Update tax rates and formulas for the 2026-27 financial year in the Australian payroll module. This commit also amends the tax rates and formulas from 2024 onwards. The Medicare exemption is now properly factored into the tax rates from the 2024-25 fiscal year forward, with the revised formula applied accordingly. Data for pre-2024 remains supported to facilitate importing historical payslips for corrections, aligning with the ATO rule allowing amendments for up to 5 years after the original payslip date. 6252689 Forward-Port-Of: odoo/enterprise#121561
The Inventory at Date wizard now opens the same richer stock reporting screen used for current stock, instead of a basic product list. This gives users the same buttons, columns, and filters when checking stock at a past date, making the report easier to use and more informative.
Original PR description
## Summary Minimal alternative: make the "Inventory at Date" wizard open the same rich stock report view instead of the basic one. ### Problem The wizard opens `stock.view_stock_product_tree` (basic…
## Summary Minimal alternative: make the "Inventory at Date" wizard open the same rich stock report view instead of the basic one. ### Problem The wizard opens `stock.view_stock_product_tree` (basic product list) instead of `stock.product_product_stock_tree` (full stock report with action buttons and search panel). ### Solution Change the wizard's `open_at_date()` to use the stock report view and its associated search view. The wizard flow is preserved — this is purely a view swap. ### Changes - `stock_quantity_history.py`: Changed `tree_view_id` from `view_stock_product_tree` to `product_product_stock_tree`, added `search_view_id` for the stock report search view ### Alternative See #263507 for a more integrated approach that replaces the wizard entirely with a date picker in the search panel. [Task #6152466](https://www.odoo.com/odoo/rd-fun-logistics-966/6152466) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263509
The stock move value can no longer be changed directly from the list view. Users must now use the Adjust Valuation wizard, which keeps valuation changes consistent and properly recorded with the user, date, and reason.
Original PR description
### Description of the issue/feature this PR addresses: The stock move value was inline-editable in the moves list, which is misleading. Editing it directly behaves inconsistently across cost…
### Description of the issue/feature this PR addresses: The stock move value was inline-editable in the moves list, which is misleading. Editing it directly behaves inconsistently across cost methods: for FIFO products the edit updates the remaining value, but for AVCO products there is no mechanism to propagate it, so the change has no effect. The direct edit also bypasses the audited revaluation channel, the Adjust Valuation wizard (product.value), which records the user, date and justification. Disable direct modification by marking the field read-only by default, so manual revaluation always goes through Adjust Valuation. Internal valuation writes are unaffected. ### Current behavior before PR: The value field is editable in the stock move list view. <img width="1890" height="460" alt="image" src="https://github.com/user-attachments/assets/8ddc6495-4beb-4481-bdbf-2a44b70f3784" /> ### Desired behavior after PR is merged: The value field should not be editable. Users should use the Adjust Valuation wizard to ensure the operation is auditable. @qrtl QT6826 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267360
This change speeds up how Odoo looks up task activities in project-related mail data. It reduces the time needed for a frequently used query, which should make page and activity loading more responsive for users.
Original PR description
`/mail/data` is called a lot. It spends roughly 33% of its time on the query fetching task activities in `_get_activity_groups` https://github.com/odoo/odoo/blob/a52b277a4db5f14516717738ca962e3bb3c7180f/addons/project_todo/models/res_users.py#L27 This commit adds an index to speed up the query. - before ~25ms https://explain.dalibo.com/plan/72b26edce8448b51 - after <1ms https://explain.dalibo.com/plan/c4g6851e5b4hh702 task-6327159 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves how Australian payroll handles superannuation corrections after a payslip has already been submitted and paid. If a mistake is found, the system can now better calculate and report the adjustment through Single Touch Payroll, reducing manual follow-up and reporting errors.
Original PR description
Amending STP creates an update action if full file replacement is not available. Amended STPs create delta superannuation stream lines. task-6245415 Forward-Port-Of: odoo/enterprise#119946
Polish invoices sent outside KSeF now include the required QR code and the KSeF number directly on the PDF. This helps businesses stay compliant with local e-invoicing rules and makes invoices easier to validate and share.
Original PR description
While communicating outside KSeF, invoices must have a QR Code and their KSeF number displayed. QR Code content spec is available here: https://github.com/CIRFMF/ksef-api/blob/main/kody-qr.md opw-6211058 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#271713
5 changes
Enhancements to existing features
The Australian payroll module has been updated with the latest tax rates and formulas for the 2026–27 financial year. It also corrects how the Medicare exemption is applied from 2024 onward and keeps older data available so historical payslips can still be adjusted when needed.
Original PR description
Update tax rates and formulas for the 2026-27 financial year in the Australian payroll module. This commit also amends the tax rates and formulas from 2024 onwards. The Medicare exemption is now properly factored into the tax rates from the 2024-25 fiscal year forward, with the revised formula applied accordingly. Data for pre-2024 remains supported to facilitate importing historical payslips for corrections, aligning with the ATO rule allowing amendments for up to 5 years after the original payslip date. 6252689 Forward-Port-Of: odoo/enterprise#121561
The “Inventory at Date” wizard now opens the same richer stock report used for current inventory instead of a basic product list. This gives users access to the same buttons, columns, and search options when checking stock at a past date, making the report easier to use and more consistent.
Original PR description
## Summary Minimal alternative: make the "Inventory at Date" wizard open the same rich stock report view instead of the basic one. ### Problem The wizard opens `stock.view_stock_product_tree` (basic…
## Summary Minimal alternative: make the "Inventory at Date" wizard open the same rich stock report view instead of the basic one. ### Problem The wizard opens `stock.view_stock_product_tree` (basic product list) instead of `stock.product_product_stock_tree` (full stock report with action buttons and search panel). ### Solution Change the wizard's `open_at_date()` to use the stock report view and its associated search view. The wizard flow is preserved — this is purely a view swap. ### Changes - `stock_quantity_history.py`: Changed `tree_view_id` from `view_stock_product_tree` to `product_product_stock_tree`, added `search_view_id` for the stock report search view ### Alternative See #263507 for a more integrated approach that replaces the wizard entirely with a date picker in the search panel. [Task #6152466](https://www.odoo.com/odoo/rd-fun-logistics-966/6152466) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263509
The stock move value can no longer be changed directly from the list view. Any manual valuation adjustment must now go through the dedicated Adjust Valuation process, which keeps the change consistent and properly recorded.
Original PR description
### Description of the issue/feature this PR addresses: The stock move value was inline-editable in the moves list, which is misleading. Editing it directly behaves inconsistently across cost…
### Description of the issue/feature this PR addresses: The stock move value was inline-editable in the moves list, which is misleading. Editing it directly behaves inconsistently across cost methods: for FIFO products the edit updates the remaining value, but for AVCO products there is no mechanism to propagate it, so the change has no effect. The direct edit also bypasses the audited revaluation channel, the Adjust Valuation wizard (product.value), which records the user, date and justification. Disable direct modification by marking the field read-only by default, so manual revaluation always goes through Adjust Valuation. Internal valuation writes are unaffected. ### Current behavior before PR: The value field is editable in the stock move list view. <img width="1890" height="460" alt="image" src="https://github.com/user-attachments/assets/8ddc6495-4beb-4481-bdbf-2a44b70f3784" /> ### Desired behavior after PR is merged: The value field should not be editable. Users should use the Adjust Valuation wizard to ensure the operation is auditable. @qrtl QT6826 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267360
This update improves how Australian payroll handles superannuation when a mistake is found after a payslip has already been paid. It now supports correction flows in STP reporting so underpaid super can be adjusted and reported more accurately without manual workarounds.
Original PR description
Amending STP creates an update action if full file replacement is not available. Amended STPs create delta superannuation stream lines. task-6245415 Forward-Port-Of: odoo/enterprise#119946
Invoices sent outside KSeF now include the required QR code and KSeF number directly on the PDF. This helps Polish customers share compliant invoices and lets recipients verify them more easily.
Original PR description
While communicating outside KSeF, invoices must have a QR Code and their KSeF number displayed. QR Code content spec is available here: https://github.com/CIRFMF/ksef-api/blob/main/kody-qr.md opw-6211058 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#271713
1 change
Enhancements to existing features
The POS now sends buyer address details to Fiskaly only when they are actually available. This avoids transmitting placeholder values like "N/A", which helps keep request data accurate and prevents unnecessary records from being sent.
Original PR description
In this commit: ------------------- - Buyer address fields are optional and should only be sent to Fiskaly when they are actually available. - Avoid sending placeholder values like "N/A". If the data is not present, the fields should simply be omitted from the request. task: 6113133 Forward-Port-Of: odoo/enterprise#121989 Forward-Port-Of: odoo/enterprise#113621
2 changes
Enhancements to existing features
This update makes sure optional buyer address information is sent only when it actually exists. It no longer fills missing fields with placeholder values like "N/A", which helps keep submitted data cleaner and more accurate.
Original PR description
In this commit: ------------------- - Buyer address fields are optional and should only be sent to Fiskaly when they are actually available. - Avoid sending placeholder values like "N/A". If the data is not present, the fields should simply be omitted from the request. task: 6113133 Forward-Port-Of: odoo/enterprise#121989 Forward-Port-Of: odoo/enterprise#113621
Polish invoices sent outside KSeF now show both a QR code and the KSeF number on the PDF. This helps recipients verify the invoice and keeps the document compliant with local e-invoicing requirements.
Original PR description
While communicating outside KSeF, invoices must have a QR Code and their KSeF number displayed. QR Code content spec is available here: https://github.com/CIRFMF/ksef-api/blob/main/kody-qr.md opw-6211058 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#271713
20 changes
Enhancements to existing features
We updated the app name sent to Avalara to “Odoo SA” so these requests are easier to distinguish from other app store entries. This is a small behind-the-scenes improvement that helps avoid confusion in service reporting and identification.
Original PR description
To distinguish these calls from others in the app store, we change our app name to Odoo SA. task-6305073
Australian payroll calculations have been updated for the 2026-27 financial year. The change also corrects how Medicare exemptions are applied from 2024 onward, helping ensure payslips and corrections use the right tax amounts.
Original PR description
Update tax rates and formulas for the 2026-27 financial year in the Australian payroll module. This commit also amends the tax rates and formulas from 2024 onwards. The Medicare exemption is now properly factored into the tax rates from the 2024-25 fiscal year forward, with the revised formula applied accordingly. Data for pre-2024 remains supported to facilitate importing historical payslips for corrections, aligning with the ATO rule allowing amendments for up to 5 years after the original payslip date. 6252689 Forward-Port-Of: odoo/enterprise#121561
This update adds two additional food delivery providers, Food Zapp and Enqueue, to the Point of Sale delivery integration. It expands the available local options for businesses operating in the UAE and Saudi Arabia, making it easier to connect with region-specific delivery services.
Original PR description
In this commit: - We are introducing two new providers, FoodZapp and Enqueue, for the UAE and KSA, respectively. Task-6263190,6263310 Forward-Port-Of: odoo/enterprise#122001 Forward-Port-Of: odoo/enterprise#121461
The timesheet assistant manager now makes more reliable suggestions when helping users fill in timesheets. This improves day-to-day accuracy and reduces the chance of suggested entries needing manual correction.
Original PR description
This commit's purpose is to add a few bugprovement to the timesheet assistant manager. Those imp concerns mostly the timesheets suggested by the assistant manager. task-6179842 Forward-Port-Of: odoo/enterprise#121946 Forward-Port-Of: odoo/enterprise#118494
This update expands automated testing to cover how the New button works in list and kanban views. It helps ensure the expected create flow is correctly handled across different view configurations, reducing the risk of regressions for users adding new records.
Original PR description
…an views This commit expands the Clickbot's test coverage by simulating a click on the "New" button within list and kanban views. Depending on the view's configuration, this action will either open the corresponding creation form view, trigger editable mode for inline-editable lists, or launch the quick create interface in kanban views. task-6324762
The Point of Sale interface for Sweden has been updated to hide the Split Bill action when the Sweden blackbox is enabled. This keeps the POS aligned with the supported local setup and avoids showing an option that cannot be used.
Original PR description
The bill splitting configuration has been removed from PoS settings. Since bill splitting is not supported when using the Sweden blackbox, this commit adapts the localization by overriding the control button template to hide the Split Bill button in the POS UI when the Sweden blackbox is enabled. Task [link](https://www.odoo.com/odoo/project.task/6294276) task-6294276 Related PRs: - Community: https://github.com/odoo/odoo/pull/269442 - Upgrade: https://github.com/odoo/upgrade/pull/10465
The Belgian payroll settings now calculate the percentage option against withholding tax instead of taxable salary, making deductions more accurate. We also added clearer option labels, a way to set a total monthly tax target, and automatic limits so deductions cannot exceed what is available.
Original PR description
The percentage option was previously computed on the taxable salary instead of the withholding tax amount. Also, a total guaranteed tax ceiling option and a net salary safety cap were missing. - Change % option calculation to scale against withholding taxes (PP). - Rename '€/month' option to '€ extra/month'. - Add '€ in total /month' option to pay a target total tax amount. - Add descriptive help messages to clarify calculation methods for users. - Cap the deduction automatically to never exceed available taxable salary. Task-ID: 6326856
The Belgian payroll rules now use a single clear setting to determine Intellectual Property wage handling, instead of relying on a redundant separate field. This makes the payroll setup easier to maintain and reduces the risk of inconsistencies in contract and payslip calculations.
Original PR description
The current Intellectual Property (IP) setup for Belgian payroll is broken. The `ip` field is a redundant field which can be removed and replaced by the ip_wage_rate for computation making it much simpler. This commit cleans up the redundant schema and simplifies the workflow: - Removes the `ip` field. - Updates the payslip computation to rely solely on `ip_wage_rate` (if > 0, IP is applied). - Cleans up views and Python references where this field was utilized. Task: 6259513
This update adjusts how several enterprise features read and react to UI data in chatter, activities, and attachment previews. It helps these screens stay more reliable and consistent as information changes, with no expected impact on business workflows.
Original PR description
Enterprise counter-part: adopt the `propSignal`/`propComputed` hooks (and `props.static` for callbacks) across the chatter, activity and attachment patches. Every prop read gains `()`. https://github.com/odoo/odoo/pull/271518
Belgian payroll salary rules were updated so several deductions and insurance amounts now appear in the new complementary information section on payslips. A new meal voucher employer contribution line was also added, and one deduction label was clarified to make payslip information easier to understand for employees and payroll users.
The company switcher and mobile menu checkboxes now follow the Enterprise theme more consistently in their checked, focus, hover, and indeterminate states. This improves the visual consistency of the interface and makes these controls feel more polished across the web client.
Original PR description
This commit scopes the switch company and mobile burger menu checkboxes to use the Enterprise theme colors for checked, indeterminate, focus, and hover states etc. task-6236887
Belgian payroll calculations now apply the legally required gradual reduction of the company withholding tax exemption starting in 2027. This keeps the figures shown in the interface aligned with the amounts reported in the official declaration, while avoiding unnecessary database updates.
Original PR description
Belgian regulations require lowering the company withholding tax exemption starting in 2027 to increase state revenue. A centralized multiplier is introduced to apply these progressive yearly reductions (97% in 2027, 93.35% in 2028, 95.9% for 2029+). By applying this directly in-memory during the 274.XX compute loops and Finprof XML rendering, we ensure perfect alignment between the UI and the legal declaration while avoiding redundant database writes. task-6317135
This update makes record tracking more consistent by centralizing how tracking information is exposed and handled. It also cleans up a few outdated tracking settings in tests and related code, reducing confusion and avoiding unnecessary work during record creation.
Original PR description
This small code improvement PR serves two main purposes Serve field track info at fields_get level Override 'fields_get' to include tracking information when asked. That way there is a single entry point to fetch this information making it more standard. Track values in mail.track.mixin Currently, mail.track.mixin offers tools to enable tracking while actual automatic tracking is performed in mail.thread. It was planned but forgotten to move the value tracking in the track mixin, this is now done. Logging is still done by mail.thread but tracking itself is now better contained in track mixin. Cleanup some code bits / remove useless tracking keys notably in tests. Task-6274958
Users can now add an information text and an optional “see more” link to charts. The content is available from the info icon and can be edited in the spreadsheet design panel, making charts more informative and easier to explain.
Original PR description
It's now possible to add a information text and/or a see more link to a chart. Accessible with the info icon on the chart. Editable in the design side panel. Task: 5365254
The Belgian payroll rules now include the Flemish reduction for inexperienced employees. This applies automatically for eligible contracts and work locations, helping companies benefit from the correct payroll deduction for the first four quarters, with the right restart rules after interruptions.
Original PR description
Implement DMFA deduction code 6340 for the Flemish ONSS reduction for inexperienced employees. The reduction applies for the first four quarters starting from the employee's first contract date, provided that: * the contract version has the **Flanders Inexperienced** flag enabled; * the work address maps to a Flanders (`fl`) DMFA location unit. If the contract is interrupted for more than four quarters, the reduction period resets and is applied again upon resumption. If the contract is interrupted after the first two quarters and resumes within four quarters, the reduction continues for the remaining two quarters only (it does not reset). task-6149059
This update makes it easier to correct superannuation amounts after a payslip has already been submitted and paid. It also updates STP reporting so these corrections are recorded properly, reducing manual work and helping payroll reports stay accurate.
Original PR description
Amending STP creates an update action if full file replacement is not available. Amended STPs create delta superannuation stream lines. task-6245415 Forward-Port-Of: odoo/enterprise#119946
Turkey payroll users will now see missing field warnings directly on payslips instead of running into hard errors when generating reports. This makes it easier to fix incomplete company or employee information in advance, while also improving report naming, settings placement, and field guidance for a smoother payroll setup.
Original PR description
- Instead of raising hard errors during report generation, warnings and errors for missing required MUHSGK fields are now displayed directly on the payslips. - This allows users to identify and correct missing information (such as tax/SGK codes on the company or occupation/social insurance numbers on the employee) before generating the payment reports. - Additionally, the workplace agent sequence number on the report is now dynamically fetched from the company's configuration rather than being hardcoded to '000'. - Moves the Turkey payroll settings to the payroll section in settings. - Renames the report selection and downloaded files from "MUHSGK" to "1003B (MPHB)". - Adds clear descriptions/tooltips to the SGK registration number, unit codes, and intermediary code fields. Task-6284594
Odoo can now use email contact data captured by the Gmail browser extension to improve timesheet suggestions. When emails are read or composed, the related people can be matched to projects or tasks and added as helpful key suggestions, making it easier to find the right work items faster.
Original PR description
[IMP] timesheet_grid: Gmail watcher In this commit, Odoo now consumes data from the new Gmail Chrome and Firefox web extension, which captures the from, to, cc, and bcc fields of read and composed emails and sends them to Activity Watch. Odoo retrieves these events, extracts the emails, searches for partners linked to projects and/or tasks, and adds them to suggestions as keyEvents. task-5956040 Forward-Port-Of: odoo/enterprise#120727 Forward-Port-Of: odoo/enterprise#112014
Employers can now record transport subscriptions paid directly to a provider on Belgian payroll slips. This ensures the amount is reflected in the employee’s individual statement and the 281.10 tax report, while keeping the employee’s actual net pay unchanged.
Original PR description
Before this commit, when an employer paid an employee's transport subscription directly (e.g. a bus company billing the company), there was no way to record that amount on the payslip, so it never appeared on the individual account or the 281.10 fiscal report. After this commit, two CP200 salary rules handle it: an input rule (TRANSPORT_3P) adds the encoded subscription to the net, and a deduction rule (TRANSPORT_3P_DED) subtracts the same amount before the net, keeping real net pay unchanged. The declared amount now flows into 281.10 box 14a, alongside other public transport reimbursements. task-6293778
Users can now set a down payment as either a percentage or a fixed amount before an order is confirmed. The system keeps both values in sync automatically, and disabling prepayment is now done by setting the down payment to zero, simplifying the configuration.
Original PR description
Previously, we could only specify a down payment as a percentage. Now users can specify a fixed amount for the down payment required before confirming the order. When the amount changes, the percentage is automatically recalculated, and vice versa. When configuring the template, only a percentage can be set. We removed the online payment toggle and field. So now, to disable the prepayment feature, we have to set the down payment to 0. The **require_payment** field has been removed, and we now use _prepayment_percent = 0_ to indicate that _require_payment = False_. PR: https://github.com/odoo/odoo/pull/270071 Upgrade: https://github.com/odoo/upgrade/pull/10509 task-6293915
3 changes
Enhancements to existing features
This update fills in missing translations across Point of Sale screens, dialogs, alerts, and error messages. It helps staff see clearer messages in their language, improving usability and reducing confusion during day-to-day operations.
Original PR description
pos* = All POS module In this commit: -------------------------------- Add missing translations for user-visible strings across POS modules. - Translated dialogs, errors, alerts, and other UI-visible messages - Updated Python-side UserError, ValidationError, and warning messages Task-5406947 Related PR-https://github.com/odoo/odoo/pull/239972 Forward-Port-Of: odoo/enterprise#121690 Forward-Port-Of: odoo/enterprise#102094
The point-of-sale connection for German fiscal reporting now sends buyer address information only when it actually exists. This avoids sending placeholder values like “N/A,” improving data quality and reducing the chance of rejected or confusing requests.
Original PR description
In this commit: ------------------- - Buyer address fields are optional and should only be sent to Fiskaly when they are actually available. - Avoid sending placeholder values like "N/A". If the data is not present, the fields should simply be omitted from the request. task: 6113133 Forward-Port-Of: odoo/enterprise#121989 Forward-Port-Of: odoo/enterprise#113621
This update improves how Australian payroll handles superannuation corrections after a payslip has already been submitted and paid. If an underpayment needs to be fixed, the system can now create the right update action and report the adjustment more accurately through STP, helping reduce manual work and compliance risk.
Original PR description
Amending STP creates an update action if full file replacement is not available. Amended STPs create delta superannuation stream lines. task-6245415
1 change
Enhancements to existing features
Italian vendor bills now retain the SDI transaction ID when they are received, instead of dropping it. This makes it easier to trace and match incoming documents with their official exchange reference.
Original PR description
A unique transaction id is provided by the SDI for every document. This transaction id was saved on document sending, but discarded for received one. backport of f2cc23b30dd4 opw-6111186