Daily updates from Odoo
Friday, March 20, 2026
5 changes · master
Resolved issues and error corrections
This update fixes an issue where errors in PDF generation would halt the entire batch, preventing regeneration. Now, individual PDFs with errors can be regenerated, and the 'Generate PDFs' button works correctly when 'Select All' is used, streamlining the payroll report process.
Original PR description
**Current behavior before PR:** When the PDFs are processed, they are in batch of max(batch_size,30) by the scheduled actions, if one of the PDFs is in error, the whole batch will not be generated and it will be put in draft. Also, when you select lines that have a generated PDF, you do not have the option to regenerate them. **Desired behavior implemented in this PR:** When a PDF is in error, it should not affect the other ones of the batch. Also, you can now select lines with generated PDFs and have the option to regenerate them if needed. This PR also fixes the following UX issue associated with the generation and posting of the PDFs in the employee declaration list view: - The two buttons "Generate PDFs" and "Post PDFs" were working only on the selected records in the current page, even if the user clicked on "Select All" button. task-5909426
This update resolves a problem where generating VAT reports (FAIA) for invoices in different currencies caused errors. The fix ensures the necessary currency information is included in the report template, allowing accurate VAT calculations for Luxembourg companies. This improves the reliability of financial reporting.
Original PR description
Steps to reproduce 1/ setup a LU company. The default company currency will be EUR. 2/ create a vendor bill in another currecy (e.g. USD) 3/ take note of the bill date and accounting date (ideally set them in the past, like 1 month) 4/ generate the FAIA report for the period containing the created bill => error while rendering the qweb template The core of the error is when rendering the l10n_lu saft template. Sales invoices and purchase invoices reuse the standard `account_saft.tax_information` report, which expects to find `currency_code` in the object's fields. This commit explicitly re-adds it when creating the document's tax summary. opw-5216057 Forward-Port-Of: odoo/enterprise#110660 Forward-Port-Of: odoo/enterprise#106902
This update resolves an error that occurred when setting an accounting period for Dutch companies using the l10n_nl_reports module. The fix corrects a mistake in how tax tags were being retrieved, preventing a traceback and allowing users to successfully create accounting periods. This ensures accurate reporting for Dutch businesses.
Original PR description
Creating an accounting period for a Dutch company raises a traceback. Steps to reproduce the error: - Install ``l10n_nl_reports`` and ``accountant`` module with demo data - Switch to NL Company - Go to Accounting > In Tax Returns > Click Set Periods > Set Opening Date > Apply Traceback: ```py 'l10n_nl_reports.ec.sales.report.handler' object has no attribute '_get_tax_tags_for_nl_sales_report' ``` https://github.com/odoo/enterprise/blob/f23c592a933d7e5e5745aea60d0dcc5738249580/l10n_nl_reports/models/account_return.py#L20 In commit [1], Here, ``_get_tax_tags_for_nl_sales_report()`` method is called instead of ``_get_ec_sales_tax_tags()``. which leads to the above traceback. [1]:https://github.com/odoo/enterprise/commit/0a0fa0dae918ec5198a019a3e5be71a919f0e7c6 sentry-7340518330 Forward-Port-Of: odoo/enterprise#110948
This update resolves an issue preventing new employee creation when generating BVG-LLP reports. The fix addresses a technical problem with how Odoo compares report data, ensuring accurate employee record creation. This improves the reliability of payroll processing for Swiss companies.
Original PR description
Steps to reproduce: ---------------------------------- 1. Install `l10n_ch_hr_payroll_elm_transmission` module 2. Switch to Swiss company 3. Navigate to Payroll > Transmission > BVG-LLP Basis…
Steps to reproduce:
----------------------------------
1. Install `l10n_ch_hr_payroll_elm_transmission` module
2. Switch to Swiss company
3. Navigate to Payroll > Transmission > BVG-LLP Basis Declaration
4. Create two Reports with same Year and Month
5. Now try to create new Employee from the employee app
Observation:
----------------------------------
Tracaback Occurs:
```
File '/home/odoo/src/enterprise/19.0/l10n_ch_hr_payroll/models/l10n_ch_employee_monthly_values.py', line 319, in _compute_bvg_lpp_annual_basis
existing_declaration = max(existing_declaration, key=lambda r: r.month) if existing_declaration else False
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File '/home/odoo/src/odoo/19.0/odoo/orm/models.py', line 5934, in ensure_one
raise ValueError('Expected singleton: %s' % self)
ValueError: Expected singleton: l10n.ch.lpp.basis.report(1, 2)
```
Issue:
----------------------------------
In the following code:
https://github.com/odoo/enterprise/blob/44a26539093f9313d9cd5f823c11866e3c98ec97/l10n_ch_hr_payroll_elm_transmission/models/l10n_ch_employee_monthly_values.py#L319-L320
Python's max() function doesn't just call the key function once per item. When there are ties (equal key values), it may need to compare the original objects, and during this process, Odoo's recordset operations combine records, causing the lambda receives `r` as a combined recordset. To access `.month` on a multi-record recordset it gives singleton error.
Solution:
----------------------------------
Creates tuples of (month, recordset) pairs and uses max() to compare month integers directly, avoiding the singleton error.
opw-5391742
Forward-Port-Of: odoo/enterprise#111084
Forward-Port-Of: odoo/enterprise#102335This update resolves issues with timesheet reminder emails displaying incorrect week dates and failing to open the correct grid view. The fix ensures that reminder emails accurately reflect the correct week and that clicking the email directs users to the appropriate timesheet grid.
Original PR description
Issues: - Reminder emails were showing the wrong week dates. - Opening a timesheet from the reminder email did not go to the correct grid view(scale). All the above issues are fixed in this commit. task-3624610