Monday, November 3, 2025
18 changes
4 changes
Enhancements to existing features
Estonia VAT report XML exports now process large volumes of accounting entries in batches instead of recalculating each line separately. This prevents timeouts on large reporting periods and makes VAT submission exports more reliable for businesses with high transaction volumes.
Original PR description
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this…
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this resulted in excessive repeated queries and, for big datasets, timeout errors. Behavior after: Introduced _custom_unfold_all_batch_data_generator, which batches the computation of expression totals for all lines. Now, journal items are resolved in bulk and mapped back to their respective moves, significantly reducing redundant queries. The VAT XML export completes successfully, even on months with very large datasets. Root cause: The Estonia VAT report was missing a batch unfold method (_custom_unfold_all_batch_data_generator). Without it, the system executed totals computation for each line individually instead of in batch, causing major performance degradation. Benchmark: | Period size (journal items) | Before patch | After patch | |----------------------------------------|----------------------|--------------------| | ~15k | 7s | 5s | | ~200k+ | Timeout error| 21s | opw-5046077 Forward-Port-Of: odoo/enterprise#97660 Forward-Port-Of: odoo/enterprise#95047
Messages that include a customer rating are now treated as meaningful activity in the portal, even if they have little or no other content. This improves the accuracy of portal views and prevents rated interactions from being hidden as empty messages.
Original PR description
*: portal, portal_rating, rating, website_slides task-5016995 Forward-Port-Of: odoo/odoo#233871 Forward-Port-Of: odoo/odoo#223515
The Pakistan payroll localization has been updated with the new tax bracket values for 2026. This helps ensure employee payroll calculations stay aligned with the latest tax rules.
Original PR description
Tax brackets for pakistan localization has been updated to include the new values for 2026. Forward-Port-Of: odoo/enterprise#98345
This update removes use of an older password-generation library so the IoT box continues to work with newer Python versions. It also fixes file locations used by Wi‑Fi and system processes, helping device setup remain reliable across software updates.
Original PR description
To ensure compatibility with python 3.13+, we updated the method to generate the rpi's password to avoid using the removed `crypt` lib. We also ensure that files moved between `point_of_sale/tools/posbox/`, `addons/iot_box_image/` and `setup/iot_box_builder` can still be found by system processes using symlinks. Forward-Port-Of: odoo/odoo#233813 Forward-Port-Of: odoo/odoo#233423
3 changes
Enhancements to existing features
Estonia VAT report XML exports now process large sets of accounting data in batches instead of repeating the same work line by line. This prevents timeout errors on high-volume months and helps businesses complete tax reporting reliably and faster.
Original PR description
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this…
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this resulted in excessive repeated queries and, for big datasets, timeout errors. Behavior after: Introduced _custom_unfold_all_batch_data_generator, which batches the computation of expression totals for all lines. Now, journal items are resolved in bulk and mapped back to their respective moves, significantly reducing redundant queries. The VAT XML export completes successfully, even on months with very large datasets. Root cause: The Estonia VAT report was missing a batch unfold method (_custom_unfold_all_batch_data_generator). Without it, the system executed totals computation for each line individually instead of in batch, causing major performance degradation. Benchmark: | Period size (journal items) | Before patch | After patch | |----------------------------------------|----------------------|--------------------| | ~15k | 7s | 5s | | ~200k+ | Timeout error| 21s | opw-5046077 Forward-Port-Of: odoo/enterprise#97660 Forward-Port-Of: odoo/enterprise#95047
The booking screen in Point of Sale no longer automatically focuses the search bar on phones and tablets. This prevents the on-screen keyboard from opening right away, making the experience smoother and less distracting on touch devices.
Original PR description
Task: [#5016943](https://www.odoo.com/odoo/project/1737/tasks/5016943) --- On tablets and phones, the search bar was autofocus when opening the booking screen in the POS frontend. This was causing the keyboard to open automatically, which was not a good user experience. Now the search bar is not autofocus on touch devices for the booking screen by creating a new controller to manage this. Forward-Port-Of: odoo/enterprise#96873
This update keeps Raspberry Pi and IoT device setup working with newer Python versions by replacing a removed system library. It also fixes file location handling and Wi‑Fi configuration saving so device setup and network settings continue to work correctly on newer system versions.
Original PR description
To ensure compatibility with python 3.13+, we updated the method to generate the rpi's password to avoid using the removed `crypt` lib. We also ensure that files moved between `point_of_sale/tools/posbox/`, `addons/iot_box_image/` and `setup/iot_box_builder` can still be found by system processes using symlinks. Forward-Port-Of: odoo/odoo#233813 Forward-Port-Of: odoo/odoo#233423
2 changes
Enhancements to existing features
Payroll CSV payment reports now include payment lines for partners linked to company contribution salary rules. This helps ensure employer-side contributions are visible in payment exports, reducing missed or incomplete payroll-related payments.
Original PR description
- For CSV payment reports, add lines for partners defined as company contributions in salary rule configurations. - Ensures that company-side contributions are properly reflected in generated payment reports. Task: 5114655
Belgian payroll settings now start benefit fields at 0 instead of pre-filled maximum values, helping users make more deliberate choices. Added placeholders and help tips make the settings easier to understand and reduce configuration mistakes.
Original PR description
* Updated the default values of Belgian benefits to 0 instead of the previous maximum. * Added placeholders and tooltips to several fields to improve user guidance. * Adapted the tests by manually adding benefits so that the calculated salary values match the expected results (the previous expected results were based on the old default values). Task-5135523 (https://www.odoo.com/odoo/project/1251/tasks/5135523)
6 changes
Enhancements to existing features
Estonian VAT report XML exports now process large batches of accounting entries together instead of recalculating each line separately. This prevents timeouts on high-volume periods and makes monthly VAT filing more reliable for companies with many transactions.
Original PR description
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this…
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this resulted in excessive repeated queries and, for big datasets, timeout errors. Behavior after: Introduced _custom_unfold_all_batch_data_generator, which batches the computation of expression totals for all lines. Now, journal items are resolved in bulk and mapped back to their respective moves, significantly reducing redundant queries. The VAT XML export completes successfully, even on months with very large datasets. Root cause: The Estonia VAT report was missing a batch unfold method (_custom_unfold_all_batch_data_generator). Without it, the system executed totals computation for each line individually instead of in batch, causing major performance degradation. Benchmark: | Period size (journal items) | Before patch | After patch | |----------------------------------------|----------------------|--------------------| | ~15k | 7s | 5s | | ~200k+ | Timeout error| 21s | opw-5046077 Forward-Port-Of: odoo/enterprise#97660 Forward-Port-Of: odoo/enterprise#95047
This update makes GST return section assignment more accurate when Odoo prepares tax information for Indian accounting flows. It helps ensure moves are classified correctly, reducing the risk of incorrect reporting in GSTR-related processes.
Original PR description
This PR introduces enhancements to the `_set_l10n_in_gstr_section` method, including: -Calling `_get_l10n_in_tax_tag_ids` directly on all moves instead of ines. -Improving the logic for assigning GSTR section values.
This update makes it possible to place the cursor in spots that were previously blocked, such as between protected blocks, between tables, or at the very start or end of a page. It improves the editing experience by letting users type naturally in these edge cases and reduces unwanted extra spacing or empty paragraphs.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/96484 Currently, there is no way to put our cursor between two `contenteditable=false` blocks, between two tables, before the first block in the editable or after the last one. This introduces placeholder blocks with no height in these places, in which the user can put their selection (which will show as a horizontal blinking line). They can then start typing and the placeholder will be persisted. At the end of the document, this is bypassed and the placeholder will be persisted as soon as the selection is in it. task-4129699 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves the Starshipit delivery workflow by allowing shipping labels to be printed in batches instead of one by one. It also adds the sales order reference to the label’s order number, making it quicker to match labels with the correct orders.
Original PR description
Adds two improvements to the usability of the module by supporting printing starshipit labels in batch, and also adding the SO reference to the order number to more easily match the label with it. task-4821727
This update adds dedicated menus for sales and purchase accruals, making it easier to review expected revenue and expenses from one place. It also lets users inspect values as of a chosen date and opens the related order directly for quicker follow-up.
Original PR description
*: purchase_accountant,sale_account_accountant This commit adds new menu for SO and PO accruals. A custom list view (`js_class`) was created for those reports: `accrual_list_view`. AccrualListView…
*: purchase_accountant,sale_account_accountant This commit adds new menu for SO and PO accruals. A custom list view (`js_class`) was created for those reports: `accrual_list_view`. AccrualListView =============== This view is used both by `sale.order.line` and `purchase.order.line`. Its functionnalities are: - The user can choose a date to see records' values in the past; - If a line is clicked, instead of opening the line's form view, it will open its order form view instead. Technical notes about this view: - The chosen date is passed to the context but there is issue when the view is grouped (and it is by default): while the grouped lines uses the right context with the selected date, the contained lines sometime use an old version of this context with a previously selected date which means the grouped data are not the same than the single lines data. To fix that, we force the context on each group. - The "at_date" fields are non-stored computed fields. By default, there is no sum value for those fields. Server side, we override the `_read_group` method to "manually" compute those fields sum. To be able to do that, we tweak the aggregate config in this view. Boolean fields ============== Four boolean fields are created: - `prepaid_expense` and `bill_to_receive` for `purchase.order.line`; - `deferred_revenue` and `invoice_to_be_issued` for `sale.order.line`. Those fields are usefull to fetch right order lines for the right accrual and are always a balance between delivered/received quantity and invoiced quantity. [task-5075455](https://www.odoo.com/odoo/966/tasks/5075455) Community PR: odoo/odoo#231510
This change makes fiscal rates easier to review by showing the current rate and fiscal category directly in account lists. It also improves audit warnings so they only appear when relevant activity exists in the selected period, and makes the warning clickable to help users quickly find the affected accounts.
Original PR description
[IMP] account_fiscal_categories: enhance list view of account_account ====================================================== With this commit, we add a new field `current_rate` in `account.account`.…
[IMP] account_fiscal_categories: enhance list view of account_account ====================================================== With this commit, we add a new field `current_rate` in `account.account`. This `current_rate` is a non-stored compute field, used to compute the current applicable rate on the given account. This `current_rate` and `fiscal_category_id` has been introduced in the list view of `account.account`. [IMP] account_fiscal_categories: enhance multiple rate warning in fiscal report =========================================================== Before this commit, the "multiple rate" warning was shown even when no entries for accounts with multiple rates existed in the selected period. This happened because all accounts were considered for multiple rates, regardless of journal entries in that period. After this commit, only accounts with entries in the selected period are considered for the "multiple rates" warning. The warning is now clickable, redirecting the user to the accounts having multiple rates. [FIX] l10n_be_fiscal_categories: remove redundant rate on CoA ================================================= This commit removes the redundant fiscal rate on account-613311. Both fiscal categories 1206 and 1073 were assigned to this account, resulting in two rates. Only 1073 should be there. ref-https://github.com/odoo/enterprise/commit/f2579a80833ac129b2f21613b93c4e3203646a1b **task**-5163392 -----------------------
2 changes
Enhancements to existing features
Users who are already registered as Peppol receivers in another Odoo database no longer need to manually deregister and start over. Odoo now detects the existing registration and sends a secure email link so they can transfer the Peppol connection to the current database more smoothly.
Original PR description
### Summary Previously, when a user attempted to **register as a Peppol receiver** while already registered through a different Odoo database, the system would raise a **User Error**. The user had to…
### Summary
Previously, when a user attempted to **register as a Peppol receiver** while already registered through a different Odoo database, the system would raise a **User Error**.
The user had to **manually deregister** and **re-register** from the desired database.
---
### New Behavior (After This Commit)
With this update:
- The system **detects existing Peppol registrations** across databases.
- Instead of raising an error, it now **sends an automated email** to the user with a **secure transfer link**.
- This allows the user to **migrate their Peppol connection** to the current database seamlessly.
---
### Flow Overview
```text
┌────────────────────────────┐
│ User initiates Peppol │
│ registration (becomes │
│ sender) │
└────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ Check existing registration │
└────────────┬─────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌─────────────────────┐ ┌──────────────────────────────┐
│ User NOT registered │ │ User ALREADY registered |
│ in any Odoo DB │
└────────────┬────────┘ └──────────────┬───────────────┘
│ │
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────────┐
│ Proceed with normal │ │ Send email with transfer link│
│ registration flow │ │ to the user │
└──────────────────────────┘ └──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ User clicks transfer link
│
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ Peppol connection migrated
└──────────────────────────────┘
```
---
iap pr- https://github.com/odoo/iap-apps/pull/1236
task- 5023252This update adds quick search in the invoice list so users can find invoices by currency amount. It makes locating specific invoices faster and reduces manual scrolling or filtering.
Original PR description
Description of the issue/feature this PR addresses: Added quick search in invoice search view Current behavior before PR: Can not search invoice by currency amount Desired behavior after PR is merged: User is able to search by currency amount --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
1 change
Enhancements to existing features
This update makes it easier to customize how SendCloud identifies the warehouse name used for sender details. It matters because businesses can now better match their own warehouse naming rules when selecting the right shipping address.
Original PR description
As choosing the proper sender address in SendCloud can be more complex than matching a name to a fixed name in Odoo we open up the freedom to inherit the retrieval of the warehouse name. Info: @wt-io-it