Wednesday, March 26, 2025
19 changes · 18.0
Enhancements to existing features
Website administrators can now replace the standard third-party cookie blocking list with their own custom list when needed. This gives businesses more flexibility to align cookie consent behavior with their privacy policies and compliance choices.
Original PR description
By default, you cannot choose which third parties to block, you can just add to the default list. After this commit, you can use the 'magic key' `#ignore_default` to define your own list.
Journal item tabs now hide section and note lines, so users see only the accounting lines that matter for review and reconciliation. This reduces clutter across invoices, purchases, fleet, localization, and landed cost views without changing the underlying accounting data.
Original PR description
Does not show sections and notes in journal items tab. task-4517560 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Dragging items in kanban views now handles scrolling more smoothly. This should make rearranging records easier and reduce friction for users working with large kanban boards.
Original PR description
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
Resolved issues and error corrections
Saudi localization users will now get the required QR code on invoices created through Point of Sale. The invoice is sent for ZATCA validation before printing, ensuring official fiscal details are included for compliance.
Original PR description
Users of SA localization needs to add a QR (resulting from the EDI validation) to their official invoices. This should occurs also for point of sales invoices but this is currently not working. Steps to reproduce: - With SA localization setup - Open POS session - Add a product - Invoice to a customer - Validate order - Check generated invoice Issue: QR is missing This occurs because we print the invoice before sending it to ZATCA. This way we generate an invoice without the needed fiscal information opw-4562837
This update brings the spreadsheet component to the latest version with several fixes for charts, Excel imports and exports, colors, and read-only behavior. It also improves spreadsheet formula and compiler performance, making spreadsheet interactions more reliable and responsive for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c687e1ca5 [REL] 18.0.21 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c687e1ca5 [REL] 18.0.21 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/0dbaaf70c [FIX/PERF] Charts: fix loop condition [Task: 4675166](https://www.odoo.com/odoo/2328/tasks/4675166) https://github.com/odoo/o-spreadsheet/commit/ea7a7ce09 [REF] compiler: rename constants to literals [Task: 4134564](https://www.odoo.com/odoo/2328/tasks/4134564) https://github.com/odoo/o-spreadsheet/commit/282bc0514 [PERF] compiler: build literal value objects once [Task: 4134564](https://www.odoo.com/odoo/2328/tasks/4134564) https://github.com/odoo/o-spreadsheet/commit/c99697d8b [PERF] compiler: faster cache key and args extraction [Task: 4134564](https://www.odoo.com/odoo/2328/tasks/4134564) https://github.com/odoo/o-spreadsheet/commit/ed05832ed [PERF] functions: don't throw in SEARCH [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/729e4c92b [FIX] topbar: empty composer is focusable in readonly mode [Task: 4653139](https://www.odoo.com/odoo/2328/tasks/4653139) https://github.com/odoo/o-spreadsheet/commit/2278f53ae [FIX] color: `toHex` don't work with alpha = 0 [Task: 4660317](https://www.odoo.com/odoo/2328/tasks/4660317) https://github.com/odoo/o-spreadsheet/commit/1a04945bd [FIX] local: delete unused file formula_locale [Task: 4655913](https://www.odoo.com/odoo/2328/tasks/4655913) https://github.com/odoo/o-spreadsheet/commit/4cdce75fb [FIX] xlsx: prevent unwanted legend when importing chart from excel [Task: 4632987](https://www.odoo.com/odoo/2328/tasks/4632987) https://github.com/odoo/o-spreadsheet/commit/3f79a82ac [FIX] xlsx: export reversed icon sets [Task: 4655950](https://www.odoo.com/odoo/2328/tasks/4655950) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
Online customers can no longer add more combo products to their cart than the available stock of the included items allows. The cart and product pages now respect the same maximum quantity rules as the combo configurator, helping avoid stock errors and order fulfillment issues.
Original PR description
Before this fix, it was possible to add more combo products than available to the cart. Indeed, the available quantity was only checked in the combo configurator, but not in other places where the quantity could be updated (such as the product page or the cart). This fix introduces a "max quantity" concept for combo products, which is based on the available quantity of their combo items. opw-4378554 Enterprise PR: https://github.com/odoo/enterprise/pull/77741
Fixes an issue where replacing an outdated newsletter subscription block in the website editor could trigger an error and interrupt editing. The change prevents internal template references from being treated as reusable snippets, making the editor update flow more reliable.
Original PR description
Scenario: - add a snippet subscription - select it in editor - click on "Replace by new version" in "THIS BLOCK IS OUTDATED" message Result: traceback "Cannot read properties of undefined (reading 'querySelectorAll')". Issue: in 6d5c741820cb69f7619e2cf49bce1457b2cd1efd the code adding data-snippet was changed, and it now set "data-snippet" in code t-called inside a snippet to template name that are not snippet. This cause the snippet code to be applied without a snippet existing. In this case, there is a snippet "s_newsletter_block_default_template" but that's just the name of the t-call'ed template. Fix: remove the code that apply t-snippet-call attribute to t-call inside a snippet. opw-4648786 **PR note**: the forward-port of the mentioned PR commit `https://github.com/odoo/odoo/pull/200690` has already received this change, so besides the test this PR seems only necessary in 18.0
This fix brings back the save button and related trusted-order handling in Point of Sale. Businesses using POS can again save and manage trusted orders as expected, reducing disruption in checkout and restaurant workflows.
Original PR description
The button save and all the logic about trusted orders were removed. This commit puts it back. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change reverts a previous update that caused accounting setup to fail for Argentina and Uruguay. It restores the ability to load the required accounting configuration so companies in those countries can install or use localization features without hitting an error.
Original PR description
…nd uy Description of the issue/feature this PR addresses: Traceback (most recent call last): File "/home/odoo/src/odoo/odoo/tools/convert.py", line 537, in _tag_root f(rec) File…
…nd uy
Description of the issue/feature this PR addresses:
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 537, in _tag_root
f(rec)
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 261, in _tag_function
_eval_xml(self, rec, env)
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 188, in _eval_xml
return odoo.api.call_kw(model, method_name, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 533, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "/home/odoo/src/odoo/addons/l10n_ar/models/account_chart_template.py", line 60, in try_loading
return super().try_loading(template_code, company, install_demo, force_create)
File "/home/odoo/src/odoo/addons/account/models/chart_template.py", line 160, in try_loading
return self._load(template_code, company, install_demo, force_create)
File "/home/odoo/src/odoo/addons/l10n_ar/models/account_chart_template.py", line 39, in _load
res = super()._load(template_code, company, install_demo,force_create)
TypeError: AccountChartTemplate._load() takes 4 positional arguments but 5 were given
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-prThe HTML editor now avoids automatically replacing a link's destination when users edit it through the link popover. This lets users keep custom links, such as a WhatsApp URL attached to a phone number, while still updating simple auto-detected links when the link text itself changes.
Original PR description
Before this commit: The deduceURLfromText function was executed at the normalization step. This caused restrictions when creating links, as the link's href would be overridden if the label was…
Before this commit: The deduceURLfromText function was executed at the normalization step. This caused restrictions when creating links, as the link's href would be overridden if the label was deducible to a URL. Example: If a user wanted to link a WhatsApp URL to a phone number, the href would automatically change to tel:1234, making it impossible to set a different URL. After this commit: The deduceURLfromText function is no longer part of the normalization process. Instead: 1. It is executed only when the user change directly inside a link, not when editing through a link popover. User change can be input, paste or delete 2. If the user edits the link using the popover, the href will not be overridden by deduceURLfromText. 3. If the current href differs from the deduced URL, the href remains unchanged. 4. If the deduced URL matches the current href and the user changes the link's text by typing, pasting or deleting, the href will also be updated to reflect the text changes. These adjustments ensure better flexibility and prevent unwanted overrides when creating or editing links. Related link tests are also adapted. task-3787019 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an accounting issue where opening a vendor bill could fail when tax-based cash rounding was selected but no taxes were applied. This prevents an unexpected error and lets users continue editing bills in that configuration.
Original PR description
The Error is reproducible in the runbot here is an attached video with the steps: https://drive.google.com/file/d/1W1ZJG7aYueFa8Y24LSZlsil0caZB9mE5/view?usp=sharing This happens because of : 1- cash rounding is enabled in the settings of accounting 2 - cash rounding by tax is chosen 3 - opening a vendor bill 4 - putting a decimal price and removing taxes 5- then choosing cash rounding by tax The Error : File "/home/odoo/odoo/odoo/addons/account/models/account_move.py", line 1570, in _compute_tax_totals move.tax_totals = self.env['account.tax']._get_tax_totals_summary( File "/home/odoo/odoo/odoo/addons/account/models/account_tax.py", line 2090, in _get_tax_totals_summary max_subtotal, max_tax_group = max( ValueError: max() arg is an empty sequence opw-4558251 (related to ticket)
Mexican electronic invoices using Cuota-type taxes could fail when users tried to send CFDI documents. This fix corrects the tax amount lookup so those invoices can be generated and sent successfully.
Original PR description
### Steps to reproduce: - Install "l10n_mx_edi" and switch to Mexican company - In Accounting > Configuration > Taxes create a new tax with "Factor Type" set to "Cuota" - Create an invoice with this tax - Click "Send", select "CFDI" and send - Traceback ### Cause: Apparently a typo: The code tries to read `grouping_key['importe']` but `importe` is in the dictionary `tax_value` not `grouping_key`. ### Solution: Change `grouping_key` to `tax_value`. opw-4594061
The mobility budget calculation now adjusts iteratively for employees with lower gross wages. This helps ensure they can use the mobility budget option while still preserving the required minimum gross wage.
Original PR description
…putation To allow people with low gross wages to take mobility budget, we allow iterative computation to reduce it until minimum gross wage is obtained task-4647060
Fixes an error introduced when adapting the French balance sheet report to a prior reporting change. This helps ensure French financial statements show the correct figures for business review and compliance purposes.
Original PR description
During this commit: https://github.com/odoo/enterprise/commit/eae026d97399e0cf77c4d55fa1975968a27a3d2d We adapted the report to IMB. But by doing so there was some mistake in the report. opw-4625920
Rentable combo products can no longer be added to carts in quantities higher than the available stock of their included items. This prevents customers from placing rental orders that cannot be fulfilled and keeps cart quantities aligned with real availability.
Original PR description
Before this fix, it was possible to add more combo products than available to the cart. Indeed, the available quantity was only checked in the combo configurator, but not in other places where the quantity could be updated (such as the product page or the cart). This fix introduces a "max quantity" concept for combo products, which is based on the available quantity of their combo items. opw-4378554 Community PR: https://github.com/odoo/odoo/pull/188860
This update prevents payment failures in the Point of Sale when a company customer is selected and the order is automatically marked for invoicing. It ensures required Mexican localization details are handled correctly so sales can be paid without interruption.
Original PR description
When a company partner is selected for an order, the commit https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 automatically sets the order to invoice. This causes the order to miss required localization fields, leading to an error during payment. opw-4670131
Payslip creation no longer fails when multiple employees have running contracts based on attendances but no working schedule set. This prevents payroll teams from being blocked by an error when editing or generating employee payslips in these cases.
Original PR description
Currently, an error occurs when generating payslips for contracts that have no **Working Schedule**. **Steps to reproduce:** - Install `hr_payroll` and `hr_attendance` modules. - Create at least two **Running** contracts with **Work Entry Source** set to `Attendances` and **Working Schedule** left empty. - Create **Employee Payslips** and try to change the date in the list view. - Observe the error. **Error:** `ValueError - Expected singleton: hr.employee(123, 131, 130, 134, 126, 146, 137, 138, 140, 143, 139, 124, 147, 150, 148, 152)` The error occurs because the method tries to access `self.employee_id.tz` inside a loop at [1], leading to singleton error. This commit ensures that `slip.employee_id.tz` is used instead of `self.employee_id.tz`. [1] - https://github.com/odoo/enterprise/blob/dde492541aa253771f905d0a77650aa35fea0e8c/hr_payroll/models/hr_payslip.py#L1152-L1157 Sentry - 6425128756
Fixes Colombian DIAN electronic invoicing XML so foreign-currency credit notes and invoices report exchange rates as positive values. This prevents DIAN rejections caused by negative currency rate fields and improves compliance for Colombian companies using multicurrency documents.
Original PR description
Reproducing the issue in the database currently requires a real digital DIAN certificate. However, it can be tested in Python: - Create a credit note for a CO company with a foreign currency. - Generate the XML report. The tags SourceCurrencyBaseRate and CalculationRate are being added with a negative sign, but the DIAN only accepts positive values. This commit replace the locally computed rate with the account_move invoice_currency_rate (which meant correcting a few already existing test because of decimal accuracy differences) opw-4608444
This fixes an issue where resetting bank reconciliation involving batch payments could leave accounting information in the wrong state. The change helps ensure finance teams can safely undo and redo reconciliation steps without creating inconsistencies.
Original PR description
TODO: It's a test, please don't review