Friday, April 4, 2025
11 changes · 18.0
Enhancements to existing features
After finishing all transactions in a filtered reconciliation view, users can now adjust the filters behind the completion celebration instead of being forced to reset their view. This helps accountants continue working with their existing search criteria and avoids losing useful filters such as unmatched transactions.
Original PR description
This is more an UX problem rather than a bug. In the reconciliation tool, when you reconciled all the transactions of the current filter, rainbow mans appears. Then, all the background behind the…
This is more an UX problem rather than a bug. In the reconciliation tool, when you reconciled all the transactions of the current filter, rainbow mans appears. Then, all the background behind the rainbow overlay is disabled, you can no longer edit the filters in the search for instance, and the only buttons available become "All transactions" and "Back to dashboard". Both buttons will make you loose your search filters: - You loose the "Not Matched" filter which is set automatically when you hit the "x to reconcile" button in the accounting dashboard, and hence you see the already reconciled transactions, while you were actually interested only in the non-reconciled transactions - If you made a complicated filter, you loose them all and you are good to redo them all. This revision offers the possibility to have the background behind the rainbow overlay clickable, so you would be able to change the filters, for instance only the last filter, in order to continue your reconciliation where you were, instead of being completely reset. Before: https://github.com/user-attachments/assets/4ed7cf41-1fa0-4efe-92a0-171011b4713a After: https://github.com/user-attachments/assets/e4f2d580-9dca-4331-9e66-89efeb00edef
Resolved issues and error corrections
This update refreshes Odoo’s spreadsheet component to the latest version, improving reliability and speed in spreadsheet editing. It also fixes pivot table notifications and error display issues, making reporting workflows clearer and less disruptive for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/89a327918 [REL] 18.0.22 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/89a327918 [REL] 18.0.22 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/fb8e860ce [PERF] tokenize: faster space tokenize [Task: 4684215](https://www.odoo.com/odoo/2328/tasks/4684215) https://github.com/odoo/o-spreadsheet/commit/5f3b8913e [REF] tokenize: extract new line tokenize [Task: 4684215](https://www.odoo.com/odoo/2328/tasks/4684215) https://github.com/odoo/o-spreadsheet/commit/fb9699125 [FIX] pivot: make pivot update notification sticky [Task: 4680152](https://www.odoo.com/odoo/2328/tasks/4680152) https://github.com/odoo/o-spreadsheet/commit/d584b7d07 [FIX] pivot: measure input badly colored when in error [Task: 4677359](https://www.odoo.com/odoo/2328/tasks/4677359) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
File banners in website content now stay locked when editing is disabled. This prevents portal users from accidentally changing saved file boxes and helps preserve published product descriptions.
Original PR description
**Problem**: File boxes contain elements with `contenteditable=true`. Once saved, portal users can edit them even when the editor is disabled. **Solution**: Use the new mechanism introduced in [69fb021](https://github.com/odoo/odoo/pull/201139/commits/69fb0216dee2bbea407ca6f3c3ef9f1cc71a2f6b), by adding `o-contenteditable-true` and `o-contenteditable-false` classes to file banners. **Steps to reproduce**: 1. Navigate to **Sales > Product**. 2. Open any product. 3. In the **Sales** tab, add a **banner** to "Ecommerce Description". 4. Save and click **Go to Website**. - **Issue**: The banner remains editable, even when the editor is disabled. **opw-4597744** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Saved website banners and file boxes will no longer remain editable for portal users when the editor is disabled. This prevents unintended changes to product ecommerce descriptions and keeps published content under the right editing controls.
Original PR description
**Problem**: Banners and file boxes contain elements with `contenteditable=true`. Once saved, portal users can edit them even when the editor is disabled. **Solution**: Remove `contenteditable=true` from elements inside banners and file boxes. **Steps to reproduce**: 1. Navigate to **Sales > Product**. 2. Open any product. 3. In the **Sales** tab, add a **banner** to "Ecommerce Description". 4. Save and click **Go to Website**. - **Issue**: The banner remains editable, even when the editor is disabled. **opw-4597744** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Returns for lot-tracked products no longer fail when lot valuation was turned on after the original delivery. This helps businesses using AVCO or FIFO costing process returns reliably and keep inventory valuation workflows uninterrupted.
Original PR description
Steps to reproduce: - Install stock, stock_account, sales - Create a product with pricing policy not standard(AVCO, FIFO) - Track this product by lot and keep lot valuation **unchecked** - Add a…
Steps to reproduce: - Install stock, stock_account, sales - Create a product with pricing policy not standard(AVCO, FIFO) - Track this product by lot and keep lot valuation **unchecked** - Add a quant of the product with this lot - Create a quotation on the product and confirm the SO - Confirm the delivery - Activate the lot valuation on the product - Make a return delivery based on the delivery we had - Confirm the return **Issue**: Traceback is thrown ```py new_std_price = ((amount_unit * qty_avail) + (move_cost[lot] * qty)) / (qty_avail + qty) KeyError: stock.lot(55,) ``` Because `move_cost` is a dictionary returned by `_get_price_unit()`, which gets the current lots’ valuations. Since the pick is a return one, then `_get_price_unit()` uses the original pick stock valuation layers and hence we were disabling the valuation on the original delivery then the layers don’t have the lot of the product valuated. Then the `move_cost` dict is not having the lot of the product while valuating it currently, hence the KeyError is thrown. This issue happens with the AVCO, FIFO because both valuation models depend on the already valuated lots values using the `_get_price_unit()`. **FIX**: Ensure `_get_price_unit()` properly handles cases where lot valuation was disabled at the time of the original move but is enabled later by adding lots of the return pick if not included in the valuation layers of original pick. opw-4662744 opw-4660094 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
This update makes keyboard navigation in the HTML editor behave correctly when content includes icons. Users can now move the cursor through and between icon-only content without unexpectedly skipping icons or whole paragraphs.
Original PR description
### Steps to reproduce: ISSUE 1: - Insert multiple icons (e.g., /image, icon) into a paragraph. - Place the cursor before the first icon. - Press the right arrow key, and notice that the selection…
### Steps to reproduce: ISSUE 1: - Insert multiple icons (e.g., /image, icon) into a paragraph. - Place the cursor before the first icon. - Press the right arrow key, and notice that the selection jumps to the second paragraph, skipping over the icons. ISSUE 2: - Create three paragraphs. - Insert icons into the second paragraph. - Place the cursor in the first or third paragraph and press the up/down arrow key it skips the second paragraph. - Set up following HTML: ```html <p><br></p> <p><br><span class="fa fa-glass"></span>[]</p> ``` - Press arrow up key. - Cursor will move to the first paragraph. ### Description of the issue/feature this PR addresses: - Pressing arrow key (left or right) caused the cursor to consecutively skip over all icons until a text node was reached. - Pressing up/down arrow keys would skip sibling block containing only icons. - Pressing the up/down arrow keys would skip over icons in the same block if the cursor is on a `<br>`. ### Desired behavior after PR is merged: - Add extra `\uFEFF` before and after icons to prevent them from being skipped. task-3045033
Fixed an issue where timesheet hours on prepaid subscription services were not counted as delivered work. This helps ensure subscription lines reflect the hours worked during each billing period, supporting more accurate invoicing and service tracking.
Original PR description
…mesheet **Issue** In a subscription, the qty delivered of a SOL with "Prepaid" invoicing policy wasn't updated when timesheets were added. **Steps to reproduce** 1. Have a service subscription…
…mesheet **Issue** In a subscription, the qty delivered of a SOL with "Prepaid" invoicing policy wasn't updated when timesheets were added. **Steps to reproduce** 1. Have a service subscription product with an invoicing policy "Prepaid/Fixed price" and creating a task on order. 2. Create a monthly subscription with a start date 15 days in the past 3. Add some timesheet hours on the task. 4. Run the "Subscription: generate recurring invoices" cron. - Actual: quantity delivered on the SOL stays at 0. - Expected: timesheet hours falling during the subscription period are added to the delivered quantity of the line. **Cause** Commit https://github.com/odoo/enterprise/commit/a6420bdacab3b9c9f440f48db3b442e6b6c7b655 added a new module overwriting the computation of the delivered quantitiy for recurring lines based on timesheets, for products with an invoicing policy `delivered_timesheet`. However, the computation is overriden for all timesheet lines selected by https://github.com/odoo/enterprise/blob/a6420bdacab3b9c9f440f48db3b442e6b6c7b655/sale_subscription_timesheet/models/sale_order_line.py#L11-L12 A second filtering is applied later https://github.com/odoo/enterprise/blob/a6420bdacab3b9c9f440f48db3b442e6b6c7b655/sale_subscription_timesheet/models/sale_order_line.py#L21 Which exluces products with an invoicing policy different than `delivered_timesheet` **Solution** For products with a "prepaid" invoicing policy, compute the delivered quantities the same way: the timesheets delivered during the subscription period. Note that as explained in a comment, `Side effect: It won't work for the first period if the invoice cron never run. (the next invoice date has never been incremented)` opw-4509495
Invoices paid by SEPA Direct Debit now correctly show the payment notice telling customers not to pay manually. This prevents duplicate payments and reduces confusion for customers and accounting teams.
Original PR description
**Steps to reproduce:** - Install Contacts, Accounting and l10n_be - Switch to a Belgian company (e.g. BE Company CoA) - In Accounting settings, activate "SEPA Direct Debit (SDD)" - Create a contact:…
**Steps to reproduce:** - Install Contacts, Accounting and l10n_be - Switch to a Belgian company (e.g. BE Company CoA) - In Accounting settings, activate "SEPA Direct Debit (SDD)" - Create a contact: * Country: Belgium * Bank Account: [a Belgian IBAN] - Go to "Accounting / Customers / Direct Debit Mandates" - Create a mandate for the created contact - Validate the mandate - Create an invoice for the created contact as customer - Confirm the invoice - Pay the invoice with "SEPA Direct Debit" - Print the invoice **Issue:** The information explaining that the invoice has been paid using direct debit and that the invoice should not be paid manually is not printed on the invoice. **Cause:** This information is printed if "sdd_mandate_id" field of the invoice is set. "sdd_mandate_id" is a related field to "origin_payment_id.sdd_mandate_id" field. However, since the refactoring on "account.payment", "origin_payment_id" is not set on an invoice anymore. It is just set on the journal entry linked to a payment. Therefore, we cannot rely on that field anymore to print the SDD mandate payment information. **Solution:** The "matched_payment_ids" field can be used instead. It's a Many2many field referring all payments linked to the invoice. If one of these payments has "sdd_mandate_id" set, the SDD mandate payment information is printed on the invoice. opw-4672191
This draft update appears to address the refund return flow when using barcode operations. It likely helps users process returns and refunds more reliably, reducing manual corrections in warehouse or point-of-sale workflows.
The document sharing widget now finds contacts much faster when users search for people to invite. This removes a major delay on large customer databases, improving the sharing experience without changing how users work.
Original PR description
Description ------------ Fix a performance issue in the partner search functionality used in the sharing widget. The problem was related to the PostgreSQL query planner choosing a suboptimal execution plan when using a limit of 4 records. With a very low limit of 4, PostgreSQL would choose to perform an index scan on the `complete_name` index instead of using the more efficient trigram indexes. This resulted in high I/O operations as it traversed the index from A until finding matches, causing significant performance degradation. The fix simply increases the limit to 8, consistent with other `name_search` operations, ensuring the query planner consistently chooses the trigram index path regardless of the search term. Benchmark ---------- On a database with over 8 digits count of partners, a non selective search of a partner (5 chars) took: | Before | After | Speedup | |--------|-------|---------| | 27.4s | 42ms | 652x | Reference --------- task-4686893
This update fixes how finance-related folders are organized across Documents, Accounting, and Sign, helping users find and manage financial paperwork in the right place. It reduces confusion in document workflows and supports smoother handling of accounting and signature-related files.