Daily updates from Odoo
Friday, October 17, 2025
9 changes · 17.0
Enhancements to existing features
Estonia VAT XML exports now process report data in batches instead of recalculating each line separately. This prevents timeouts on large reporting periods and helps businesses submit VAT reports reliably even 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
Resolved issues and error corrections
PayPal payments can now proceed for invoices in Chinese yuan where PayPal supports this currency. This prevents blocked invoice payments and better aligns Odoo's PayPal currency handling with PayPal's current rules.
Original PR description
## Versions 17.0+ ## Issue No payment is possible with PayPal for invoices expressed in Chinese currency. ## Steps to reproduce **`account` app required** - Enable "CNY" currency via `Invoicing /…
## Versions
17.0+
## Issue
No payment is possible with PayPal for invoices expressed in Chinese currency.
## Steps to reproduce
**`account` app required**
- Enable "CNY" currency via `Invoicing / Configuration / Accounting / Currencies`;
- Install, setup and publish PayPal payment provider;
- Move to the Invoice app:
- Create a new invoice in "CNY" currency for any customer with at least 1 product;
- Confirm and click on the preview button:
- Click on the "Pay now" button then "Pay" button of the wizard.
## Cause
"CNY" currency is only supported for Chinese accounts and for transactions occurring in China. PayPal says:
> Please note that Chinese Renminbi (CNY) is supported as a payment currency (buyer currency) or settlement currency (holding currency) only for in-country PayPal accounts. If the settlement account is based outside of China, PayPal will convert the funds into the account’s primary currency using the applicable currency conversion rate, which includes a spread or fee.
opw-5071893This fixes a browser compatibility issue that could prevent Odoo from communicating with local IoT and point-of-sale devices in some Chrome versions. The change keeps support for upcoming Chrome network access requirements while avoiding failures in older browsers.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/231713 In odoo/odoo#231014 we added the `targetAddressSpace` argument to `fetch` requests to prepare for the Local Network Access feature that will be enabled by default from Chrome 142. Unfortunately, it seems that adding this option breaks the `fetch` request in older versions of Chrome that are implementing the Private Network Access spec. To fix this we detect if the permission is available in the browser, and only set the option if this is the case.
This update prevents Point of Sale hardware communication from failing in older Chrome versions. It checks browser support before using a newer network option, helping keep receipt printers and other local devices working reliably across more customer environments.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/97266 In odoo/odoo#231014 we added the `targetAddressSpace` argument to `fetch` requests to prepare for the Local Network Access feature that will be enabled by default from Chrome 142. Unfortunately, it seems that adding this option breaks the `fetch` request in older versions of Chrome that are implementing the Private Network Access spec. To fix this we detect if the permission is available in the browser, and only set the option if this is the case. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue in the Accounting app. It helps ensure accounting records behave correctly, reducing the risk of disruption for users handling financial operations.
Original PR description
Steps to reproduce: Issue: Solution: opw-4915551 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 fixes an issue where pressing Enter inside text with existing line breaks could create additional unwanted blank lines. It helps keep edited website or content text formatted as intended, reducing cleanup for users.
Original PR description
Problem: When pressing Enter between two line breaks, extra breaklines are inserted unexpectedly. Cause: This issue was introduced by commit 59a130457cb2d3b88bcf240f835e405535068eb2. However, the original problem that commit attempted to fix was already properly handled by commit d5590bf8c2d539cbed9a57bcb77b441c71f5ad1c in 18.0. Solution: Backport commit d5590bf8c2d539cbed9a57bcb77b441c71f5ad1c to 17.0. Steps to reproduce: 1. Add several line breaks in a paragraph. 2. Press Enter in the middle to split the paragraph. 3. Observe that extra line breaks appear. opw-5158234 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Delivery validation now reliably includes all required shipping labels and shipping documents in the automatic print flow. This prevents missed print jobs after validation, especially when only one printer client is connected, reducing manual follow-up for warehouse teams.
Original PR description
The `button_validate` method called clicking "Validate" returns a list of client actions to call. After these clients actions are executed, the page reloads. This reload makes our broadcasted action not to be caught by the client if there is only one connected. Anyway, this flow was overcomplicated and has been simplified overriding the method returning the client actions, adding the "shipping labels" and "shipping documents" to it.
Fixed an issue where saved payment methods were not offered when registering payments for invoices tied to an individual user within a company. The payment flow now looks at the customer linked to the invoice, helping businesses reuse saved payment methods correctly and avoid manual payment entry.
Original PR description
Currently, when user A from company AA records a payment method, a payment token is stored for that user. However, when an invoice is issued for that user, the payment token cannot be used because the payment registration form uses the partner AA instead of the user linked to the move, partner A. Step to reproduce: 1. Create a user A in company AA 2. Create an invoice for user A 3. Register a payment on the invoice and save the payment method (token) 4. Create another invoice for user A 5. Try to register a payment on the invoice: the payment token is not proposed This fix updates the logic to use the user linked to the move instead of the partner on the line, allowing proper selection of a payment token. opw-5036106
This change removes an unnecessary browser request option from IoT-related communication. It prevents errors in older Chrome versions and keeps IoT and point-of-sale hardware connections working as expected.
Original PR description
This reverts commit 6d09dc6 which added the `"targetAddressSpace": local` option to IoT fetch requests. This is because of two reasons: 1. It caused errors on older versions of Chrome that implemented the obsoleted 'Private Network Access' standard. 2. It was not actually required in the first place, it is only needed in situations where a HTTP resource is accessed from HTTPS using a domain that resolves to a local IP. In Odoo we only ever do this for HTTPS -> HTTPS requests, where it works automatically. task-5157145