Daily updates from Odoo
Thursday, September 25, 2025
14 changes · 17.0
Resolved issues and error corrections
Fixed activity date filters so completed activities that are kept for history are included in search results. This helps users find records such as CRM opportunities when filtering by an activity's completion date, reducing missing results in day-to-day follow-up and reporting.
Original PR description
## Issue: ## When using a Custom Filter on Activities > Date Done on any record like in the CRM App, the inactive activities where not included in the search domain The keep_done option on the…
## Issue: ## When using a Custom Filter on Activities > Date Done on any record like in the CRM App, the inactive activities where not included in the search domain The keep_done option on the activity_type should be activate to keep old activities The same issue occured in Activities in the Settings App in Debug Mode, with the Custom Filter on Date Done ## Cause: ## The domain in the search doesn't include inactive activities There is a lot of active test in the query ## Fix: ## When there is `date_done` in the filtered domain in functions `search_fetch()` and `_search()` in `mail_activity_mixin`, we add `active_test=False` to self context We also do tha same in the `_search()` of `mail_activity` to handle the Settings case The `search_fetch()` override is needed for App like CRM to make the full query to be executed with the `active_text` context or some informations are lost If this method doesn't include the context, the lead appeared but the linked Activities aren't fetched completely ## Limitations: ## Fixing that way can cause to get too many elements, because it will remove all the (active=True) from the all query This can lead to display inactive or archived leads in CRM, or any archived and inactive data with done activities ## Steps to reproduce: ## - Open the CRM App - Go to Configuration > Activity Types - Select Call - Toggle Keep Done to enable - Go in the CRM Pipeline - Mark any Call activity as Done - Add a Custom Filter - Set to Activities > Done Date (keep the default value for today) - Apply the filter using the Add button - Before the fix, there is nothing in the filtered pipeline opw-4744974
This fix swaps two Mexican DIOT report columns so exempt imports and exempt amounts appear in the correct positions. The values were already calculated correctly, but the corrected ordering helps ensure exported reports match the expected official layout.
Original PR description
Description of the issue/feature this PR addresses: The description of the columns “exempt imports” and “exempt” is somewhat ambiguous, so when developing the diot, there was a small error in the order of the columns. The values are calculated correctly, but columns 49 and 50 were inadvertently swapped. Current behavior before PR: “exempt” is column 49 “exempt imports” is column 50 Desired behavior after PR is merged: “exempt” is column 50 “exempt imports” is column 49 Task-id: 5096808 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Mexican DIOT report export now places the “exempt imports” and “exempt” values in the correct columns. This fixes a formatting issue in the downloaded TXT file so businesses can submit reports with the expected column layout, while the underlying calculated values remain unchanged.
Original PR description
The description of the columns “exempt imports” and “exempt” is somewhat ambiguous, so when developing the diot, there was a small error in the order of the columns. The values are calculated correctly, but columns 49 and 50 were inadvertently swapped. This Pr changes the order of the columns in the downloadable file (txt) and corrects the tests due to the change. Task-id: 5096808 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed an issue where users could see raw HTML text instead of a properly formatted help message when no bank transactions were found. This makes the bank journal experience clearer and more professional when fetching transactions or changing filters.
Original PR description
Before this commit: - The help message displayed raw HTML tags when no transactions were returned after clicking 'Fetch Transactions' in the Bank journal. - Also, removing a filter (without reloading) and applying another filter that resulted in no matches, the same issue occurred. After this commit: - The help message is now consistently rendered with proper markup task-4942234
Point of Sale self-order sessions now remove their temporary numbering data when a session is closed. This helps keep the database tidier over time and avoids buildup from repeated sessions, with no expected change to the checkout experience.
Original PR description
to avoid having too many postgres sequences, this make sure the sequence used by the pos session is cleaned up after being closed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes a purchase stock test use the intended type of product regardless of other installed localization modules. It helps prevent false test failures and keeps quality checks reliable without changing day-to-day business workflows.
Original PR description
The test `test_receive_negative_quantity` is failing when run with the `l10n_ke` module installed. The failure occurs during the validation of the picking created from a negative-quantity purchase…
The test `test_receive_negative_quantity` is failing when run with the `l10n_ke` module installed. The failure occurs during the validation of the picking created from a negative-quantity purchase order. The test assumes the product is of type `consu`, which bypasses stock reservation. However, the following [XML default](https://github.com/odoo/enterprise/blob/17.0/l10n_ke_edi_oscu_stock/data/ir_default.xml#L5) in l10n_ke forces the product type to `product` (stockable), triggering reservation logic. Since the ordered quantity is negative, no reservation occurs, and the `_sanity_check()` fails with: `You cannot validate a transfer if no quantities are reserved.` We fix this by explicitly setting a product with the type `consu` in the test. This ensures that reservation is skipped regardless of which modules are installed or what defaults they apply. runbot:[108147](https://runbot.odoo.com/odoo/error/108147) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Helpdesk ticket lists now sort ticket references in a way that matches how users expect numbers to be ordered. This makes it easier to find the oldest or newest tickets once ticket counts reach 100 or more.
Original PR description
**Issue** With the default `helpdesk.ticket` sequence, once users reach 100 tickets, ordering tickets by `ticket_ref` in the list view is unintuitive as it is a Char field (so '11' > '100') and the results are not useful if the user wants to see the oldest/newest tickets. opw-4891916
Product searches in purchase order lines now handle product references without being affected by letter casing. This helps users find the right products more reliably and reduces delays or confusion during purchasing.
Original PR description
This commit fixes the issue where products search in PO line was case sensitive. Before this commit: Search on `product.product` (which is used in PO lines) was case sensitive if the search term matches exactly the `default_code` or `barcode` because it used exact equal `=` in the search matching. After this commit: Search on `product.product` is now case insensitive when matching with `default_code` (using `ilike`) and case sensitive when matching with `barcode` (using `like`). Task-5080161
Scanning a product or lot in the Barcode app now opens the same kanban-style view used elsewhere in barcode workflows. This makes the experience more consistent and helps warehouse users avoid switching from an unexpected list view.
Original PR description
This commit is to show the kanban view as a default when scanning a product or a lot in barcode. Before PR: All views in barcode are in kanban view except when scanning a product or a lot, it appears in list view. After PR: Now barcode also shows kanban view when scanning a product or a lot.
Project users can no longer create new task stages from the task list when they do not have the required permissions. This helps keep project workflows controlled and prevents unauthorized changes to task stages.
Original PR description
Steps to reproduce: - Go to a project - Open the task list view - Select a task - In the `Stage` field, attempt to create a new stage Issue: - Project users were able to create new task stages from…
Steps to reproduce: - Go to a project - Open the task list view - Select a task - In the `Stage` field, attempt to create a new stage Issue: - Project users were able to create new task stages from the task list view, despite not having the required permissions. Cause: - The `_default_user_id` method assigns the current user as the owner `user_id` of a new stage only when `default_project_id` is not present in the context. As a result, the method returned the current user’s ID, unintentionally making them the owner of the stage. This allowed project users to bypass the intended access rules and create new stages. Solution: - Use the `no_create` option for users outside the project manager group to prevent them from creating new stages. - Updated the `stage_id` field in the task list view to explicitly include `default_project_id` in the context, ensuring proper access control of that stage. task-4628666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where borders added to images in email designs disappeared after sending. Email recipients will now see image borders as intended, improving consistency between the editor preview and delivered emails.
Original PR description
Problem: When adding a border to an image and sending an email, the border is not visible in the received email. Solution: Ensure a `border-style` is set if missing, otherwise keep the existing one. Steps to reproduce: - Open email marketing. - Add an image snippet. - Add a border to the image. - Send the email. - The received image has no border. opw-5004824 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Customer payments are no longer incorrectly included in Australia’s Taxable Payments Annual Report gross paid totals. This prevents overstated report amounts and helps businesses produce more accurate TPAR submissions.
Original PR description
Customer payment shoudn't be included in the TPAR report Steps: - Unarchive 10% TPAR tax - Make a bill for a partner X, set 10% TPAR tax on the invoice line and confirm - Create and confirm a customer payment for partner X - Go to 'Taxable Payments Annual Reports (TPAR)' -> The column 'Gross Paid' includes the customer payment Before this commit, we took all line from bank or cash journal to calculate the gross paid value. With this commit, we also restrict the lines to include only the one with 'asset_current' or 'liablility_current' account type. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/5045457) opw-5045457
This update avoids repeating the same kit quantity calculations for product variants that share one bill of materials. It can greatly speed up product list loading for businesses with many automatically generated variants, reducing some searches from tens of seconds to around one second.
Original PR description
**Issue -->** When a kit/phantom BOM is used, quantity calculation for a product is overridden in `_compute_quantities_dict()`. During this override, BOMs are mapped to either `product.product`s, or…
**Issue -->** When a kit/phantom BOM is used, quantity calculation for a product is overridden in `_compute_quantities_dict()`. During this override, BOMs are mapped to either `product.product`s, or when none is specified for a BOM, to a parent `product.template` instead. This causes redundant quantity computations in the case where a BOM is mapped to a `product.template` with many variants which all in turn share one BOM record. This can happen when variants configured to be automatically created for product attributes, for example. At scale the redundant quantity computation becomes costly when repeated for every `product.product` under a single `product.template`, when all of them share the same BOM. **Solution -->** As quantities are calculated, we can cache the results of the costly `explode()` method in cases where a product's BOM is associated only with a `product.template` record, and not a `product.product`. Due to how BOM kits are identified and mapped by the domain in `_bom_find()`, any product which has been mapped to a BOM record associated only with its parent `product.template` will share an identical quantity calculation. This eliminates unnecessary recalculations for product variants which share the same BOM record. **Benchmark -->** `web_search_read` on `product.template` with several records having ~1,000 `product.product` variants | Before Fix | After Fix | |--------|--------| | ~24-40s | ~1s | opw-5051773
This fix prevents certain existing translations from being deleted during upgrades when they were not previously marked as translated. It helps businesses recover and keep translated field content after moving from older Odoo versions, reducing unexpected English text appearing in multilingual databases.
Original PR description
After upgrading Odoo from earlier versions to versions >= Odoo 15.5, you will notice that some fields that were translated before, are now in English. This is likely because those translations were…
After upgrading Odoo from earlier versions to versions >= Odoo 15.5, you will notice that some fields that were translated before, are now in English. This is likely because those translations were not marked as `state='translated'` in the DB. However, the missing translations were removed from the `_ir_translation` table during the upgrade. With this patch, we still keep the conservative behavior of only auto-translating fields marked as `state='translated'` in the DB (which is still probably wrong, because user translations should remain the same; if Odoo was displaying translated text before the upgrade and it is not after it, that's probably a bug; but that's another story...), but we no longer delete the other fields. This way, you can still mark them as translated after the upgrade and use the new tooling provided in https://github.com/odoo/upgrade-util/commit/fd578e31973596bf7f283ea5c6ebbdfd3314f8bc to recover those translations after the upgrade. @moduon MT-11570 cc @aj-fuentes Forward-Port-Of: odoo/odoo#228404