Wednesday, November 26, 2025
7 changes · 17.0
Resolved issues and error corrections
This update corrects a bug in how deferred accounting moves are created, ensuring accurate move generation when invoices are processed. The fix ensures that the correct number of accounting moves (6 instead of 4) are created for invoices with specific date ranges, preventing discrepancies in financial reporting. This resolves an issue impacting invoice processing accuracy.
Original PR description
Since https://github.com/odoo/enterprise/commit/a71c38fa6325cd18c686352d8f68d350461d37d0 we generate deferred entries in batch for performance reasons. Since then, we lost the link between fully…
Since https://github.com/odoo/enterprise/commit/a71c38fa6325cd18c686352d8f68d350461d37d0 we generate deferred entries in batch for performance reasons. Since then, we lost the link between fully deferred entries and their deferral moves. Steps: - Have an invoice at invoice date == last day of current month - Two invoice lines, one for 1000, the other for 500 - On both lines, set start date to the first day of last month, end date to the last day of currnt month - Confirm the invoice -> 4 moves are created, instead of 6 (fully deferred move related to the 500$ line) and deferral move for 500$ related to the 1000$ line Cause: - When trying to cancel moves, we check each fully deferred move with all deferral moves and, if possible, cancel the two that have the same amount and the same month With this commit, we keep trace of the link between each fully deferred move and their related deferral moves, that way we can do the same check as before, but with each fully deferred move and only related deferral moves. Deferred moves lines before: | date | debit | credit | |------------|-------|--------| | 11/30/2025 | 1000 | 0 | | 11/30/2025 | 0 | 1000 | | 11/30/2025 | 0 | 250 | | 11/30/2025 | 250 | 0 | | 10/31/2025 | 0 | 500 | | 10/31/2025 | 500 | 0 | | 10/31/2025 | 0 | 250 | | 10/31/2025 | 250 | 0 | Deferred moves lines after: | date | debit | credit | |------------|-------|--------| | 11/30/2025 | 1000 | 0 | | 11/30/2025 | 0 | 1000 | | 11/30/2025 | 0 | 500 | | 11/30/2025 | 500 | 0 | | 11/30/2025 | 500 | 0 | | 11/30/2025 | 0 | 500 | | 11/30/2025 | 0 | 250 | | 11/30/2025 | 250 | 0 | | 10/31/2025 | 0 | 500 | | 10/31/2025 | 500 | 0 | | 10/31/2025 | 0 | 250 | | 10/31/2025 | 250 | 0 | opw-5000337
This update fixes a bug where failed Outlook event synchronization caused duplicate calendar events to be created in both Odoo and Outlook. The fix uses a unique identifier from Microsoft to ensure accurate synchronization and prevent these recurring duplicates. This improves data consistency and reduces manual intervention.
Original PR description
When inserting an event into Outlook after a commit, if the insertion fails due to a timeout, the microsoft_id is never stored in the Odoo record. As a result, synchronization does not occur…
When inserting an event into Outlook after a commit, if the insertion fails due to a timeout, the microsoft_id is never stored in the Odoo record. As a result, synchronization does not occur correctly. On the next sync, a new event is created in Outlook. Since the original event is not linked to the Odoo entry, it is also re-synchronized back into Odoo, resulting in duplicate events in both systems. Steps to reproduce: - This is difficult to reproduce consistently, as it depends on Outlook’s response time. - Locally, it can be reproduced by forcing an error right after the Outlook insertion but before updating the Odoo record (between these lines: https://github.com/odoo/odoo/blob/34d0ae0ccb965e340d31bdbd7a7436af98e6dd48/addons/microsoft_calendar/models/microsoft_sync.py#L474-L475). Fix approach: This solution leverages the transactionId property provided by Microsoft (see: https://learn.microsoft.com/en-us/graph/api/resources/event?view=graph-rest-1.0#properties). This ensures that even if a timeout occurs, a retry will trigger a sync from Microsoft to Odoo, and thanks to the transaction ID, the Microsoft event can be correctly matched with the Odoo event — preventing duplicates. opw-5031073 opw-5105449
This update fixes issues preventing video options from being correctly saved and applied when editing video snippets. Specifically, it resolves problems with resetting options, incorrect URL parameter handling, and Dailymotion preview failures, ensuring users can consistently configure and embed videos as intended.
Original PR description
Issues: 1. Resetting options when dialog is closed without modification: When the media dialog is closed without changing any options and "Add" is clicked, the videoSelector component is reset,…
Issues:
1. Resetting options when dialog is closed without modification:
When the media dialog is closed without changing any options
and "Add" is clicked, the videoSelector component is reset, causing
previously selected parameters to be lost.
- Steps to reproduce:
- Drop a Video snippet.
- Double-click the snippet and toggle a few options (e.g., "Loop").
- Save the video configuration.
- Double-click the snippet again to open the video configurator.
- Save without making any changes.
- The options will be reset.
2. Embedding videos via Powerbox does not capture URL query parameters:
When embedding a video via Powerbox, option values from the URL
query parameters (like loop or autoplay) are not correctly applied.
- Steps to reproduce:
- Add any Text snippet.
- Paste a YouTube video URL with query parameters (e.g., ?loop=1&autoplay=1).
- Choose to embed the YouTube video from the Powerbox popup.
- The Video snippet is added without options enabled for the pasted URL.
3. Manual URL editing does not synchronize options:
Editing the video URL manually does not update the toggle states
of corresponding options.
- Steps to reproduce:
- Drop a Video snippet.
- Double-click the snippet and append query parameters to the URL.
- The option buttons should toggle according to the parameters, but they do not.
4. Dailymotion preview fails for protocol-independent URLs:
Previewing Dailymotion videos fails for URLs like //[www.dailymotion.com/](http://www.dailymotion.com/)....
- Fixes implemented:
- Preserve selected options when saving the Video snippet without any changes.
- Retrieve all query parameters from the URL and include them in the RPC request.
- Synchronize option toggles with the URL input when the user manually edits it.
- Fixed the Dailymotion regular expression to support protocol-independent
URLs (e.g., //[www.dailymotion.com/](http://www.dailymotion.com/)...).
task-4529118
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update optimizes how Odoo matches bank transactions with sale orders, significantly speeding up the process. By removing an inefficient query and leveraging an index, the matching time has been reduced dramatically. This improves overall system performance and responsiveness.
Original PR description
Finding a match between the bank transactions and sale orders is currently done via an unoptimized query that is preventing postgres from using any index. This commit removes the unnecessary CTE by simply doing the query directly on the sale_order table. This way we can also use a trigram index on the regex used for matching and postgres will be able to utilize it for faster search. Benchmarks: | Num sale_order | Before | After | | -------------- | ------ | ------ | | 1391909 | 3.88 s | 0.27 s | Ticket [link](https://www.odoo.com/odoo/project.task/5139457) opw-5139457
This update resolves an issue where push-to-talk remained active after releasing it, particularly when switching between browser tabs during a call. The fix introduces a timeout mechanism to ensure push-to-talk is reliably released, regardless of where the key release event is triggered. This improves the overall call experience and prevents unwanted functionality.
Original PR description
Before this commit, when using push-to-talk in a discuss call, sometimes the push-to-talk was kept on although user had it released. Steps to reproduce: - do not use discuss extensions' push-to-talk…
Before this commit, when using push-to-talk in a discuss call, sometimes the push-to-talk was kept on although user had it released. Steps to reproduce: - do not use discuss extensions' push-to-talk key - start a call - enable push-to-talk with chosen shortcut - press and hold the push-to-talk key - switch to another browser tab while keeping the push-to-talk key pressed (e.g. alt-tab while holding push-to-talk) - release push-to-talk key => Even after a long time and coming back to the call tab, the push to talk is still on This happens because the release of push to talk is designed with keyup intercepted on the call tab. While this happens most of the time, sometimes the keyup is triggered outside of call tab and never in call tab, thus the push-to-talk is not released. This commit fixes the issue by adding a timeout slightly greater than keyup release in the push-to-talk keydown phase, so that it forces release when no keydown has been intercepted for some time. task-[4707634](https://www.odoo.com/odoo/project/1519/tasks/4707634)
This update resolves an issue where commas in payment memos were causing EFT files to be rejected by the BNZ bank. The change removes commas from generated EFT files, ensuring correct formatting and successful payment processing. This prevents manual intervention and avoids payment failures.
Original PR description
The EFT file format BNZ is exported as a text file. As such, any commas in the field contents will be treated as a new field, resulting in incorrect formatting and a rejected batch file. This…
The EFT file format BNZ is exported as a text file. As such, any commas in the field contents will be treated as a new field, resulting in incorrect formatting and a rejected batch file. This behavior is due to the Odoo community commit [3082d3b](https://github.com/odoo/odoo/commit/3082d3bd0d7a8b45e647c441ba48adcb84a7a070), which partially reversed an improvement to the group payment memo field. - The original behavior was to concatenate the included invoices with spaces (e.g. 'INV/123 INV/124'). - The improvement replaced this with the batch payment reference (e.g. 'BATCH/IN/002'). - The behavior after 3082d3b is to concatenate the included invoices with a space and a comma (e.g. 'INV/123, INV/124' This commit strips the commas from all generated EFT files, instead of further altering the group payment memo field. It also alters existing unit tests to check that commas are removed from payment memo fields. While a fix that changes the memo generation would resolve some issues, this commit ensures that manually added commas will not cause rejected payments. [Ticket link](https://www.odoo.com/odoo/unassigned-tasks/5099220) opw-5099220
This update resolves an issue where the DIOT tax report export failed when journal entries lacked a partner. The fix prevents a critical error by ensuring the code gracefully handles missing partner data, allowing the report to generate correctly. This ensures accurate reporting for all transactions.
Original PR description
**Steps to reproduce:** 1. Install `Accounting` and `l10n_mx_reports` modules. 2. Create two journal entries using DIOT tax grid: one with partner, one without 3. Confirm the entries. 4. Go to `Accounting → Reporting → Tax Report → DIOT (MX)`. 5. Try to print the DIOT report in TXT format from the top-right dropdown. **Observed behavior:** * Export fails with a traceback if any entry has no partner. **Root cause:** The method `_get_diot_values_per_partner` does not handle entries without partners. **Solution:** raise `Usererror` if entries without partners when sorting and exporting. note: The second commit addresses a traceback caused by a missing operation_type_code. This occurs when all entries lack a partner or when a partner’s operation_type_code field is not set. opw-5060825