Daily updates from Odoo
Thursday, March 20, 2025
20 changes · 18.0
Resolved issues and error corrections
Odoo Discuss now consistently dims conversation names when they are muted, whether muting is applied globally or to a specific thread. This makes it easier for users to distinguish muted conversations while keeping inactive threads visible in the sidebar.
Original PR description
Description of the issue/feature this PR addresses: The goals of the PR are multiple: - The thread names in the discuss app are not muted when "mute all conversations" is enabled or when the specific thread is muted. - The threads with no new messages are invisible when the parent thread is muted Current behavior before PR: see above Desired behavior after PR is merged: The thread opacity is set to 50 whenever the thread is muted (by any of the two ways) task-4607160 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Global discounts on sales orders now exclude fixed taxes such as ecotaxes from the discounted amount. This ensures legally or operationally required fixed charges remain payable even when a product is fully discounted.
Original PR description
When applying a global discount on a sale order, the fixed taxe shouldn't be consider in a discount. It might be counter intuitive, as a x% discount isn't a discount on the total amount but of the total fixed taxe excluded amount, but is how it should be done. Consider a 100% discount with a product with an ecotax: the ecotax needs to be paid, the sale order can never go down under that amount, yet the product is 100% discounted. opw-4584784
This fix ensures payment references are generated correctly when a customer pays a single overdue invoice. It helps keep payment records accurate and easier to reconcile, reducing confusion for accounting teams.
Original PR description
computed by dedicated method _compute_reference when a single invoice is overdue.
The mail interface now hides the individual 'mute conversation' button when the user has already enabled 'mute all conversations'. This avoids showing an unnecessary option and makes notification settings clearer for users.
Original PR description
**Current behavior before PR**: The 'mute conversation' button was always visible, even when 'mute all conversations' was enabled. **Desired behavior after PR is merged**: The 'mute conversation' button is hidden when 'mute all conversations' is enabled task-[4630970](https://www.odoo.com/odoo/project/1519/tasks/4630970) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes how employee work entries are generated when a contract uses a fully flexible schedule. Time off is no longer calculated from a non-existent working schedule, helping avoid incorrect work entry records for affected employees.
Original PR description
In case of fully flexible working schedules, the leaves must not be computed from the working schedule (as there is none). The test for this bug is in the following related PR: https://github.com/odoo/enterprise/pull/80785 task-4623219
Changing the operation type on a manufacturing order now also updates the related stock move locations. This prevents materials and finished products from being routed through the wrong warehouse locations, improving inventory accuracy.
Original PR description
When picking type is changed, the locations on the moves should also be updated. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents users from changing products on sales order lines after the order has reached a state where those edits should no longer be allowed. It closes a loophole where using multiple browser tabs or simultaneous edits could bypass the normal read-only protection and cause unintended order changes.
Original PR description
If you open the same SO in two different tabs, confirming it in one tab while further modifying it in the other, the readonly restriction won't be considered and you might shoot yourself in the foot by modifying something you shouldn't have. This commit makes sure the product cannot be modified on order lines where it's not supposed to be possible (unless you try to be smart/dumb by opening it in two tabs, or two salesmen are modifying it separately). opw-4595008 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix preserves whether the chatter panel was open when users move between to-dos, including when opening a to-do from the activity view. It makes the To-Do app behave more consistently and avoids extra clicks for users who rely on the chatter.
Original PR description
Steps to reproduce: - Open To-Do app - Open a todo and click on chatter - Go back and open another todo - The chatter is closed by default Issue: - The chatter should be opened if opened earlier - If todo opened from activity view chatter is not opened Reason: - No logic to preserve the state if chatter. Solution: - Using local storage to store the state of the chatter and thus apply changes accordingly. task-4592501
This fix ensures combo products sold through Point of Sale are invoiced without unnecessary zero-value lines. It makes invoices clearer and helps avoid issues with electronic invoicing requirements.
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
The stock replenishment flow now warns users when they try to snooze an automatically created replenishment rule that cannot keep the snooze setting after refresh. This prevents confusion where an item appears hidden at first but reappears because the snooze date was not preserved.
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”
- Go to Operations > Replenishment:
- An orderpoint is created for “P1”
- Click on the Snooze button:
- Snooze for 1 day
- Snooze date: today
- The orderpoint for "P1" becomes invisible thanks to the “Snooze” filter
- Refresh the page
Problem:
The snooze filter is correctly applied, but an orderpoint for "P1" is still visible. This happens because the old snoozed orderpoint was unlinked, and a new one was created without the snoozed_until field set.
https://github.com/odoo/odoo/blob/18.0/addons/stock/models/stock_orderpoint.py#L596-L599
opw-4628611Forum page links used for search and sharing metadata now include the correct language setting and handle redirected URLs more reliably. This helps visitors and search engines land on the right localized forum content, including reply links with page anchors.
Original PR description
Previously, the `lang` parameter was missing from the URL, and URLs were not correctly updated when a 308 redirect was present. This commit ensures that the `lang` parameter is added and that URLs are properly converted after a 308 redirect.
A test in the website tour tooling has been temporarily skipped because it was producing inconsistent results. This helps keep automated checks reliable while the team redesigns a better way to detect this type of issue.
Original PR description
We're skipping the unit test to check for indeterminisms with mutations. Indeed, the strategy for detecting this kind of indeterminism needs to be rethought, and for the moment, this test is failing in an indeterministic way (lol) in master. 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 fixes a problem where some invoice pages could fail to load when installment information was unavailable. The invoice template now handles missing or empty installment status safely, improving reliability for customers viewing invoices online.
Original PR description
Previously, when installment_state was None,
the template raised an error because None in ('next', 'overdue') is not a valid operation.
This change ensures safe access to installment_state using .get(), preventing potential errors when
the key is missing or its value is None.
**Description of the issue/feature this PR addresses:**
The invoice template was raising an error when installment_state was None, as the condition None in ('next', 'overdue') is invalid.
**Current behavior before PR:**
If installment_state is None, the template crashes due to an invalid comparison.
**Desired behavior after PR is merged:**
The template now safely retrieves installment_state using .get(), preventing errors when the key is missing or its value is None.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prKanban card footers now display multiple items on additional lines instead of spilling into neighboring cards. This keeps card content readable and prevents visual overlap when many footer items are shown.
Original PR description
Before this commit, when the footer had many items, those were not wrapped so, the overflew under the next card. After this commit, elements inside the footer are wrapped, and they overflow on a next line. task-4609581 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
The Project Gantt view now opens correctly even when a user's working schedule is empty. This prevents users from being blocked by an error when viewing project timelines for teams with flexible or missing schedules.
Original PR description
…with empty working schedule **Issue** When setting the working schedule to empty, opening the Gantt view is not possible as an error is displayed Steps to Reproduce: 1. Login as Mitchell Admin 2.…
…with empty working schedule **Issue** When setting the working schedule to empty, opening the Gantt view is not possible as an error is displayed Steps to Reproduce: 1. Login as Mitchell Admin 2. Install Employees and Project apps 3. Go to Employees > Contracts 4. Select a contract from Mitchell Admin 5. Empty the Working Schedule Field 6. Set Planning or Attendances as work entries > Save 7. Go to project app 8. Select a project 9. Switch to the Gantt view 10. An error message appears 11. Expected Behavior: Gantt view should be displayed without errors. Actual Behavior: Gantt view is not displayed, and an error message appears. **Root Cause** The issue occurs because before processing the work intervals, the system checks for the presence and uniqueness of a calendar. If a user has no assigned schedule, the function attempts to process a None value, which results in an error when calling ensure_one in _attendance_intervals_batch. **Fix** To prevent the error, users without a working schedule are skipped when computing valid work intervals. If a user has no assigned schedule, they will not be included in _work_intervals_batch, ensuring the function executes correctly without attempting to process an empty calendar. opw-4462241
Batch payslip generation no longer fails for employees on fully flexible schedules when their contract has no working schedule. The system now checks each payslip's employee timezone correctly, preventing an error that could block payroll processing.
Original PR description
The bug has been introduced by this commit : https://github.com/odoo/enterprise/commit/4cba2fb58560a95d5ce93eb6e6c1483ef0428ba5 The bug appears when trying to generate batch of payslips with fully flexible working schedules. When the contract linked to the payslip has no working schedule, the check of the timezone is done on the employee linked to the payslip. The fix only consists on taking the employee of each slip instead of taking the employee on self, which was causing a 'singleton expected' error. This commit also contains a test for the related fix in the following related PR: task-4623219
Documents kanban cards once again display tags that have no assigned color, preserving the experience users already expect. The update also includes internal cleanup and test modernization for the Documents area, helping keep future changes safer without changing day-to-day workflows.
Original PR description
Even though it's been commonplace in Odoo for a while, tags (or more precisely facets) with index-0/False color where still shown on Documents kanban cards. This should remain the case functionally as users are not expected to go and change the color of all their tags, nor can we decide for them at upgrade (and it'd be too late for many as well). Task-4645015 Also, cleaning up some test stuff for hoot. See details in individual commits. Task-3861500
This update fixes internal tests for Project Enterprise scheduling so they no longer incorrectly depend on the timesheet feature being present. It helps keep quality checks stable and reduces the chance of false failures during development or releases.
Original PR description
Same logic as: https://github.com/odoo/enterprise/pull/79947 rb-145524 rb-145525
Invoice reports now display the authorized signatory image without stretching it to full width. This preserves the signature’s original proportions, making printed or shared invoices look more professional and accurate.
Original PR description
The authorized signatory image is resized and loses it's aspect ratio. To fix, the w-100 (100% width) class is removed. OPW-4586108
This fix makes online bank connection records visible when they include accounts for a company the user can access, even if the connection itself belongs to another company. It helps multi-company users find and manage the relevant bank synchronization links without losing access when switching companies.
Original PR description
Description of the issue/feature this PR addresses: In a multi-company setup, account.online.link records are only visible based on their own company_id. However, these records can have related…
Description of the issue/feature this PR addresses: In a multi-company setup, account.online.link records are only visible based on their own company_id. However, these records can have related account_online_account_ids that belong to different companies. As a result, when switching to a different company, users cannot see account.online.link records that have child accounts in that company. Current behavior before PR: - account.online.link records are only visible if their company_id matches the user's active company. - If a link has account_online_account_ids in different companies, users in those companies cannot access the parent account.online.link. Desired behavior after PR is merged: - account.online.link visibility is determined by the companies of its related account_online_account_ids. - If an account.online.link has accounts (account_online_account_ids) linked to a company the user has access to, the record will be visible. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr