Monday, May 11, 2026
9 changes · 17.0
Resolved issues and error corrections
This update fixes a potential crash during bank statement imports by ensuring the correct journal is selected based on currency and IBAN. The system now validates and automatically finds the appropriate journal, preventing errors and improving data accuracy for users importing financial statements.
Original PR description
Behavior before: The import flow could crash with an "Expected singleton" error if multiple journals shared an IBAN. Additionally, the system blindly accepted the current context ('self') as the…
Behavior before:
The import flow could crash with an "Expected singleton" error if multiple
journals shared an IBAN. Additionally, the system blindly accepted the
current context ('self') as the target journal, even if its currency or
bank account mismatched the statement, often leading to avoidable
UserErrors.
Behavior after:
The system now validates 'self' against the statement's currency and IBAN
before assignment. If a mismatch is found, it automatically searches for
the correct journal. The search is now restricted by currency and includes
a limit=1 to prevent crashes and ensure accurate selection.
Root Cause:
In _find_additional_data(), 'journal = self' was assigned without validation.
Furthermore, the fallback search lacked a record limit and currency matching
logic, allowing multiple records to be returned when duplicates or
multi-currency setups existed.
Fix:
- Added validation for the initial 'self' candidate (currency and IBAN match).
- Refined the search domain to include currency matching (journal or
company fallback).
- Added limit=1 to the search to guarantee a singleton recordset.
opw-5462037This update resolves a validation error that occurred when creating intercompany invoices between companies using different tax regions. The fix ensures accurate tax calculations by correctly applying and recomputing taxes based on the intended fiscal position, preventing incorrect error messages. This improves the reliability of intercompany transactions.
Original PR description
**Steps to reproduce:** * Install the *Accounting* module. * Install localisation modules for two different regions: * *Belgium* (**l10n_be**) * *Luxembourg* (**l10n_lu**) * Configure two companies,…
**Steps to reproduce:** * Install the *Accounting* module. * Install localisation modules for two different regions: * *Belgium* (**l10n_be**) * *Luxembourg* (**l10n_lu**) * Configure two companies, each assigned to one of the above regions. * Create fiscal positions: * In the Belgium company, create a fiscal position for Luxembourg. * In the Luxembourg company, create a fiscal position for Belgium. * Go to *Accounting > Configuration > Settings*. Enable *Inter-Company Transactions*. Enable synchronization of *Vendor Bills and Invoices* for both companies. * Create an invoice in the Luxembourg company. Select a partner belonging to the Belgium company. Add a product with applicable taxes. **Observed behavior:** * A validation error is raised: 'This entry contains taxes that are not compatible with your fiscal position. Please check the country set in the fiscal position and in your tax configuration.' **Cause:** * During intercompany bill creation, a foreign fiscal position is applied before recomputing taxes. * If no mapped foreign taxes exist, the system keeps domestic purchase taxes. * This leads to a mismatch between taxes and fiscal position, triggering the validation error. **Fix:** * Add a safeguard in *_inter_company_create_invoices()*. * After *_inter_company_sync_invoice_line_taxes()* recomputes taxes, *_inter_company_has_incompatible_fiscal_position_taxes()* checks whether the fiscal position is incompatible. * If incompatible, the fiscal position is removed and taxes are recomputed without it. opw-6103671
This update fixes an issue where discount lines in Czech VAT reports (vies) were incorrectly calculated. The previous system applied an absolute value function, leading to inflated report totals. The fix now correctly handles negative discount amounts, ensuring accurate VAT reporting for Czech companies.
Original PR description
Step to reproduce: - install l10n_cz_reports_2025 and switch to cz company - create a invoice, with cz company ( as partner), of 100. - when adding products, add "Transaction code" (optional fields) to "Goods" - Add discount line, set to -10, add "Transaction code" in this line too. - confirm it Observation: - invoice is 90$ - open vies summary report for this year - value turn out to 110 Cause: - commit [1](https://github.com/odoo/enterprise/commit/892268c44b1bbc838a9f03ef36a079bfff625ca6) converts every balance to +ve and only negate it, in case of refund - in case of discount lines, price is -ve, ABS() turn it to +ve and value comes out to be wrong Fix: - instead of applying ABS() directly, we flip the signs only for out_* moves, in short when a account is credited, its balance is < 0 then we flip its sign opw- 5979262
This update resolves an issue where Swedish financial data files were not importing correctly due to encoding differences. The fix ensures that account names with special characters (like 'Ö') are accurately imported, preventing data loss and ensuring correct financial reporting for Swedish customers. This improves data integrity and accuracy.
Original PR description
Issue: Non-ASCII charatcter from sie file were lost on import. Steps to reproduce: - in a Swedish company - import the SIE4 exemple file from sie website: https://sie.se/wp-content/uploads/2024/01/SIE4-Exempelfil-Sample-file-1.zip Current behavior: - The account 1090 is imported as "vriga imm anl tillg" instead of "Övriga imm anl tillg" Expected behavior: - The account 1090 is imported as "Övriga imm anl tillg" Cause: CP437 uses 8 bits to represent data. Ö is \x99. However, file was imported using either UTF-8 or ISO-8859-1, where Ö is \xC396 and \x99 doesn't link to anything. This commit update the test file as it was save in cp437 but read as UTF-8. opw-6167408
This update ensures that down payment invoices generated for Mexican EDI (MX EDI) compliance correctly classify clave_unidad and clave_prod_serv as sales transactions, aligning with regulatory requirements. This change, previously implemented in 18.0 and 19.0, is now backported to version 17.0 to maintain accurate reporting and compliance.
Original PR description
When creating down payment invoices for mx edi, clave_unidad and clave_prod_serv (cfdi_line_values) should be considered as sale (ACT - activity and 84111506 code for invoicing services) according to the authorities. This already works for 18.0 and 19.0. Backporting solution for 17.0 task id [6173559](https://www.odoo.com/odoo/project/49/tasks/6173559)
This update corrects a problem where POS invoices created in timezones ahead of Riyadh (like Dubai) would incorrectly set the invoice date, leading to errors. By ensuring the invoice date is always aligned with Riyadh time during POS invoice generation, this fix prevents invoice creation failures for Saudi Arabian businesses and their staff.
Original PR description
Before: - POS orders created by users in timezones ahead of Riyadh (e.g. Dubai, UTC+4) produced an `invoice_date` based on the user's local date, which could be a day ahead of Riyadh. - This caused `_get_normalized_l10n_sa_confirmation_datetime` to raise a UserError blocking POS invoice creation. After: - Overrides `_prepare_invoice_vals` on pos.order to convert date_order (UTC) to Asia/Riyadh and clamp to today's Riyadh date before passing to ZATCA validation. - This override applies only during POS invoice generation, where date_order is the source of truth instead of a manually set invoice_date. Impact: - Fixes UserError on POS invoice creation for SA companies with staff operating in timezones ahead of Riyadh. taskID-6043167
This update resolves an issue where the stock return wizard incorrectly unreserved items when a product line was left at a zero quantity or a partial quantity. The fix ensures that only the actual returned quantity is unreserved, preventing over-unreserving and improving the accuracy of stock tracking. This change impacts the handling of partial returns.
Original PR description
Steps to reproduce
1. Configure a 2-step delivery (PICK -> OUT).
2. Confirm and reserve a delivery for multiple products, validate the PICK.
3. Open the return wizard on the validated PICK, OUT moves are now reserved.
4. Leave a product line at qty 0 (instead of deleting it), or reduce a line to a partial quantity (e.g. 1 of 8), then click Return.
Issue
`_create_returns()` iterated over every wizard line via `self.product_return_moves.mapped('move_id')` and called `_do_unreserve()` on the chained OUT move unconditionally, without checking whether that line was actually being returned:
https://github.com/odoo/odoo/blob/2fde70e450a36a258bdb67dcb0bd6646b60a26ff/addons/stock/wizard/stock_picking_return.py#L130-L131
A line left at qty 0 caused its OUT move to be fully unreserved even though nothing was being sent back. A partial return (e.g. 1 of 8) also unreserved all 8 units.
opw-6175293This update resolves issues with the UBL invoice export process when early payment discounts are applied. Specifically, it corrects errors related to incorrect tax subtotal calculations and VAT category assignments, ensuring proper compliance with PEPPOL standards. This prevents validation failures during UBL generation.
Original PR description
…d tax subtotal **STEP TO REPRODUCE** 1. Create an invoice with an early payment discount (payment terms) with an invoice line with a 0% tax. 2. Generate the ubl for the invoice by sending it to…
…d tax subtotal **STEP TO REPRODUCE** 1. Create an invoice with an early payment discount (payment terms) with an invoice line with a 0% tax. 2. Generate the ubl for the invoice by sending it to peppol. 3. Validate the generated ubl, you'll get the following errors: [BR-E-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Exempt from VAT". [BR-S-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated". [BR-S-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero. **CAUSE** - When there is a epd, we append a new tax subtotal. Which means we end up with multiples tax subtotal for the tax category E. We do the same for emptying taxes. The fix add a step that merges all the tax subtotal of the same tax category into one. - When there is a epd, the allowance is generated with with a tax cargory S even with the tax percentage is 0. It should be E for 0% tax. opw-6075910
This update resolves an issue where the customer address field in the Point of Sale (POS) for Peru (PE) was not correctly populated, leading to inaccurate shipping address information. The fix ensures the required 'city' field is properly set during customer creation, preventing errors when processing orders and shipments.
Original PR description
Steps to reproduce: ------------------- * Install l10n_pe_pos * Switch to PE company * Create a pos * Enable shipping later for that pos * Open the pos * Make an order * Create a new customer inside the pos, fill in all information * Go to pay the order * Select the ship later option * valdiate > Popup, incorrect address for shipping Why the fix: ------------ The field city_id is a list containing the id of the city and the name string. For the PE loca we were only setting the city_id field when creating a customer and not city. Which is the required field when checking addresses. opw-6070005