Monday, May 18, 2026
8 changes · saas-18.4
Resolved issues and error corrections
This update resolves several website editing issues that could cause confusing behavior, including endless animation loops, duplicate form option choices, and donation amounts not refreshing after users go back and change them. These fixes make the website builder and donation flow more reliable for everyday users.
Original PR description
*:website, website_payment > Commit 1: [FIX] web_editor: prevent infinite bounce loop when clicking undo Steps to reproduce: 1. Click on a snippet without dragging it. 2. Notice that the "Drag…
*:website, website_payment > Commit 1: [FIX] web_editor: prevent infinite bounce loop when clicking undo Steps to reproduce: 1. Click on a snippet without dragging it. 2. Notice that the "Drag building blocks here" section starts bouncing. 3. Observe that a step is added to the history (Undo becomes available). 4. Click on Undo button. Issue: 1. The `o_catch_attention class` is repeatedly added and removed, creating unnecessary history steps in the editor. 2. No actual changes occur in the wrap area, yet the editor records history steps. 3. This leads to an infinite bounce loop when using Undo/Redo. Expected behavior: 1. The Undo button should not be activated. 2. Infinite bouncing should not occur. This PR prevents unnecessary history steps by disabling history tracking during this phase using `observerUnactive` and `observerActive`. This ensures that the editor does not record redundant changes, preventing infinite bounce loops. > Commit 2: [FIX] website_payment: fix donation amount not updating issue Steps to Reproduce: 1. Go to Website → Add a Donation snippet. 2. Enter a custom amount and click "Donate". You will be redirected to the donation/pay page. 3. Use the browser's back button to return to the previous page. 4. Change the amount in the custom amount field. 5. Click "Donate" again. - The old amount is still used instead of the new one. Expected Behavior: The donation amount should update correctly when changed. The issue occurs because clicking the "Donate Now" button appends a hidden value to the form snippet, which is then used in payment_form. When navigating back and selecting "Donate Now" again, a duplicate hidden value is added instead of replacing the previous one. This PR ensures that if a value already exists, it is replaced instead of being appended, resolving the issue. > Commit 3: [FIX] web_editor: fix dropdown options value Steps to reproduce: 1. Go to the website and drag and drop the form snippet. 2. Change the action to 'Subscribe to Newsletter'. 3. Click on multi-checkbox field to view its options. - Even after selecting an option, it remains in the dropdown, allowing multiple selections of the same option. Expected behaviour: - Once an option is selected, it should be removed from the dropdown. Solution: This PR removes the count from the display name, ensuring correct form behavior. task-4583314 Forward-Port-Of: odoo/odoo#234513 Forward-Port-Of: odoo/odoo#203454
E-waybill submissions for Special Economic Zone invoices now use the required state code, preventing avoidable government API rejections. This helps businesses process SEZ export and supply transactions more reliably and stay compliant with Indian e-waybill rules.
Original PR description
For SEZ transactions, the e-waybill API requires `toStateCode` to be set to 99. Previously, this value was not enforced, leading to API errors: - 373 for export transactions - 641 for supply and CKD/SKD/lots supply This fix updates the logic to derive `toStateCode` based on the invoice's GST treatment. When the transaction is identified as SEZ, `toStateCode` is correctly set to 99, ensuring compliance with e-waybill requirements and preventing API failures. task-6117694 Forward-Port-Of: odoo/odoo#259327
This fix prevents IoT boxes from getting stuck in an inconsistent state during upgrades to newer Odoo versions. It also ensures a required dependency is installed so the Odoo service can restart correctly after the upgrade.
Original PR description
This commit fixes two issues with upgrading from old IoT box images to 19.1+ DBs: - The IoT box would try and start checking out with git at the same time as the upgrade script rebooted the system. This would leave the git branch as the DB version (e.g. 19.2) but with the files still being at 19.1. To fix this, we sleep after the script until we reboot. - On reboot, the IoT box would then git checkout to the new version anyways. However, it would not install apt packages, leaving the Odoo service unable to start because of a missing 'geoip2' package. To fix this, we simply include this package in the upgrade script. task-6217972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264737
This fix corrects the Italian Annual VAT Report so line VF25 now uses taxable base amounts instead of mixing in tax amounts. This improves the accuracy of VAT reporting and helps businesses align their annual tax report with Italian tax authority instructions.
Original PR description
### Issue before this commit: In the Italian Annual VAT Report, the balance (base amount) for line VF25 displays incorrect values. Instead of computing the sum of the taxable bases for the passive…
### Issue before this commit: In the Italian Annual VAT Report, the balance (base amount) for line VF25 displays incorrect values. Instead of computing the sum of the taxable bases for the passive operations, the report erroneously mixes tax amounts into the balance column. ### Steps to reproduce the issue: 1. Download Accounting and l10n_it 2. Go to Tax Report and visualize the Annual Tax Report (IT) 3. Go to VF VAT Report 4. See the VF25 is mixing taxes and balances ### Cause of the issue: The root cause lies in the aggregation_formula definition for the tax_annual_report_line_VF25 record. The formula was incorrectly configured to aggregate the .tax expressions for lines VF1 to VF13 (VF1.tax + VF2.tax + ...) instead of their respective .balance expressions, while correctly using .balance for the remaining lines (VF17 to VF24). https://github.com/odoo/odoo/blob/878c08cf522a3278b4e6ff5f3d18444989e9998d/addons/l10n_it/data/tax_report/annual_report_sections/vf.xml#L286-L299 It's just a typo in this commit: https://github.com/odoo/odoo/pull/164064/changes/f292ba119d6376dbfb3c1fac4960c9c56a74d938 ### Reason to introduce the fix: From documentation https://www.agenziaentrate.gov.it/portale/documents/20143/9602686/IVA_ANNUALE_2026_istr.pdf/2a42fb92-1b76-229a-d0f5-06069d79b514?t=1768504755711 : > Rigo VF25, colonna 1, va indicato il totale degli imponibili determinato sommando gli importi riportati ai righi da VF1 a VF23, colonna 1, diminuito dell’importo di cui al rigo VF24. In colonna 2 va indicato il totale delle imposte determinato sommando gli importi delle colonne 2 dei righi da VF1 a VF13. opw-6172791 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264379
Odoo now correctly imports all vendor bills contained in a single Italian e-invoicing XML or signed file, instead of only processing the first one. This prevents missing bills during bulk imports and improves reliability for Italian accounting workflows.
Original PR description
### Issue before this commit: When importing an XML file containing multiple business documents (multiple bodies with a single header), the system correctly split the file into separate attachments…
### Issue before this commit: When importing an XML file containing multiple business documents (multiple bodies with a single header), the system correctly split the file into separate attachments but failed to process any document beyond the first one. ### Steps to reproduce the issue: 1. Download Accounting and l10n_it 2. Go to Vendor -> Bills 3. Try to upload a xml with multiple bodies and one header 4. See only the first bill is correctly imported ### Cause of the issue: The splitting logic renamed subsequent attachments with numeric suffixes but then this function incorrectly checked the name of the document. https://github.com/odoo/odoo/blob/29805eec2b70144edf9441cffe7e69e39fd4ba0e/addons/l10n_it_edi/models/account_move.py#L297-L305 We can not rely only on the name of the document but we need to check also its content. Refer to the rules for the name of the attachments: https://www.fatturapa.gov.it/export/documenti/Specifiche-tecniche-relative-al-Sistema-di-Interscambio-versione-1.8.4.pdf In summary what we need in the document (page 9): > The unique progressive of the file is represented by an alphanumeric string up to 5 characters long and with allowed values. [az], [AZ], [0-9]. The unique progressive of the file has the sole purpose of differentiating the name of the files transmitted to the Interchange System by the same entity; it does not necessarily have to follow a strict progressive nature and may also present different numbering styles. ### Reason to introduce the fix: This fix ensures that the function not only checks the name but also the content to be sure that the xml or p7m file contains a valid structure to be registered. Ticket [link](https://www.odoo.com/odoo/project.task/6072258) opw-6072258
When a company changes its default income or expense accounts, newly created product categories now use the updated accounts instead of older saved values. This prevents incorrect accounting defaults from carrying over into new categories and reduces manual correction work.
Original PR description
**Steps to reproduce:** - Accounting > Configuration > Settings > Default Accounts > Product Accounts - Change the default expense account (and income account) - Create a new product category -…
**Steps to reproduce:** - Accounting > Configuration > Settings > Default Accounts > Product Accounts - Change the default expense account (and income account) - Create a new product category - category still proposed the old accounts Affected versions: from 18.2 till 19.2 **Cause:** `ir.default` for `product.category` (`property_account_expense_categ_id` and `property_account_income_categ_id`) was not updated when `res.company.expense_account_id` / `income_account_id` changed, so new categories kept using stale defaults. and in 19.0 https://github.com/odoo/odoo/blob/894281f2a3e313fc239529572b5cc8c06a3511f7/addons/account/models/company.py#L490 and https://github.com/odoo/odoo/blob/894281f2a3e313fc239529572b5cc8c06a3511f7/addons/account/models/company.py#L753 calls https://github.com/odoo/odoo/blob/894281f2a3e313fc239529572b5cc8c06a3511f7/addons/account/models/company.py#L1136-L1139 However, when stock_account is installed https://github.com/odoo/odoo/blob/894281f2a3e313fc239529572b5cc8c06a3511f7/addons/stock_account/models/res_company.py#L361-L366 this gets called, without calling super, that's why it didn't work although the fix is there, we will need to adapt another fix in 19.0+ **Solution:** Call `_set_category_defaults()` in `res.company.write()` so `ir.default` stays aligned with the company's current product default accounts. opw-6145491 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261594
The Italian electronic invoice import no longer fails when an optional invoicing module is not installed. This keeps FatturaPA imports available for companies using the Italian localization without requiring an unnecessary dependency.
Original PR description
The FatturaPA import in `l10n_it_edi/models/account_move.py` calls `self.env['account.edi.common']` for the partner and the bank account. That model belongs to `account_edi_ubl_cii`, which `l10n_it_edi` does not depend on. Without that module installed, the import dies with a `KeyError`. It is not correct to add that dependency. PR #254505 (`63926d9d`) introduced the two calls and removed the search-only lookups that lived there before. ### Fix Copied `account.edi.common._import_partner` to `_l10n_it_edi_import_partner` Copied `account.edi.common._import_partner_bank` to `_l10n_it_edi_import_partner_bank` Fixes: https://github.com/odoo/odoo/issues/264306 Forward-Port-Of: odoo/odoo#264811 Forward-Port-Of: odoo/odoo#264326
This update resolves a limitation in the l10n_mx_edi module, allowing credit notes (out-of-funds) to be configured with Payment Policy Details (PPD) as required by the Mexican SAT portal. Previously, this configuration was restricted, causing potential issues with VAT refund processing. This change ensures compliance and streamlines the credit note generation process for Mexican businesses.
Original PR description
Currently, credit notes cannot be PPD (payment_policy), however, SAT portal allows it. **STEP TO REPRODUCE** 1. Install the l10n_mx_edi module. 2. Create an invoice with PPD (either changing it or through payment terms). 3. After send CFDI, generate a credit note and try to set PPD **FIX** Allow move_type = 'out_refund' to be PPD. Task-6049654 Forward-Port-Of: odoo/enterprise#114886