Thursday, July 23, 2026
16 changes · master
Resolved issues and error corrections
The invoicing dashboard now aligns Days Sales Outstanding data with the correct fiscal year structure. This helps finance teams view more accurate invoice performance metrics and avoid misinterpreting cash collection trends.
Original PR description
Invoice dashboard data, specifically DSO, was incorrectly aligned due to a mismatch in the fiscal year structure. Task-6049887 Forward-Port-Of: odoo/odoo#275880 Forward-Port-Of: odoo/odoo#261037
This fixes missing labels in the website editor for theme color choices and product image carousel thumbnail positions. Business users and site editors will now see the intended translated button and picker titles instead of blank or undefined values.
Original PR description
Steps to reproduce: - Open the website editor. - Go to the Theme tab. - Inspect the Primary or Secondary color picker title. => The title prop is undefined. - Go to a product page with several product images. - Edit the carousel thumbnail position option. => The Left and Bottom button titles are undefined. Before this commit, some builder option titles were passed as OWL expressions instead of translated string props. After this commit, these titles use translated string props and are properly available to the builder components. task-6034856 Forward-Port-Of: odoo/odoo#275940 Forward-Port-Of: odoo/odoo#275235
This fix addresses a timing issue that could affect how mail discussions load messages. It helps ensure users see the expected mail content consistently, reducing intermittent glitches in conversations.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now avoids reopening direct chats for users who are not participants, preventing a crash after logging out and logging in as a different user. This improves reliability of the chat experience, especially for administrators who may have access to records from other users.
Original PR description
Before this commit, when logging in as Demo user with a direct chat, logging out + logging in with Mitchell Admin would crash with the following error: ``` TypeError: can't access property…
Before this commit, when logging in as Demo user with a direct chat, logging out + logging in with Mitchell Admin would crash with the following error: ``` TypeError: can't access property "imStatusUI", this.channel.correspondent is undefined ``` This happens because this attempts to restore the direct chat in chat window. Normally this shouldn't happen thanks to being unable to fetch inaccessible channels, however Mitchell Admin is the admin of DB thus can fetch the channel data. The crash comes from computation of `correspondent` that is `undefined` because it can't determine a correspondent from the Point of view of Mitchell Admin, and the template isn't defensive against missing a `correspondent` in a direct chat. One solution could have been to support opening of direct chat, but this implies fixing a lot of complex issues, such as: - Mitchell Admin can't use composer because this attempts to add a member but there's a contraint for direct chat to have at most 2 members - This direct chat looks like a group chat without a name, we can guess this is a direct chat only because of broken avatar and the start message in message list stating this is a direct chat - Several other actions show weird behavior, like "Invite People" ignoring people in the chat This commit fixes the issue by ignoring the restore of chat in chat hub for direct chats that current user is not a member. Forward-Port-Of: odoo/odoo#277514 Forward-Port-Of: odoo/odoo#277199
This fixes a test for the HTML editor toolbar so it no longer fails because different browsers calculate tiny position differences. It helps keep automated checks stable without changing the editor experience for users.
Original PR description
Purpose of this commit: - Calculated toolbar overlay positions can vary by sub-pixels across browsers. - Use `toBeCloseTo` to compare numeric `top` and `left` positions instead of exact strings. runbot-944424 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Jordan POS users can now download the generated XML file when an electronic invoicing submission fails. This helps businesses review or share the failed submission data for troubleshooting, while successful submissions continue to store the XML normally.
Original PR description
Currently, we only load the XML data from the exported POS order in the field `l10n_jo_edi_pos_computed_xml` when`l10n_jo_edi_pos_error` is False. It should be the opposite. The field `l10n_jo_edi_pos_computed_xml` is only used when we call `download_l10n_jo_edi_pos_computed_xml()` from the anchor "Download XML" , and that anchor is only visible when `l10n_jo_edi_pos_error` is True. If the request succeeds, then the XML file will be stored in the field `l10n_jo_edi_pos_xml_attachment_id` anyway. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#276918
This fixes how sales reports group data when consolidation rates are involved. Business users should see more reliable sales reporting totals and groupings, reducing confusion when reviewing consolidated figures.
Original PR description
runbot-940450
This fixes the manufacturing product statistics button so it opens the correct related manufacturing orders. Users can now rely on the shortcut to review manufactured orders without seeing irrelevant or missing records.
Original PR description
* Following https://github.com/odoo/odoo/pull/261438 (forward-ported to 19.0 in #265323) we also need to show correct MOs when view from statsbutton Forward-Port-Of: odoo/odoo#265195 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#269201
The GIF picker search field now shows the required "Search KLIPY" placeholder by default. This keeps Odoo aligned with Klipy's attribution guidelines while making no meaningful change to user workflows.
Original PR description
Klipy requires attribution with "Search KLIPY" as the default placeholder [1]. This commit complies these guidelines. [1]: https://docs.klipy.com/attribution Forward-Port-Of: odoo/odoo#277330 Forward-Port-Of: odoo/odoo#275677
Fixes an issue where company address content in the bubble report layout could appear oversized compared with other layouts. The change makes customized company details render more consistently, improving the look of generated documents.
Original PR description
In the bubble layout, the `name="company_address"` div was inside an unconstrained `<td>`, causing percentage-based widths set in `company_details` (e.g. `width: 25%` on a image) to resolve against…
In the bubble layout, the `name="company_address"` div was inside an unconstrained `<td>`, causing percentage-based widths set in `company_details` (e.g. `width: 25%` on a image) to resolve against the full table cell width, resulting in oversized content compared to other layouts. **Without fix:** <img width="1127" height="411" alt="withoutfix" src="https://github.com/user-attachments/assets/244c3407-1dbb-4b83-95d9-ebaba2b2b13c" /> For e.g, The folder layout wraps the same block in a `w-50` div, so percentage widths resolve against ~half the page width. <img width="1111" height="410" alt="folderexp" src="https://github.com/user-attachments/assets/ee72712a-94da-483c-9a8e-cb3a850dac8e" /> Added `w-50 ms-auto` to the `name="company_address"` div in the bubble layout to align its sizing context with the other layouts, ensuring consistent rendering of user-defined styles in `company_details` across both layouts. **With fix:** <img width="1119" height="413" alt="wfix" src="https://github.com/user-attachments/assets/6b1caf24-3a8e-450f-865e-cce2b9788fe9" /> Commit which made the bubble layout in table: https://github.com/odoo/odoo/commit/8eb61a245cd3b650e309fdb55d24654c34d785cd opw-6287230 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#275421 Forward-Port-Of: odoo/odoo#270725
This fixes a timing issue where the HTML editor toolbar could still try to update after the editor had been closed or removed. The change prevents a crash and makes the editing experience more stable for users.
Original PR description
A deferred toolbar update can still fire after the ToolbarPlugin has been destroyed. The global "mouseup" handler re-arms `updateToolbar` through a raw setTimeout that is not cancelled by `destroy`,…
A deferred toolbar update can still fire after the ToolbarPlugin has been destroyed. The global "mouseup" handler re-arms `updateToolbar` through a raw setTimeout that is not cancelled by `destroy`, so `_updateToolbar` runs on a plugin whose editable document has been detached. At that point `this.document.defaultView` is null and `getFilteredTargetedNodes` crashes with:
TypeError: Cannot read properties of null (reading 'getComputedStyle')
Cancelling the debounced updates in `destroy` is not enough: `cancel()` only clears the currently pending timer, it does not disable the debounced function, so the post-destroy `updateToolbar()` call re-schedules it.
Guard `_updateToolbar` with the plugin's `isDestroyed` flag instead, which covers every deferred entry point.
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fix ensures vendor bills processed through French electronic invoicing keep the right status information when they are automatically posted. It helps prevent failures in automated bill processing for affected localizations, reducing manual intervention and test failures.
Original PR description
The context variable skip_is_manually_modified needs to be passed in order for the autoposting feature to work. The is_manually_modified variable of the move needs to evaluate to true Fixes error in test TestInvoiceExtract.test_autopost_bills_ocr for mc and fr localizations Related pr: https://github.com/odoo/odoo/pull/271865 runbot-6369932 Forward-Port-Of: odoo/odoo#276953
The timesheet assistant now recognizes events from coding editors correctly, so they display with the intended development icon. This makes assistant activity clearer for users who track work connected to development tools.
Original PR description
In the assistant, events from a coding editor use the "code" event type, which doesn't exist. This PR changes it to the correct value, which is "development". Task-6392585 Forward-Port-Of: odoo/enterprise#124502
The AI module’s automated tests were adjusted to focus only on editable email content after a related editor behavior change. This helps keep quality checks reliable without changing what end users see or do.
Original PR description
This commit updates the tests after https://github.com/odoo/odoo/pull/276332 to query only the editable content, ignoring the DOM clone created by `convert_inline`. opw-3776054 Forward-Port-Of: odoo/enterprise#124648
This fix ensures Starshipit delivery item details send the product barcode as the barcode and the internal reference as the SKU. This helps avoid confusion in shipping records and improves accuracy when matching delivered items.
Original PR description
Current behavior: --- Barcode is assigned to sku in the item model payload Fix: --- Assigned product barcode in barcode and internal reference in sku opw-6221412
This fix aligns manufacturing work order timelines with updated planning behavior. It also adjusts duration calculations in grouped Gantt views so users see more accurate scheduling information.
Original PR description
[This PR](https://github.com/odoo/odoo/pull/106990) modifies the behavior of the planned dates of workorder so some tests must be adapted as well as the values used to compute the duration of the aggregated grouped pills of `MRPWorkorderGanttRow` opw-3008089