Daily updates from Odoo
Monday, April 13, 2026
8 changes · master
Resolved issues and error corrections
This update standardizes how time is recorded within Odoo Enterprise by renaming 'work entry type' and 'time off type' to 'time type'. This resolves previous inconsistencies that caused confusion and improved data accuracy for employee time tracking and payroll calculations.
Original PR description
Previously, time off types were generating hr.leave.request records while still being exposed as work entry types, leading to inconsistencies across the system. In this commit, renaming: work entry type -> time type time off type -> time type Task-5976238
This update fixes a problem where invoices sent to the Colombian DIAN tax authority would incorrectly be marked as duplicates and rejected. The fix prevents a rollback process from triggering when the DIAN GetStatus endpoint fails, ensuring invoices are correctly accepted by DIAN and preventing duplicate submissions.
Original PR description
Steps to reproduce:
- Send a Colombian DIAN invoice (SendBillSync flow)
- Simulate a non-200 response from the DIAN GetStatus endpoint during the call of _get_attached_document (see ticket)
Issue:
The invoice is accepted by DIAN but the state is never written. When trying to send the invoice a second time DIAN rejects the invoice as a duplicate (already submitted).
Cause:
`_get_response_history` returns `("", error_msg)` on non-200 status_code and when calling `_get_attached_document`
-> error and rollback and `invoice_accepted` is not written correctly
opw-5919395
Forward-Port-Of: odoo/enterprise#111349
Forward-Port-Of: odoo/enterprise#111186This update resolves an issue where the 'Results Brought Forward' line on the Luxembourg balance sheet displayed incorrect values. The fix adjusts how the system calculates this line to accurately reflect year-end adjustments related to profit and loss, ensuring financial reporting accuracy for Luxembourg companies.
Original PR description
… sheet Steps to reproduce: - Use a Luxembourg company - Post a P&L result for the year and do the year-end affectation (Dr 142 / Cr 1412) - Open the Luxembourg balance sheet (full or abbreviated)…
… sheet
Steps to reproduce:
- Use a Luxembourg company
- Post a P&L result for the year and do the year-end affectation (Dr 142 / Cr 1412)
- Open the Luxembourg balance sheet (full or abbreviated)
Issue:
Line "V. Profit or loss brought forward" shows incorrect values.
Cause:
The `accounts` expression for that line used `account_codes` engine with formula `-14`, which only sums accounts by code prefix. Account 1412 ("Results brought forward (assigned)") was typed as `equity`, so its balance was carried forward as an initial balance instead of being captured as retained earnings in the formula.
Solution:
- Set account 1412 to `equity_unaffected`, consistent with account 142.
- Change the `accounts` expression of Line V in both the full and abbreviated balance sheet to use the `domain` engine: `['|', ('account_id.code', '=like', '14%'), ('account_id.account_type', '=', 'equity_unaffected')]` with subformula `-sum`. This correctly captures the balance of all 14x accounts and any `equity_unaffected` accounts, which covers the standard year-end affectation workflow.
opw-5883505
Forward-Port-Of: odoo/enterprise#111328This update fixes an issue where Odoo incorrectly consumed stock from the wrong location when scanning serial numbers on Manufacturing Orders. The fix ensures the correct warehouse location is used, preventing stock discrepancies and improving order fulfillment accuracy. This resolves a potential error impacting inventory management.
Original PR description
Steps to reproduce: - Create a Manufacturing Order with a serial-tracked component. - Open the Shop Floor. - Scan the serial number barcode to register the component. - Observe which location the component was consumed from. Issue: When a product is received from a vendor, Odoo creates two quants for the same serial number — one at Partners/Vendors location and one at WH/Stock location. Because get_quant_from_barcode searched for a matching serial number with no location filter, it returned whichever quant had the lowest database ID — which was always the Partners/Vendors or Production quant created first — instead of the correct WH/Stock quant. Solution: Prevent selecting a quant from an incorrect location when multiple quants exist for the same serial number, as this can lead to consuming stock from the wrong location. opw-5974474 Forward-Port-Of: odoo/enterprise#113442 Forward-Port-Of: odoo/enterprise#112691
This update corrects a bug where payments for invoices paid within 30 days (PUE) were incorrectly sent to the Mexican tax authority (CFDI). The fix disables a feature that allowed this, ensuring compliance and preventing inaccurate reporting. This resolves an issue impacting Mexican businesses using Odoo Enterprise.
Original PR description
Issue: Sending PUE payments to CFDI/SAT is no more suitable Step to reproduce: - In a Mexican company - Create an invoice (Invoice A) - Add a line - Set Payment Terms to "Immediate payment" - Confirm…
Issue: Sending PUE payments to CFDI/SAT is no more suitable Step to reproduce: - In a Mexican company - Create an invoice (Invoice A) - Add a line - Set Payment Terms to "Immediate payment" - Confirm - Duplicate (Invoice B) - Confirm - Duplicate again (Invoice C) - Set Payment Terms to "30 days" - Confirm - Go to Invoice A - Pay it. It should appear as "Paid" - Send it to CFDI - Go to Accounting > Customer > Invoices - Select Invoice B and C - Pay and select the "Group Payments". They should appear as paid. - In every invoice, click the "Update Payment" button Current behavior: - In Invoice A -> Sheet CFDI: A button "Force CFDI" allow sending the payment to CFDI - In Invoice B/C -> sheet CFDI: Click on the "Download" part of the Payment line, the XML that was sent to CFDI include both invoice B and C Expected behavior: - It shouldn't be possible to send payment for invoice A to CFDI. - Payment for invoice B shouldn't be sent to CFDI Cause: Payment for invoice paid in less than 30 days, referred as PUE, shouldn't be sent to CFDI. Solution: Disable the force sending to CFDI About tests: l10n_mx_edi_cfdi_invoice_try_update_payments already send payment to CFDI for PPD invoices. Calling action_force_payment_cfdi was pointless and causing a mess. opw-5381600 Forward-Port-Of: odoo/enterprise#109561 Forward-Port-Of: odoo/enterprise#104628
This update resolves an issue where upgrading to a newer version of Odoo would fail if a previously deleted company folder was still referenced. The fix ensures that inactive folders are properly handled during the upgrade process, preventing errors and maintaining data integrity.
Original PR description
While embedding sign into predefined folders we need to consider if they are active or not. Otherwise during…
While embedding sign into predefined folders we need to consider if they are active or not. Otherwise during [upgrade](https://github.com/odoo/upgrade/blob/master/migrations/documents_sign/saas%7E19.2.1.0/post-migrate.py) to `saas~19.2` with module `documents_sign` installed, it will try to get document actions of predefined folder [here](https://github.com/odoo/enterprise/blob/6d334a17d10faec33d60f4a8d7d263c091bb456e/documents/models/documents_document.py#L1592), so if the folder is inactive it will not be able to read the folder [here](https://github.com/odoo/enterprise/blob/6d334a17d10faec33d60f4a8d7d263c091bb456e/documents/models/documents_document.py#L1494).
Steps to reproduce:
1/ Install `documents_sign` in 19.0
2/ Delete the folder `Legal` (documents.document_legal_folder)
3/ Upgrade to `saas~19.2`
As result we will get traceback similar to this:
```
2026-03-19 16:17:50,553 4059246 INFO test_documents_sign odoo.modules.migration: module documents_sign: Running migration [saas~19.2.1.0>] post-migrate
2026-03-19 16:17:50,593 4059246 WARNING test_documents_sign odoo.modules.loading: Transient module states were reset
2026-03-19 16:17:50,594 4059246 ERROR test_documents_sign odoo.registry: Failed to load registry
2026-03-19 16:17:50,594 4059246 CRITICAL test_documents_sign odoo.service.server: Failed to initialize database `test_documents_sign`.
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-19.2/odoo/service/server.py", line 1598, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'], reinit_modules=config['reinit'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/odoo/tools/func.py", line 65, in locked
return func(inst, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/odoo/orm/registry.py", line 202, in new
load_modules(
File "/home/odoo/src/odoo/saas-19.2/odoo/modules/loading.py", line 465, in load_modules
load_module_graph(
File "/home/odoo/src/odoo/saas-19.2/odoo/modules/loading.py", line 231, in load_module_graph
migrations.migrate_module(package, 'post')
File "/home/odoo/src/odoo/saas-19.2/odoo/modules/migration.py", line 220, in migrate_module
exec_script(self.cr, installed_version, pyfile, pkg.name, stage, stageformat[stage] % version)
File "/home/odoo/src/odoo/saas-19.2/odoo/modules/migration.py", line 257, in exec_script
mod.migrate(cr, installed_version)
File "/home/odoo/src/upgrade/migrations/documents_sign/saas~19.2.1.0/post-migrate.py", line 7, in migrate
_post_init_hook(util.env(cr))
File "/home/odoo/src/enterprise/saas-19.2/documents_sign/__init__.py", line 40, in _post_init_hook
folders_to_process._embed_action(sign_action.id)
File "/home/odoo/src/enterprise/saas-19.2/documents/models/documents_document.py", line 1621, in _embed_action
folder.action_folder_embed_action(folder.id, action_id)
File "/home/odoo/src/enterprise/saas-19.2/documents/models/documents_document.py", line 1592, in action_folder_embed_action
return self.get_documents_actions(folder_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/enterprise/saas-19.2/documents/models/documents_document.py", line 1496, in get_documents_actions
raise UserError(_('This folder does not exist or is not accessible.'))
odoo.exceptions.UserError: This folder does not exist or is not accessible.
```
For fixing the issue we skip inactive folders.
tbg-2508
Forward-Port-Of: odoo/enterprise#111339This update fixes a potential issue where work entry types were incorrectly selected across different countries, leading to inaccurate payroll calculations and leave allocations. The changes enforce country-specific work entry types based on the company and employee context, ensuring accurate and reliable payroll processing across all localized versions of Odoo.
Original PR description
Forward-Port-Of: odoo/enterprise#113290
This update fixes an issue where the amount for Danish balance sheet reports wasn't displayed correctly when certain report settings were enabled. The update simplifies report generation to use account sublines, ensuring accurate reporting and aligns with Danish accounting practices. It also includes updated Danish translations.
Original PR description
We updated the Danish balance sheet and profit and loss reports to reflect the changes in the Danish chart of accounts and common practice in Danish accounting. We also simplified the reports to use the accounts themselves as sublines instead of having a separate report line for each account. Finally we made sure we use the official Danish translations and updated the English translations as well. task-5929517 Related: https://github.com/odoo/odoo/pull/256541 Forward-Port-Of: odoo/enterprise#113285 Forward-Port-Of: odoo/enterprise#112430