Daily updates from Odoo
Monday, November 10, 2025
8 changes · 17.0
Enhancements to existing features
This change speeds up the calculation of accounting move amounts by preparing required data in advance instead of repeatedly loading it on demand. It significantly reduces processing time, memory use, and database queries when handling very large reconciliations, making large accounting operations much faster and more efficient.
Original PR description
Currently performance on `_compute_amount()` is bottlenecked by `__get__()` calls on fields on `line_ids`. We tackle this bottleneck by warming the cache with `fetch()` Benchmark on reconciling 2 account moves with ~70k lines each | |Total Time|Allocated Memory|Queries| |----------|----------|----------------|-------| |Before |43.23s |2GB |993 | |After |18.60s |1GB |693 | opw-5098543
Resolved issues and error corrections
When users upload an image in the Website Editor for the first time, Odoo now avoids creating duplicate attachments for the same file. This reduces unnecessary storage use and keeps page media cleaner, while still applying image optimization such as resizing and web format conversion.
Original PR description
This PR aims to prevent the creation of duplicate image attachments when uploading an image for the first time in Website Editor. --- ### Steps to Reproduce 1. Open Website → Edit mode. 2. Drag and drop any snippet that contains an image (e.g., cover, banner, image block). 3. Upload an image using the image upload option. 4. Check the attachments. → You will notice multiple attachments of the same image being created(by odooBot). --- ### Impact * Prevents unnecessary saves and duplicate attachments. task-4812410
Payments now correctly generate their journal items even when the journal lines field is added to the form with Studio. This prevents draft payments from being saved without the accounting entries they need, while still preserving any custom journal lines users provide.
Original PR description
**Steps to reproduce:** 1. Install the Accounting and Studio modules. 2. Create a payment in draft state. 3. Add the `line_ids` field to the payment form view using Studio. 4. Save the payment. **Observed behavior:** * A journal entry was created, but its journal items (`line_ids`) were not computed. * The payment stayed in draft with empty journal items. * The normal flow (without the field added) worked correctly. **Cause:** * The create method only checked whether `line_ids` was missing from `vals`. When Studio adds the field to the form, it appears in `vals` even when empty. As a result, the condition failed and journal items were not generated. **Fix:** * Check both if `line_ids` is missing and if it is empty. * Always compute journal items when none are explicitly provided. * Keep existing behavior for custom journal item creation. opw-5030072
The upload button in the accounting dashboard can no longer be dragged around by mistake. This keeps the interface stable and avoids confusing shifts in the upload area while users work.
Original PR description
Issue: - In the dashboard, the upload button (purchase journal and others) could be dragged. - This caused unintended movement of the upload UI element. Fix: - Added `draggable=false` to the upload button element. - Ensures the button remains fixed and cannot be dragged around. TaskID-5114617
This change corrects how time intervals are combined so they are always cleaned up before being processed. It prevents inconsistent results and errors when different interval types are used together, improving reliability in planning-related operations.
Original PR description
## The issue Prior to this commit, the `other` parameter in the `_merge` method could belong to a different class, not necessarily an instance of `Intervals`.…
## The issue Prior to this commit, the `other` parameter in the `_merge` method could belong to a different class, not necessarily an instance of `Intervals`. https://github.com/odoo/odoo/blob/8c737601327acec1d83e1e5e3c6e66c9fd226339/addons/resource/models/utils.py#L158-L165 The comment indicates that normalization should be enforced; however, there is no corresponding reference to it within the `_boundaries` method. https://github.com/odoo/odoo/blob/8c737601327acec1d83e1e5e3c6e66c9fd226339/addons/resource/models/utils.py#L48-L53 That normalization just happens in the `__init__`. https://github.com/odoo/odoo/blob/8c737601327acec1d83e1e5e3c6e66c9fd226339/addons/resource/models/utils.py#L117-L132 ## Example For example, in Planning module, we perform operations between `Intervals` and `WorkIntervals`. The `WorkIntervals` class behaves differently from `Intervals`: while `Intervals` uses disjoint closed intervals, `WorkIntervals` uses disjoint semi-closed intervals. ## Side effects During these operations, the `_merge` method was not normalizing the `_items`, which caused inconsistencies and errors (when we are merging two unormalized intervals `([0, 10], [10, 20])` with an empty `others`). ## The fix This commit ensures that the `other` parameter is normalized before processing the `_merge` operation. The fix ensures that normalized intervals are always produced after `_merge`, even when unnormalized intervals are provided as input. ## Real case That issue has been found in that ticket: 5184291
Sales order line costs now keep updating correctly even after an order was confirmed, canceled, and then reset to draft. This prevents outdated margin and pricing information from appearing when users revise quotations.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have a product with a purchase cost; 2. have sale margins enabled; 3. add a the product to a quotation; 4. change pricelist to one with a different currency; 5. note that the line's cost gets updated; 6. change order state to confirmed, then canceled, then back to draft; 7. change pricelist again. Issue ----- The purchase cost no longer update. Cause ----- The `_compute_purchase_price` override in `sale_stock_margin` doesn't pass the line to `super` if it `has_valued_move_ids`. This hook only checks for the existence of linked `move_ids` on the record with no regard for their state. Solution -------- 1. Move the `has_valued_move_ids` hook from `sale` to `sale_stock`. 2. Only return `True` if any of the moves aren't in draft or canceled. opw-5147321
Mobile visitors using live chat will no longer see the message field auto-zoom when they tap to type. This keeps the send button visible and makes the chat experience smoother on phones and tablets.
Original PR description
Before this commit, when using livechat for visitors on mobile devices, click on input would zoom on input of about 115%. This zoom would hide send button at the very end of composer input, and would…
Before this commit, when using livechat for visitors on mobile devices, click on input would zoom on input of about 115%. This zoom would hide send button at the very end of composer input, and would force users to pinch-to-unzoom, making the UX quite poor. This problem happens because mobile devices have an auto-zoom feature that is triggered when font-size is below 16px. The discuss UI is designed with 14px font size (web client font size), and since 14px < 16px, it zooms on input focus to about 115%. This commit fixes the issue by using a font-size of 16px specifically for livechat visitor on mobile devices, so that this doesn't auto-zoom. Note that this problem doesn't happen on the web client even though this uses a font-size of 14px because it specifically disable the autozoom feature: https://github.com/odoo/odoo/blob/17.0/addons/web/views/webclient_templates.xml#L250 This solution is not practical for livechat, for which it has to work on any external website. opw-5229076 Before <img width="199" height="431" alt="after" src="https://github.com/user-attachments/assets/cc2f8e04-bde7-4eeb-84d5-b2efa2763490" /> After <img width="199" height="431" alt="before" src="https://github.com/user-attachments/assets/6c6679fc-9c16-40e7-ab6f-21540d20d59d" />
This fix ensures that when a transfer in a batch is only partly completed, it is correctly removed from the batch afterward. This helps keep batch lists accurate and avoids confusion for warehouse users managing ongoing operations.
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