Daily updates from Odoo
Saturday, June 27, 2026
2 changes
Resolved issues and error corrections
Spanish companies can now open the Mod 349 tax return without the system crashing. The fix avoids a report check that assumed a different report layout, preventing an error when users access Tax Returns.
Original PR description
Steps to reproduce: - Install `Accounting` and `l10n_es` module - Switch to `Spain` company - Open `Tax Returns` Traceback: ```py File…
Steps to reproduce:
- Install `Accounting` and `l10n_es` module
- Switch to `Spain` company
- Open `Tax Returns`
Traceback:
```py
File "/data/build/enterprise/account_reports/models/account_return.py", line 2699, in _check_suite_common_ec_sales_list
engine_results = custom_handler._report_engine_ec_sales_report(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports/models/account_sales_report.py", line 396, in _report_engine_ec_sales_report
return {next(iter(formulas_dict.values())): results}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
StopIteration
```
Cause:
In the method `_check_suite_common_ec_sales_list`, `formulas_dict` is built by taking `line_ids[0].expression_ids.grouped('formula')`. This assumes the first report line always has expressions defined, which holds true for standard EC Sales List reports.
However, Mod 349 has a different report structure where the first line is a "Summary" line with no expressions, resulting in `formulas_dict` being an empty dict. When `_report_engine_ec_sales_report` then calls
`next(iter(formulas_dict.values()))` to retrieve the formula key, it raises a `StopIteration` error, causing a crash whenever a Spanish company opens the tax return report.
Solution:
Override `_check_suite_common_ec_sales_list` for Mod 349 to only run the basic checks, bypassing the engine call that caused the crash. All other return types still go through the generic suite via `super()`.
opw-6222938
sentry-7513259974
Forward-Port-Of: odoo/enterprise#117850This change makes the French VAT submission use the correct form version based on the reporting period. It prevents reimbursement and VAT returns from being rejected by the tax authority when the campaign year changes.
Original PR description
The 3519 reimbursement form is rejected by the DGFiP with "Le millesime 25 du formulaire 3519 est inconnu dans la teleprocedure TVA". The 3310CA3 return is still accepted, because its layout is unchanged year-on-year, which hides the problem, but it is sent with a millesime that no longer matches the campaign. The millesime is the form-version year. The EDI-TVA 2026 campaign opened on 2026-02-09. last update: https://github.com/odoo/enterprise/pull/92542 opw-6275695 Forward-Port-Of: odoo/enterprise#120969 Forward-Port-Of: odoo/enterprise#120759