Wednesday, October 1, 2025
16 changes · 18.0
Enhancements to existing features
This update makes it easier for custom Odoo modules to adapt how product stock valuation information is calculated. It is an internal improvement that supports more flexible implementations without changing day-to-day user workflows.
Original PR description
FWP of https://github.com/odoo/odoo/pull/160201 cc @pfertyk @svs-odoo --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222410
Resolved issues and error corrections
This fix narrows a checkout test so it focuses on confirming public access for click and collect orders. It reduces inconsistent automated test behavior where very fast test steps could accidentally create two orders instead of reusing the first one, helping keep future updates safer and more dependable.
Original PR description
Tours are too fast for imitating the user actions that led to sometimes creating 2 orders in parallel instead of reusing the first created. The test was added for b395f984b13eb83310024b9fa94d7822211ef8c1 fix, so with this commit, we keep the test more specific to the fix and avoid inconsistent behavior.
This fixes the stock quantities list so regular stock users no longer see every product highlighted in red. Red highlighting now appears only for products that have an expired removal date, making the list easier to read and helping users focus on items that need attention.
Original PR description
Description of the issue/feature this PR addresses: For stock users (not admins), the stock quantities list view display red lines for every product. Current behavior before PR: <img width="2243" height="217" alt="image" src="https://github.com/user-attachments/assets/330c591c-6ef4-46cb-8336-fa39fb483333" /> Desired behavior after PR is merged: Red lines are only displayed for products with a removal date and a removal date < current date <img width="2241" height="290" alt="image" src="https://github.com/user-attachments/assets/fe37adc7-e736-447e-a21e-e2fae984e074" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Swedish domestic payment files will now include the creditor bank agent information when required. This helps ensure payment files meet Swedish banking expectations and reduces the risk of payment processing issues.
Original PR description
CdtrAgt should not be skipped when generating swedish domestic payments.
Customers viewing an online order that includes a manufactured product will no longer see the same manufacturing date twice. This keeps the order portal cleaner and avoids confusion when checking order and production details.
Original PR description
**Steps to reproduce:** 1.Install `website_sale` and `sale_mrp`. 2.In settings, enable `multi-route` and `unarchive` the Replenish MTO route. 3.Create a product with routes -> `Replenish MTO` and…
**Steps to reproduce:** 1.Install `website_sale` and `sale_mrp`. 2.In settings, enable `multi-route` and `unarchive` the Replenish MTO route. 3.Create a product with routes -> `Replenish MTO` and `Manufacturing` then publish it on the website. 4.Buy the product from the website and make the payment. 5.Go to My Account → Your Orders → Open your sale order. 6.In the Manufacturing section, the date appears twice. **Issue-** <img width="604" height="186" alt="image" src="https://github.com/user-attachments/assets/e4164564-8555-4005-8282-20e6f5de7e55" /> - Date found twice in Portal View of sale order **Cause-** https://github.com/odoo/odoo/blob/097c04156517bd97a2789bde22ffd0c69c0bf6bf/addons/sale_mrp/views/sale_portal_templates.xml#L18-L27 - Here using same field two time one it with condition and other is without condition so in some case when condition satisfied then same field are coming twice **Solution-** - Remove Conditional field because no meaning of using same field inside and outside of the condition **opw - 5096009** Forward-Port-Of: odoo/odoo#227997
This fix ensures the mailing list merge wizard correctly identifies the destination list when starting a merge. It prevents an error during merge setup, making list consolidation more reliable for marketing teams.
Original PR description
When merging mailing lists, the logic for pre-filling the destination list
ID ('dest_list_id') was incorrectly retrieving and checking 'src_list_ids'
(source lists) instead of the list of potentially active/destination IDs.
This change modifies the assignment to use 'dest_list_id' (or the active
context IDs) for determining the default value, resolving an error when
initiating the merge wizard.
Closes #228958
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-prFixes an issue in the HTML editor where the color picker closed unexpectedly when previewing background colors for a table cell. This keeps the editing flow stable so users can choose table cell colors without interruption.
Original PR description
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if…
Problem: When applying a background color to a `td`, the color picker dismisses unexpectedly. Cause: After c810b0c17b2f882b0ab5d073ba38464bffb0617e, we rely on the class `o_selected_td` to check if we are in a selected `td` to keep the toolbar open. However, in another fix (254efd86cd1ce871807fdc25479ebc5beeb4eab3), we removed that class during the color preview operation. Previewing a color on a `td` triggers a selection change, which runs `shouldBeVisible`. Since `o_selected_td` is not found, the toolbar closes along with the color picker. Solution: Update https://github.com/odoo-dev/odoo/commit/254efd86cd1ce871807fdc25479ebc5beeb4eab3. A better fix is to use `o_selected_td_bg_color_preview` which will undo the `box-shadow` when we preview a color. Steps to reproduce: 1. Add a table. 2. Select a cell. 3. Apply a background color. 4. Select the cell again. 5. Hover a color to preview. → The color picker dismisses once a color is hovered. opw-5066309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The accounting discount allocation settings now allow other income and other expense accounts to be selected. This fixes missing account options so businesses can configure discounts more accurately for their accounting setup.
Original PR description
With this PR: - Updated the domain of discount allocation fields to include `income_other`/`expense_other` account types. Task-5121917
Image changes made in the HTML editor now return to their original state with a single undo action. This makes editing content more predictable and reduces frustration when correcting image rotation, resizing, or positioning.
Original PR description
**Current behavior before PR:** - When rotating, resizing, or dragging an image using the transform container, pressing Ctrl+Z did not revert the image to its initial state (when the transform container was opened). - Instead, it required multiple undo operations to return to the initial state. **Desired behavior after PR is merged:** - Pressing Ctrl+Z now correctly reverts the image to its initial state in a single undo, after a transformation. task-5114320
This update adjusts an internal sales test so it uses the configured sales confirmation email template instead of assuming a fixed one. This helps ensure the test reflects real customer configurations and reduces the risk of false test results when email settings are customized.
Original PR description
The email template for the sale confirmation can be changed through the config parameters so it's better to read it directly from there instead of having it hard-coded. This now correctly tests the function it's testing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226240
This removes a redundant database rule in the Discuss channel setup that could conflict with newer PostgreSQL versions. It helps future Odoo databases migrate or restore cleanly on PostgreSQL 18, without changing how users work with Discuss channels.
Original PR description
The field is `required=True`, which automatically sets it `NOT NULL` (if possible). The constraint does not do anything useful. Furthermore, pg18 promoted `NOT NULL` to "real" named constraints[1],…
The field is `required=True`, which automatically sets it `NOT NULL` (if possible). The constraint does not do anything useful.
Furthermore, pg18 promoted `NOT NULL` to "real" named constraints[1], and the constraint was created following the pattern pg uses, so trying to migrate a database to pg18 (either upgrading a cluster from 17 to 18 or restoring a db on a pg18) the restoration fails with
duplicate key value violates unique constraint "pg_constraint_conrelid_contypid_conname_index"
The easiest fix is to delete the constraint in the upstream DB if possible (I didn't find a way to filter out constraints from pg_dump or pg_restore, though it should be possible to filter it out from a "plain" dump by hand).
AFAIK Odoo does not generally drop constraints so I don't think this will fix existing databases, but it at least makes future databases compatible with pg18.
[1]: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=a379061a22a8fdf421e1a457cc6af8503def6252
Forward-Port-Of: odoo/odoo#229274This fixes an automated accounting test that could finish before the merge wizard had fully completed its final step. The change improves test reliability, helping prevent false failures in quality checks without changing user-facing accounting behavior.
Original PR description
The last check of the tour is always true. So it sometimes closes too early. Wait really for the last operation for the last check runbot-error-108440
Fixes an issue that could make the mail app crash when a new message arrived while the browser tab was not active. This helps keep messaging reliable and avoids unnecessary disruption for users.
Original PR description
Backport of #213607. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The test data for Hong Kong payroll accounting now includes the required leave allocation records. This prevents automated tests from failing during validation and helps keep payroll-related updates reliable.
Original PR description
Issue: Unit tests are failing because test data was created without leave allocations, leading to validation errors. Fix: Added leave allocation data for time off types which requiring allocation in some tests. build_error-230409
The translate option no longer appears on messages that have no text, such as tracking updates or attachment-only messages. This avoids showing users an action that cannot do anything and makes the messaging interface clearer.
Original PR description
**Current behavior before PR:** The translate action was shown on all messages, including those with an empty body such as tracking updates or messages containing only attachments. Clicking the translate action on these messages had no effect. **Desired behavior after PR is merged:** The translate action is hidden for messages with an empty body. Only messages containing text display the translate option. **Task-5106303** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an internal automated test for the mail emoji picker so it searches correctly each time instead of accidentally combining two searches. The change helps prevent random test failures and supports more stable delivery of mail-related updates.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/223564 PR above adapted test with emoji picker with translations by using the emoji picker search twice. However `insertText()` is used a 2nd time without the `replace` option. As a result, the 2 search texts are concatenated, and produce a search term that should find no emoji. The test passes sometimes because of the asynchronous rendering and the 2nd emoji being visible on the 1st search. This commit fixes the issue by using `replace: true` on 2nd insert of test, so that this is a fresh search that matches the emoji being searched.