Daily updates from Odoo
Tuesday, May 5, 2026
10 changes · master
Resolved issues and error corrections
This update automatically generates a new offer link token each time an offer email is sent, eliminating the need for manual token changes. This improves security by invalidating compromised tokens and simplifies the process for users. Minor adjustments were made to related tours to account for the new token generation process.
Original PR description
In the case that an offer link is compromised, the access token needs to be changed to invalidate the old one. Right now it has to be done manually. This commit removes the ability to edit access…
In the case that an offer link is compromised, the access token needs to be changed to invalidate the old one. Right now it has to be done manually. This commit removes the ability to edit access tokens manually and instead generates a new access token whenever an offer email is sent. The reason why the access token is set in the "MailComposeMessage" class instead of directly inside the "HrContractSalaryOffer" class is that the "Send by Email" button on the offer form doesn't directly send the email, it instead opens a dialogue to edit it before sending. In this dialogue, the user can just discard the email. If the access token was set when the dialogue was opened, discarding the email would change the access token of the offer without sending the new link. Instead of this the access token is updated right before sending the offer email. The reason why some tours were modified is that since the access token is tracked, changing it will produce a new message in the chatter, the problem with this is that those tours have the assumption that the salary configurator link will be in the first message in the chatter which is no longer true as it is the second message now. Task-ID: 5172914
This update resolves an issue where printers connected as IoT devices were not being correctly loaded within the Point of Sale (PoS) system. This fix ensures that IoT printers are now functional and usable, improving the PoS experience for users. It addresses a previously unusable printer scenario.
Original PR description
preparation printers were not loaded in PoS as IoT devices making them unusable. Forward-Port-Of: odoo/enterprise#115826 Forward-Port-Of: odoo/enterprise#115768
This update significantly speeds up the process of writing data to reconciliation models in the accounting system. By optimizing how the system retrieves and filters bank statement lines, the update reduces processing time and memory usage, particularly for large databases with many unreconciled transactions. This results in a faster and more efficient reconciliation workflow.
Original PR description
When writing on reconcile models, the ORM fetches all the unreconciled bank.statement.lines then calls filtered on `unreconciled_statement_lines.line_ids`. In databases with a lot of unreconciled…
When writing on reconcile models, the ORM fetches all the unreconciled bank.statement.lines then calls filtered on `unreconciled_statement_lines.line_ids`. In databases with a lot of unreconciled statement lines scattered across multiple models, this `filtered` can be heavy, both in memory (fetching all the amls fields) and in time. This commit fixes this by using a search to prefilter the amls using the reconcile models in self. Then we filter the result on `suspense_account_id`. This greatly reduces the number of lines loaded up in memory and speeds up writing on reconcile models. ### speedup In a customer database with 484 042 statement.lines, 141 000 unreconciled statement.lines, 37 account.reconcile.model. Time to write on a reconcile_model. | Nbr linked unreconciled lines| Before PR | After PR | |:----------------------------:|:---------:|:--------:| | 702 | 40s | 3s | | 2000 | 40s | 4.47s | | 10000 | 40s | 11.28s | Since most of the slowness comes from the `filtered` call, the number of unreconciled statement lines linked to the reconcile.model being updated has no impact on the timing before this patch. ### memory For the 702 unreconciled lines case, the memory consumption goes - 2.2 Gb -> 200Mb. Forward-Port-Of: odoo/enterprise#115583
This update enhances the accuracy of invoice imports by adding a crucial field – the 'partner' – to the query builder for move lines. This resolves issues with unsynchronized values during import, particularly related to invoices generated using UBL standards. It’s part of a larger effort to improve data consistency.
Original PR description
This commit is part of a bigger commit on the community side- to refactor the import code of BIS3 Invoice to fix various unsynchronized values issues. task-id: 5058687 Forward-Port-Of: odoo/enterprise#115517 Forward-Port-Of: odoo/enterprise#108356
This update resolves an issue preventing the import of Winbooks tax data for Belgian companies. The fix re-enables a temporary workaround that allows the system to correctly handle a specific account type used in Winbooks, ensuring accurate data import. This avoids a previous error message related to receivable account selection.
Original PR description
Steps to reproduce: ------------------- 1. Install account_winbooks_import, and switch to a Belgian company 2. Open Accounting > Configuration > Settings and click "Import", then click "Import WBK"…
Steps to reproduce: ------------------- 1. Install account_winbooks_import, and switch to a Belgian company 2. Open Accounting > Configuration > Settings and click "Import", then click "Import WBK" 3. Upload a Winbooks zip whose chart of accounts uses 411000 typed as asset_current (Winbooks default for "VAT Recoverable") 4. Confirm the import The import fails with: "You must select a receivable account for 'Tax Receivable Account'." Why the issue ------------- In Winbooks, account 411000 is the V01 central account (tax receivable). In Odoo, 411000 comes from l10n_be (account "a411") with type "asset_current", not "asset_receivable". When the import wizard sets it on the existing tax groups via `manage_centralid` in import_wizard.py, the constraint `_constrains_payable_receivable_account` on account.tax.group rejects the write because the account is not "asset_receivable" + "non_trade". This case was already handled in 20804db6d87: we bypassed the constraints on accounts coming from Winbooks, as those are imported in draft anw and the user finishes the configuration after. However later, [2a38e771a826](https://github.com/odoo/odoo/commit/2a38e771a826) and ff5dee81080 removed the initial constraint and the code that bypassed it for account_winbooks_import. Finally, [746a06fab485](https://github.com/odoo/odoo/commit/746a06fab485) added back a similar constraint "_constrains_payable_receivable_account" to fix a NL issue (same account used as both payable and receivable on a tax group). The Winbooks bypass however was not added back, so the original Winbooks issue appeared again. The fix ------- Add back the same bypass originally introduced in 20804db6d87. opw-6092464 Forward-Port-Of: odoo/enterprise#115291
This update simplifies the process for Dutch companies to manage their digipoort certificates within the accounting settings. Previously, users had to navigate to a separate section to create a certificate before selecting it. Now, users can directly create and edit digipoort certificates within the main accounting settings, improving the user experience.
Original PR description
Description of the issue this commit addresses: In the Accounting settings on a Dutch company, the setting for the selection of the digipoort certificate only lets you choose amongst existing certificates so if you haven't created one yet, you need to go to the dedicated certificates menu to create one and then come back to the digipoort certificate setting to set it. This is poor UX. --- Desired behavior after this commit is merged: This is improved by letting the user Create and Edit inside the digipoort certificate setting directly. --- task-6065566 Forward-Port-Of: odoo/enterprise#115755 Forward-Port-Of: odoo/enterprise#114307
This update resolves an issue where users were unable to view equity holders associated with companies they didn't have access to. The change adds a company association to equity records, ensuring accurate reporting and access to all relevant shareholder information. This enhances the reliability of our equity management features.
Original PR description
Before this commit, if you had some holders only visible to a company you don't have access to, the cap table would show an access error. This commit introduces multi-company logic to equity models by adding a new company_id field related to the company_id of the partner_id. Other partners (holder, seller, subscriber) will have their companies checked against that company. task-6018771 Forward-Port-Of: odoo/enterprise#110724
This update resolves an issue preventing the system from correctly calculating overtime pay. The fix re-introduced a missing data file and corrected a reference, ensuring that overtime hours are now accurately considered when generating payslips. This improves payroll accuracy and compliance.
Original PR description
Issue: The issue here is that work_entry_type is not associated with the overtime ruleset. That's why when creating a payslip, it is not considering overtime hours. From this PR - https://github.com/odoo/enterprise/pull/98952 the data file is missing from the manifest file. Fix: Added back file to manifest and fixed reference for work_entry_type_id. task-6073921 Forward-Port-Of: odoo/enterprise#115981 Forward-Port-Of: odoo/enterprise#112934
This update allows users to automatically reconcile bank statements from a branch with payments and invoices from the parent company. Previously, reconciliation was limited to matching companies only. This change streamlines the bank reconciliation process by recognizing parent-child relationships.
Original PR description
The aim of this commit is allowing in the automatic reconciliation of bank reconciliation widget the possibility to reconcile statement lines from a parent company with moves (payments and invoices) from a branch. To do that, we are not only checking that the company between the AML and the statement line is the same, we are checking that there is a parent relation between the company of the AML and the statement line. opw-6056320 Forward-Port-Of: odoo/enterprise#115267 Forward-Port-Of: odoo/enterprise#114850
This update resolves an issue that occurred when manually creating vendor bills and DIAN commercial events were rejected due to missing information. The fix ensures that the system correctly handles these rejections, preventing a traceback error and improving the reliability of the DIAN integration. This change is crucial for accurate vendor bill processing.
Original PR description
This commit fixes an error when retrying a rejected DIAN commercial event on manually created Vendor Bills. This is a tricky error as it only happens when the vendor bill is manually created and the…
This commit fixes an error when retrying a rejected DIAN commercial event on manually created Vendor Bills. This is a tricky error as it only happens when the vendor bill is manually created and the event is rejected (missing/incomplete info or servers down which is common). To add more to this, this error can only be reproduced without demo mode as it forces the acceptance, forcing the need of valid testing or production DIAN credentials How to reproduce it: - Install l10n_co_dian module - On CO company with all required DIAN configuration set - Create a vendor bill manually with enough information to send to the DIAN but causing it to be rejected. - Click on acknowledge receipt, it should be rejected - Complete information to be accepted and again click on acknowledge receipt - A traceback appear Code expects the last document to be the most current one created when triggering commercial event, but this is not true when a rejected document exists since this is unlinked and cache invalidated causing the recordset to be invalidated and retrieved again by ORM with default order, so now the last document is the oldest one without an attachment causing the traceback opw-6104541 Forward-Port-Of: odoo/enterprise#115914 Forward-Port-Of: odoo/enterprise#114758