Friday, March 6, 2026
25 changes · 19.0
Resolved issues and error corrections
This fixes the invoicing dashboard so date-based data matches against the proper Invoice Date field instead of a generic Date field. It also restores other field matches that were accidentally removed, helping dashboard figures filter and display more accurately.
Original PR description
The Date field matching is wrong. Since we are in an Invoicing Dashboard, the best field to match would be "Invoice Date" anyway rather than "Date" Other field matchings were deleted by mistake with commit c6ad6e87bd0d1c64f7a983f9b067b9e460cb998a reported by LUVG opw-5462246 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where collaborator avatars in shared notes stayed stuck on the first line of a checklist instead of showing the current editing position. Users collaborating on to-do notes will now see each other's focus more accurately when moving through indented checked lists.
Original PR description
Since [1] when using collaboration, the position of the avatar for list items is always displayed on the first line - instead of following the user's focus. This commit fixes this by only applying the patch of [1] when inside an embedded component. Steps to reproduce: - Go to a "To do" note - Add a checked list with indented items - Access the same note from another window - Move around the checked list and observe avatar in other window => Avatar remained on first line while moving around list items [1]: https://github.com/odoo/odoo/commit/9863cb25d6dfdba224897f21634bdaaf3eca91a7 task-5930388 Forward-Port-Of: odoo/odoo#248438
This fix removes an unnecessary browser console warning that appeared on website pages when visitors opened them without a URL section link. It keeps website behavior unchanged while reducing noise for site administrators and developers monitoring page health.
Original PR description
Since [34df6f8d], a warning `Empty string passed to getElementById().` appears on every website page when there is no hash in the URL. That's not the case anymore after this commit. [34df6f8d]: https://github.com/odoo/odoo/commit/34df6f8d6efc879bef00228b19df04db6c884089
This fixes an issue where cancelling a purchase order created from a manufacturing order could make the manufacturing order's purchase link disappear. The change keeps the relationship visible so users can still trace procurement activity after cancellation.
Original PR description
* Currently when a PO generated from MO, after that we cancel that PO, the MO statsbutton disappear, * Reason: because we remove move_dest_ids out of po line so the link is missing 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 Point of Sale screen now handles very long preset names so the preset button does not take over the action area. This keeps important register buttons visible and usable when businesses configure takeout, delivery, or member presets with lengthy names.
Original PR description
# How to reproduce - Enable Take out / Delivery / Members in PoS Configuration - Create a preset with a very long name and set it as default - Open the register # The problem The preset button takes too much space and hide the other buttons opw-5938578 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes several HTML editor automated tests more stable by waiting for the actual interface behavior instead of relying on timing that can vary on slower test systems. It helps reduce false test failures, improving confidence in releases without changing the user-facing editor experience.
Original PR description
Forward-Port-Of: odoo/odoo#252130 Forward-Port-Of: odoo/odoo#251122
Timesheet calendar entries now show negative time values accurately, matching the way they appear in list views. This avoids misleading displays such as showing minus 45 minutes as minus 1 hour 15 minutes, helping users interpret timesheet adjustments correctly.
Original PR description
The calendar view used Python's `divmod` for time calculations, which renders -45 minutes as -1h 15m. This representation is misleading for timesheet entries, while the list view already displays the values correctly. Adjust the calendar view logic to ensure consistent and accurate handling of negative durations. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Refunds created from the Point of Sale backend now use the same positive line prices as refunds created through the user interface. This keeps refund records consistent, reducing confusion and potential reporting discrepancies.
Original PR description
Before this commit, when creating a refund from backend, the refunded lines had negative price, which is not the case when creating a refund from the UI. This commit makes sure that the refunded lines have positive price. opw-5459378 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue in the website editor where hidden popups could still affect drag-and-drop editing, creating extra placement areas or reappearing after unrelated changes. Popup visibility now stays consistent while editing, making page building more predictable for users.
Original PR description
## Description There was a desync issue with popup states between normal mode and edit mode. That caused: - Hidden popups contributed extra dropzones during drag-and-drop - Hidden popups lost…
## Description There was a desync issue with popup states between normal mode and edit mode. That caused: - Hidden popups contributed extra dropzones during drag-and-drop - Hidden popups lost `d-none` class after dropping unrelated snippets ## How to reproduce ### Bug 1: extra dropzones from hidden popup desync 1. Enter website edit mode. 2. Drop popup in the page 3. Drag another snippet as you were adding it to the page 4. An additional dropzone appears below the invisible popup snippet ### Bug 2: hidden popup loses `d-none` class 1. Enter edit mode. 2. Drop a popup. 3. Close it so `.s_popup` gets `d-none`. 4. Drop any other snippet on the page arbitrarily. 5. Popup loses `d-none` class. ## Expected behavior after fix - Popup hidden/shown state remains stable across editor refreshes and snippet drops. - Drag-and-drop no longer creates extra dropzones from hidden popups. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250625
The Point of Sale setup now automatically fills the outstanding account for the default Card payment method. This prevents an incomplete configuration that could confuse users when reviewing or editing payment methods after installing accounting features.
Original PR description
Steps to reproduce: 1. Initialize a new database with 'point_of_sale' and 'accountant' modules. 2. Go to Configuration > Payment Methods and open the 'Card' payment method. 3. Observe that the 'Outstanding Account' field is empty, despite being required in the view for bank journals. The issue occurred because the '_create_journal_and_payment_methods' method created the default 'Card' payment method without specifying an 'outstanding_account_id'. While the ORM allows this (as the field is only required in the view), it creates an inconsistency between automated setup and manual configuration. Solution: Modify '_create_journal_and_payment_methods' to automatically assign the 'outstanding_account_id' during creation. It follows the pattern used in the payment method's onchange logic by fetching the default debit account from the chart template or falling back to the company's transfer account. opw-5914536
The HTML editor test now waits for the color selector element to appear before continuing. This reduces false test failures and helps keep development validation stable without changing user-facing behavior.
Original PR description
This commit fixes the test by using `waitFor` instead of `delay` to properly wait for the element to be mounted in the DOM. runbot-241250 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue in the HTML editor where Safari could unexpectedly move the cursor when users pressed the space bar. The change keeps text entry predictable, reducing editing frustration for users working in Safari.
Original PR description
Problem: In Safari, pressing space sometimes can move the selection unexpectedly. Cause: `node.normalize()` in Safari doesn't work in the same way as in Chrome or Firefox. When the selection is on a…
Problem: In Safari, pressing space sometimes can move the selection unexpectedly. Cause: `node.normalize()` in Safari doesn't work in the same way as in Chrome or Firefox. When the selection is on a text node adjacent to another and we normalize, the two text nodes will be merged but the selection will move to the parent element instead of the correct position inside the new merged text node. Example: before normalize: `<span>"ab""c[]d"</span>` after normalize: `<span>"ab[]cd"</span>` (expected) vs `<span[]>"abcd"</span>` (Safari) Solution: Instead of using `normalize`, we manually merge adjacent text nodes and properly restore the selection by computing the absolute offset before the merge and restoring it to the correct position in the merged text node. Steps to reproduce: - Have two adjacent text nodes inside a `span`. - Put the selection on the second text node in the middle. - Press space. - The selection will move to the end of the text. opw-5956709 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252299 Forward-Port-Of: odoo/odoo#251918
Fixes Romanian e-invoicing so customers without a VAT number receive the default VAT value even when they have a company registry number. This prevents incorrect customer tax information in generated electronic invoices.
Original PR description
Problem --------- In a recent fix, in the Tax Scheme customer node, the scheme type was recomputed correctly depending on the companyID node. However, during the fix, a condition was wrongly introduced. This will lead to some issue: when a customer has no VAT, he should be given the default VAT. However, due to condition, the customer gets given the Default VAT only when he does not have a vat NOR A COMPANY REGISTRY. Solution --------- Remove the condition no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252475
This update resolves an issue where deleting a workspace (folder) linked to a folder setting would trigger a database error. The fix prevents these folders from being deleted during the system's automatic cleanup process, ensuring data integrity and stability. This improves the reliability of the Documents module.
Original PR description
When a workspace(folder) linked to a folder setting is moved to the trash and the ``Base: Auto-vacuum internal data`` cron runs, a traceback will generate. Steps to reproduce the error: - Install…
When a workspace(folder) linked to a folder setting is moved to the trash and the ``Base: Auto-vacuum internal data`` cron runs, a traceback will generate. Steps to reproduce the error: - Install ``documents_account`` module - Go to Documents > Configuration > Files Centralization > Enable Accounting > Select any workspace > Save > - Click on Journals > Create a new > Select any Journal > Create a Workspace A > Save - Go to Documents > Click on Workspace A > Actions > Move to trash - Run the ``Base: Auto-vacuum internal data`` cron Traceback: ```py ForeignKeyViolation: update or delete on table "documents_document" violates foreign key constraint "documents_account_folder_setting_folder_id_fkey" on table "documents_account_folder_setting" ``` solution: override the ``_get_gc_clear_bin_domain`` method to exclude folders linked to folder settings, preventing their deletion during the garbage collection. sentry-7193540869 Forward-Port-Of: odoo/enterprise#109434 Forward-Port-Of: odoo/enterprise#104875
This update fixes an issue in Odoo's Web Studio where dropdown menus with tags would shrink unexpectedly. Now, the dropdowns always occupy the full width and the caret is correctly aligned, ensuring a consistent and user-friendly experience. The visual appearance of the popover options remains unchanged to maintain tag visibility.
Original PR description
Prevents the SelectMenu from shrinking the dropdown input in studio due to tags on the same flex div BEFORE: - The dropdown width was not fixed. - Dropdown caret not on top of input when mulitple tag force dropdown on new line. NOW: - Web studio dropdown property width always full. - Caret aligned from the bottom ensuring its always on top of the input. Note: The pop over with all the option is still visually odd, but left it as is as it means we can still see the tags when selecting another option. task#5226503
This update removes a confusing zoom feature from the scatter plot chart in Odoo Enterprise. This change simplifies the chart's functionality and aligns with upcoming plans to allow users to manually set axis ranges. The removal improves the chart's usability and prepares for future customization options.
Original PR description
## Task Description This PR aims to remove the zoomable feature for the scatter plot, as it's kind of non-sense to be able to zoom on an axis and not on the other for this type of chart. Moreover, we will soon be able to manually set the min/max of each axis manually (in master). ## Related Task - Task: 5388389
A JavaScript error was causing issues when reloading the shopfloor app. This update disables the automatic focus of the search bar, preventing the error and ensuring the app functions correctly after a reload or duplication of the page. This improves stability and user experience.
Original PR description
Steps to reproduce:
- Open the shopfloor app
- Reload or duplicate the page where the MO process is running
Issue:
A JavaScript error occur during reload:
UncaughtClientError > TypeError
Uncaught Javascript Error > Cannot read properties of null (reading 'blur')
Occured on 101125414-19-0-all.runbot180.odoo.com on 2026-02-16 04:59:28 GMT
TypeError: Cannot read properties of null (reading 'blur')
at https://101125414-19-0-all.runbot180.odoo.com/web/assets
/9d8abcf/web.assets_web.min.js:36280:459
Cause:
This happens when the search bar component attempts to call `blur()` on `inputRef.el` while the element is not yet available or has already been destroyed during the component lifecycle.
Fix:
Disable the search bar autofocus in the shopfloor
`env.config.disableSearchBarAutofocus = true`.
opw-5902675
upg-3894728This update adjusts the minimum and maximum amounts available for employee mobility budgets each year. These limits are automatically indexed to reflect inflation and market changes, ensuring employees have appropriate support for relocation. This change ensures compliance with Belgian tax regulations regarding mobility expenses.
Original PR description
Each year the minimum and maximum amount of mobility budget is indexed, here are the new values. Forward-Port-Of: odoo/enterprise#109641
This update corrects a technical issue where 'Confirm' buttons were incorrectly displayed when payslips existed. The system now accurately checks for the number of payslips and hides the button when there are any, ensuring a cleaner user interface. This improves the user experience by preventing unnecessary actions.
Original PR description
The 'empty_payslips' field is an Integer, but the view was treating it as a pure Boolean. This commit: - Updates 'Confirm' buttons to be invisible when payslips exist (> 0). Task: 5916154
This update prevents Instagram posts from failing due to delays in media processing. By using a scheduled cron job to retry publication, the system now handles temporary processing delays gracefully, ensuring posts are successfully published without impacting server performance.
Original PR description
With the current behavior the Instagram API sometimes requires time to process media containers, the media_id is not yet ready on Instagram side, leading to failed posts. To avoid this, we now use an asynchronous flow: If the media container is not immediately 'FINISHED', we store the container ID in `instagram_post_id` (prefixed with `containerIDs-`), set the state to 'posting', and trigger the scheduled cron to retry in 1 minute. The `_cron_publish_scheduled` method has been updated to detect these pending posts and resume the publication attempt so workers remain free while Instagram processes the media. opw-5081325 Co-authored-by: @ushyme Forward-Port-Of: odoo/enterprise#100313
This update resolves a problem that occurred when the demo version of Odoo was used. Specifically, certain buttons were being triggered unnecessarily, causing unexpected behavior. This change ensures the demo mode functions correctly and reliably, improving the user experience for testing and evaluation.
Original PR description
community https://github.com/odoo/enterprise/pull/97209
This update corrects a visual imbalance in the layout of Knowledge articles within the Odoo editor. The change ensures consistent spacing on both sides of the content, resulting in a more professional and balanced appearance. This improves the overall user experience for creating and viewing Knowledge articles.
Original PR description
The Knowledge article layout shows a visual imbalance due to asymmetric horizontal spacing in the editor content. This change makes the horizontal spacing consistent on both sides, improving the overall visual balance while maintaining proper spacing and layout consistency. Task-5222643
This update fixes a display issue where part-time flexible employees were showing incorrect total hours (based on full-time requirements) in their attendance schedules. The change ensures that the system now accurately reflects the employee's defined weekly hours (`hours_per_week`) when generating attendance intervals, improving accuracy and usability for flexible scheduling.
Original PR description
### Issue: When having a part-time flexible employee (`hours_per_week` < `full_time_required_hours`), some values still show `full_time_required_hours` as the total hours they should work in a week.…
### Issue:
When having a part-time flexible employee (`hours_per_week` < `full_time_required_hours`), some values still show `full_time_required_hours` as the total hours they should work in a week.
Steps to reproduce:
- Have an employee with a part-time flexible schedule
- `full_time_required_hours`: 40
- `hours_per_week`: 24
- `hours_per_day`: 8
- Go in Attendances
- Hover the employee
- It shows ...h/40h but it should show ...h/24h
Cause:
In `_attendance_intervals_batch()` we build theoretical attendances for flexible employees. Starting at the start of the week, we add an attendance of `hours_per_day` each day until we reached `full_time_required_hours`.
In the case above, we would return five attendances of 8h, ignoring `hours_per_week`.
Then `_get_attendance_intervals_days_data()` counts the hours to display them in the Gantt view.
Solution:
In `_attendance_intervals_batch()` we use `hours_per_week` instead of `full_time_required_hours` as the weekly limit of hours per week.
A lot of tests needed to be adapted, as they were specifying `full_time_required_hours` but not `hours_per_week` when creating calendars.
opw-5973117This update removes a display field ('Visible Internally Only') from the customer rating form in the Helpdesk module. This field was no longer needed as customer ratings are no longer visible on the website. This change improves the user experience and simplifies the Helpdesk interface.
Original PR description
**Steps to reproduce:** - Open a Helpdesk ticket with a customer rating. - View the rating form. - Observe the field ‘Visible Internally Only’ still showing. **Issue:** - The field is displayed even though ratings are no longer shown on the website. **Reason:** - The field is now irrelevant but still present in the view. **Fix:** - Invisible the ‘Visible Internally Only’ field from the customer rating form in the affected version. **Task id - 5359052** Forward-Port-Of: odoo/enterprise#109287 Forward-Port-Of: odoo/enterprise#100686
This update automatically removes related articles from the Knowledge app when an audit report is deleted. This prevents workspaces from becoming cluttered and ensures users only see relevant information. It improves the overall user experience and maintains a cleaner, more organized Knowledge environment.
Original PR description
When a user deletes an audit report, the articles linked to that report currently remain visible in the Knowledge app. This can lead to cluttered workspaces and confusion about which articles are still relevant. To keep workspaces clean, these linked articles will now be automatically moved to the trash when the audit report is deleted. Task-5902448