Daily updates from Odoo
Friday, April 4, 2025
19 changes
2 changes
Resolved issues and error corrections
Finance-related documents now use clearer folders and updated actions for items such as bills, bank statements, and files awaiting validation. This makes document handling more consistent and easier for teams to route, validate, and process.
Original PR description
New server actions and folders to manage To-validate, Validated/Bills, Bank Statement Files.
The VoIP module now avoids asking for a field that can already be determined automatically. This reduces friction for related workflows and makes testing or dependent customizations easier without changing the core user experience.
Original PR description
This is highly annoying for tests and dependant modules, while this field is used in 3 flows and can be easily deduced.
17 changes
Resolved issues and error corrections
This update removes an unnecessary warning shown when postponing replenishment rules created by the superuser. It reduces confusion for inventory users while preserving the corrected behavior from a previous fix.
Original PR description
Thanks to this fix: https://github.com/odoo/odoo/commit/8ad00b8ee6340dba1e027bb27a8f05489b4253a9 we can revert this one: https://github.com/odoo/odoo/pull/200777/commits/237feaee5fcf1e166bf39e78e8839b191f92c306 The pot file already deleted: https://github.com/odoo/odoo/commit/0361582de7c28bb4847a9c4dbaa712b67f4ca577#diff-4424c1629e21b466bb7af6ab0cb3a674d1bf3e75d93e7e76cf77870dc5bcc853R8693-L9114 opw-4628611
Odoo now safely ignores translation-control markers in web view templates during browser-side compilation. This prevents form and kanban views from failing when those markers are present, improving reliability without changing what users see.
Original PR description
Form and kanban view archs are compiled into owl templates. Those archs are translated server-side, before being sent to the client. They can contain `t-translation` directives (typically ="off" to…
Form and kanban view archs are compiled into owl templates. Those archs are translated server-side, before being sent to the client. They can contain `t-translation` directives (typically ="off" to disable translations). This tells the view processing in python not to translate the subtree. In the js compilers, that attribute is listed among the tolerated attributes for kanban archs, but not for forms. However, the cases are similar, so their should be not differences between the two. Moreover, since [1], compiled templates are wrapped into a ```xml <t t-translation="off"/> ``` node, s.t. terms aren't translated twice (once in python, and once in js, by owl). Instead of tolerating the `t-translation` directive in form view, this commit ignores it in all view compilers. This directive indeed makes sense, so it is valid to use it in kanban and form archs (then used by the view processing in python). But the view compilers in js must ignore it, so we simply remove it. [1] odoo/odoo#158759 Fixes runbot error-134670 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 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>
The editor now correctly enables AI and translation actions when users select normal text, even if the surrounding content includes protected elements such as a signature. This prevents valid selections in the email composer from being blocked unnecessarily.
Original PR description
**Problem**: If the selection does not include unsplittable nodes but the `commonAncestorContainer` contains one, the AI/Translation button will be disabled. **Solution**: Instead of relying on `commonAncestorContainer`, check only the traversed nodes to determine if the selection is valid. **Steps to reproduce**: 1. Open Full Composer with a signature. 2. Add text. 3. Select only the text you added. - **Issue**: The AI/Translation button is disabled. **opw-4649819** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
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
PayPal payment requests now leave out the company email field when no email is set, instead of sending an empty value that PayPal rejects. This helps avoid confusing payment integration failures for businesses with incomplete company contact details.
Original PR description
Since paypal does not allow empty fields to be sent, its better to add email only if it exists. Some customers find it confusing that paypal integration fails without proper feedback that the issue comes from the empty email in their company form. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents accounting tax updates from failing when expected repartition line details are absent. Instead of triggering an error, the system now skips that update safely, improving stability for affected accounting configurations.
Original PR description
When there are no repartition_lines we should skip updating them because it will cause IndexError: list index out of range. 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
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
The Gantt view compiler now safely accepts older translation markers while ignoring them during processing. This prevents unnecessary errors and keeps behavior aligned with the broader platform change, with no expected visible impact for users.
Original PR description
This commit is the counterpart of odoo/odoo#204833 which ignores the `t-translation` attributes in view compilers. As a consequence, this directive should no longer be in the list of accepted directives.
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.
This update corrects an automated website shop test for subscription product variants. It helps ensure the checkout flow for variant-based subscription products is reliably validated, reducing the chance of unnoticed issues reaching users.
Original PR description
Fixing the tour that has been introduce here https://github.com/odoo/enterprise/pull/75658/commits/c2d18cea5db278b5a3203c4d3646411fc9bbd450 runbot-110627