Tuesday, February 10, 2026
6 changes · saas-18.4
Resolved issues and error corrections
The Spanish VAT annual report calculation has been corrected so specific tax boxes are included in the right annual totals. This helps businesses submit more accurate Model 390 tax declarations and reduces the risk of reporting discrepancies.
Original PR description
In this commit: Fixing 390 computation: - Add balance from 27, 29, 649 and 31 to casilla 33. - Add balance from 28, 30, 650 and 32 to casilla 34. Related PR : https://github.com/odoo/enterprise/pull/105597 task-5732679 Forward-Port-Of: odoo/odoo#247686 Forward-Port-Of: odoo/odoo#245828
This fixes a checkout issue where a customer changing a product quantity in the add-to-cart wizard could still see the old quantity in the cart if they clicked Checkout immediately. The cart now uses the updated quantity right away, helping avoid incorrect orders and customer frustration.
Original PR description
**Steps to produce:** - Install `website_sale` with demo data. - Go to the shop page. - Select product `Customizable Desk` > click `Add to cart`. - In the wizard, change the quantity to 100 and…
**Steps to produce:** - Install `website_sale` with demo data. - Go to the shop page. - Select product `Customizable Desk` > click `Add to cart`. - In the wizard, change the quantity to 100 and directly click `Checkout`. **Issue:** - The cart shows the product with quantity = 1 instead of the edited value. Root cause: - When the user clicks Checkout, both `setQuantity` and `onConfirm` are triggered almost simultaneously. - At [1], the `_setQuantity` method is called, but due to the await before the quantity update is completed, the update may not finish in time. As a result, the previous quantity is sometimes used during checkout instead of the newly selected one. Solution: - we can update the quantity immediately before awaiting `_updateCombination`, ensuring that the correct quantity is already set when onConfirm runs. [1]: https://github.com/odoo/odoo/blob/f4eabe47a602301013afa63da6bdf87809903d29/addons/sale/static/src/js/product_configurator_dialog/product_configurator_dialog.js#L225 opw-5435672 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241424
The French FEC accounting export now streams the file to users instead of building the entire export in memory. This helps companies with very large accounting databases complete required exports more reliably and avoids memory-related failures.
Original PR description
On large databases (millions of account moves), The FEC exported file can be huge. This resulted in memory error since at some point we have the entire file in memory. This commit aims to overcome this issue by streaming the content of the file to the user. task-5404142 Forward-Port-Of: odoo/odoo#246686 Forward-Port-Of: odoo/odoo#240981
This fixes an issue where removing content blocks from a website product description could leave hidden empty content behind and trigger a “Document is empty” error when saving. The editor now cleans up those empty leftovers after a block is removed, making website editing more reliable for users.
Original PR description
Steps to reproduce: =================== 1- Go to Website > eCommerce > Products 2- Open any product and click "Edit website" 3- Add a lot of content blocks (contact form etc..) & save 4- In the…
Steps to reproduce: =================== 1- Go to Website > eCommerce > Products 2- Open any product and click "Edit website" 3- Add a lot of content blocks (contact form etc..) & save 4- In the product description, delete all content blocks and keep the last one 5- Click Save ->"Document is empty" validation error appears Cause: ====== When saving an HTML field after deleting all content, whitespace text nodes (like newlines) may remain in the DOM element. The _copy_custom_snippet_translations lang_value might have this whitespace as the content, which will cause "Document is empty" error when the content is parsed by fromstring(). This didn't occur before the migration because the previous implementation called _onSnippetRemoved after a content block was deleted, and that handler removed any empty elements. https://github.com/odoo/odoo/blob/8d66c79ecf74900af1c5b003723363be3d52cbc8/addons/website/static/src/components/wysiwyg_adapter/wysiwyg_adapter.js#L1370 Solution: ========= After removing the content block, we should also do a cleanup. opw-5263743
This update fixes a reporting issue related to Spanish withholding taxes. Specifically, it ensures that 'type for 347' fields are left blank when processing invoices with withholding taxes, aligning with Spanish tax regulations. This improves the accuracy of financial reports for Spanish businesses using Odoo Enterprise.
Original PR description
- Moves that use withholding taxes should have the `type for 347` unselected and left blank. Related PR : https://github.com/odoo/odoo/pull/245828 task-5732679 Forward-Port-Of: odoo/enterprise#106796 Forward-Port-Of: odoo/enterprise#105597
This update resolves an issue where invoice exports were failing when invoices contained a section or note line as the first entry. The fix filters out these lines during currency rate calculations, preventing a division-by-zero error and ensuring invoices can be correctly sent and downloaded. This improves the reliability of invoice export processes.
Original PR description
Before this commit: Steps 1) Create an invoice with a section or note line as the first line 2) Try to send or download the invoice => A traceback error is raised with the message: File "/home/odoo/src/enterprise/17.0/l10n_cl_edi_exports/models/account_move.py", line 68, in _get_inverse_currency_rate return float_round(abs(self.line_ids[0].balance / self.line_ids[0].amount_currency), 2) ZeroDivisionError: float division by zero This occurs because the `_get_inverse_currency_rate()` method is dividing over self.line_ids[0].amount_currency which is always equal to 0 in case of section or note line is added as a first line in the invoice. After this commit: Filtering out section and note lines in _get_inverse_currency_rate() to correctly calculation the inverse currency rate opw-5488417 Forward-Port-Of: odoo/enterprise#105774