Daily updates from Odoo
Tuesday, October 7, 2025
127 changes
4 changes
Enhancements to existing features
This update adds automated checks for appointment booking flows, including capacity handling, availability, cart bookings, invoice confirmation, and final event creation. These tests help reduce the risk of booking errors and improve reliability across appointment sales and payment scenarios.
Original PR description
\* = website_appoinment_sale, appointment_account_payment Add tests to ensure correct behaviour for the various scenarios. The following tests are added: - Users/resource's capacity computation when manage capacity is on and off. - Unavailability computation of users/resources in the `calendar.event`. - Check the bookings of user/resource in the cart for the availability after the invoice is confirmed. - Creation of the actual event when the booking from the cart is confirmed. Task-4919317
Resolved issues and error corrections
This fix ensures manufacturing shop floor screens handle removed BoM components without showing duplicate material lines or crashing. It adds test coverage so the issue does not return, helping operators continue work smoothly after production setup changes.
Original PR description
### Steps to reproduce: 1. Create a BoM with two components to be consumed in an operation 2. Create a Manufacturing Order with this BoM and confirm it 3. On the BoM, remove one of the products and save 4. Go to the Shop Floor 5. Select the workcenter used in step 1 6. Got duplicate key in t-foreach ### Before this commit: Stock moves without quality checks, that are linked to a workorder but not linked to a BoM line, are included twice in the view, resulting into a traceback. ### After this commit: Include only once the stock moves, removing duplicates from the view. opw-5029970 Forward-Port-Of: odoo/enterprise#93482
This change fixes an unreliable automated test for bus notifications that could fail randomly depending on how notification batches were read. It helps keep the release process stable by ensuring the test checks all received notifications instead of accidentally ignoring some.
Original PR description
This commit fixes the `test_postcommit` that fails in a non deterministic fashion. This test ensures bus notifications created in the post commit hook result in only one batch. However, the listener only consider the first notification of the batch (`conn.notifies.pop()`) and ignore the rest. When the expected notifications come as part of a bigger batch, they can be ignored thus making the test fail. This commit ensures we read every notification received. fixes runbot-233185 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 Forward-Port-Of: odoo/odoo#230117 Forward-Port-Of: odoo/odoo#230054
This fixes an issue where certain remote procedure calls could fail when request parameters used names that conflicted with internal fields such as model or method. The change improves reliability for integrations and web requests without changing user workflows.
Original PR description
Backport of odoo/odoo#227801 in saas-18.4 X-Original-Commit: 1bb69de64165b18fca7d00164c5299e58c48d40f
4 changes
Enhancements to existing features
The state selection field now aligns visually with other similar lookup fields by removing an extra margin. This creates a more consistent form layout and reduces small visual inconsistencies for users entering addresses or location details.
Original PR description
Related PR: https://github.com/odoo/odoo/pull/229290 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
Manufacturing order overviews can now be opened even when the order has no linked bill of materials. This prevents an error after completing such orders and helps users review production information without interruption.
Original PR description
Steps to reproduce: - Create a storable product “P1” - Create a manufacturing order to produce one unit of P1: - add any component - Mark the MO as done - Try to open the MO overview Issue: An error is raised because the MO has no BoM. But in the function we try to compute the missing quantity in the BoM's UoM, but since no BoM is linked, there is no UoM available. Error message: "The unit of measure Unit defined on the order line doesn't belong to the same category as the unit of measure %(product_unit)s defined on the product. Please correct the unit of measure defined on the order line or on the product. They should belong to the same category." Fix: Skip the computation of missing BoM quantities when no BoM is linked, allowing the MO overview to be opened without error. opw-5112132 Opw-5105544 Opw-5119897 Forward-Port-Of: odoo/odoo#229707
This change removes a non-essential test check that could fail unpredictably when product lists changed. It helps keep point-of-sale loyalty testing stable without affecting customer-facing behavior.
Original PR description
Before this commit, some tests could fail randomly if a new product was included in the list of limited loading products. The part of the test that checked whether the product was not loaded was not essential, so it has been removed to prevent unnecessary failures. opw-5109838 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an unreliable automated test for bus notifications by making sure every notification in a received batch is checked. The change helps reduce false test failures and improves confidence in release validation without changing user-facing behavior.
Original PR description
This commit fixes the `test_postcommit` that fails in a non deterministic fashion. This test ensures bus notifications created in the post commit hook result in only one batch. However, the listener only consider the first notification of the batch (`conn.notifies.pop()`) and ignore the rest. When the expected notifications come as part of a bigger batch, they can be ignored thus making the test fail. This commit ensures we read every notification received. fixes runbot-233185 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 Forward-Port-Of: odoo/odoo#230117 Forward-Port-Of: odoo/odoo#230054
1 change
Resolved issues and error corrections
The appraisal skills list now allows horizontal scrolling on mobile again, so users can see the justification field and the add or remove buttons. This fixes a mobile usability issue that prevented employees or managers from completing skill appraisals properly.
Original PR description
Horizontal scrolling has been disabled on the appraisal skills list. An unwanted side effect of that is that the justification field along with the add and remove buttons are not visible on mobile. This PR re-enables the scrolling and removes some dead css. task-5001344 Forward-Port-Of: odoo/enterprise#96068 Forward-Port-Of: odoo/enterprise#91882
11 changes
Resolved issues and error corrections
This fixes an intermittent failure in an automated test for signed document cleanup. The change adds a small time buffer so the cleanup check behaves consistently, reducing false test failures without changing customer-facing functionality.
Original PR description
Steps to reproduce
==================
Launch the test `test_gc_clear_bin` a few times
It will eventually fail:
documents.document(544,) is not false :
trash document should be deleted after gc_clear_bin
Cause of the issue
==================
The domain for wether a record should be deleted contains `('write_date', '<=', fields.Datetime.now() - relativedelta(days=deletion_delay)`
The tests fails when the write_date is in the same second as the test run.
This is because fields.Datetime.now() replaces microseconds by 0.
https://github.com/odoo/odoo/blob/14073faf1fa272b8d3411b4fe6f42c279058459d/odoo/fields.py#L2378
Solution
========
Since records needs to be at least "deletion_delay" old, we add a margin of 30 seconds to make sure they match
runbot-224207
Forward-Port-Of: odoo/enterprise#95926Updates the automated website page properties tour so it works with the redesigned page creation dialog. This helps keep website editing quality checks reliable after accessibility and layout changes.
Original PR description
Recent UI refactors in the page creation dialog broke the page_properties tour. In particular, [1] replaced the legacy tab markup with a WCAG-compliant tablist and adjusted focus management and tab activation logic. Combined with additional changes from [2] that modified the dialog's structure, this caused the tour to fail at several steps. This patch updates the tour selectors and interactions to align with the new accessible tablist and the revised DOM structure. [1]: https://github.com/odoo/odoo/commit/4defd0944656ac9f45ecc26f7d58bfe8184bd197 [2]: https://github.com/odoo/odoo/commit/7ca9b006fb50dfd37415fa184629edfed99575d5 runbot-233168
Users who are allowed to print and send SEPA direct debit mandates can now generate, email, and later access the related PDF attachments. This fixes a permission issue that blocked some authorized users from completing the mandate sending process.
Original PR description
Removing the groups restriction from the `mandate_pdf_file` field in model `sdd.mandate` because it was causing issues when using the `sdd.mandate.send` wizard. Any user who has access to the `sdd.mandate` model can use this wizard to print and send the record. During this process, the system generates a PDF and stores it in the `mandate_pdf_file` binary field, linking the resulting attachment to the record. The previous group restriction prevented users who were not part of the `account.group_account_readonly` group from sending the email with the attachment. Even if the email was somehow sent, those users still couldn’t access the attachments they themselves had generated and sent. With this change, any user who is allowed to send and print `sdd.mandate` records will also be able to generate and later access the corresponding attachments. Forward-Port-Of: odoo/enterprise#96119
The accounting dashboard colors have been adjusted so key elements remain clear and readable when dark mode is enabled. This improves usability for users who prefer or rely on dark mode, without changing accounting workflows.
Original PR description
This commit adjusts dashboard element colors to enhance readability in dark mode. task-5122380 | Before | After | |--------|--------| | <img width="665" height="336" alt="image"…
This commit adjusts dashboard element colors to enhance readability in dark mode. task-5122380 | Before | After | |--------|--------| | <img width="665" height="336" alt="image" src="https://github.com/user-attachments/assets/c3270f8d-bd3b-47a9-807f-ca4ca5c7e6c2" /> | <img width="632" height="317" alt="Capture d’écran 2025-09-30 à 14 48 22" src="https://github.com/user-attachments/assets/d0eb8ab1-6ff7-484f-aedb-b668ba337a43" /> | | <img width="1914" height="967" alt="image" src="https://github.com/user-attachments/assets/4d7b9c00-41b7-46a3-addb-4ec09cbbca85" /> | <img width="1916" height="922" alt="Capture d’écran 2025-09-30 à 14 48 59" src="https://github.com/user-attachments/assets/711375aa-5b01-4c81-b7ab-ba462fdbb0b6" /> | | <img width="1716" height="953" alt="image" src="https://github.com/user-attachments/assets/a023d555-3f92-433d-a07f-dc8bb1c2513c" /> | <img width="1640" height="803" alt="Capture d’écran 2025-09-30 à 14 50 07" src="https://github.com/user-attachments/assets/26ae7b94-222d-4527-87ad-68ed55b495d0" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Website editors can now use the eye icon in the Invisible Elements panel to show or hide the page header or footer and have that choice saved as expected. This prevents confusion where a header or footer appeared visible while editing but became hidden again after saving.
Original PR description
With the initial [website builder refactor], clicking on the eye of the entry of the footer or the header in the "Invisible Elements" panel only temporarily changed their visibility. Additional clicks in the options were needed for their visibility to persist. This commit restores the previous behavior where clicking on the eye in the "Invisible Elements" panel for the header and the footer would also change the option. Steps to reproduce: - Open website builder - Click on the footer - Disable "Page Visibility" - Click on the eye next to "Footer" in the "Invisible Elements" panel - Save - Bug: the footer is invisible, but it was just before save [website builder refactor]: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641 Forward-Port-Of: odoo/odoo#227277
This update prevents the website editor from adding hidden spacing markers to icons in the wrong places. It helps avoid unexpected layout or editing issues in website snippets while preserving the intended behavior for normal text content.
Original PR description
Description of the issue this PR addresses: Commit [1] adds feffs around icons that were descendant of a paragraph-related elements. This caused an issue in some website snippets where icons inside a `div` (dropped within a `p`) also received FEFFs. Though such snippets should not be allowed inside a `p` since they are block-level elements, and this will be addressed separately. In the meantime, this commit ensures that FEFFs are only applied to icons that are direct children of paragraph-related or formatting tags. [1]: https://github.com/odoo/odoo/pull/225994#issue-3396940401 task-5071184 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225994
Manufacturing order overviews can now be opened even when no bill of materials is linked. This prevents an error for completed manufacturing orders and helps users review production details reliably.
Original PR description
Steps to reproduce: - Create a storable product “P1” - Create a manufacturing order to produce one unit of P1: - add any component - Mark the MO as done - Try to open the MO overview Issue: An error is raised because the MO has no BoM. But in the function we try to compute the missing quantity in the BoM's UoM, but since no BoM is linked, there is no UoM available. Error message: "The unit of measure Unit defined on the order line doesn't belong to the same category as the unit of measure %(product_unit)s defined on the product. Please correct the unit of measure defined on the order line or on the product. They should belong to the same category." Fix: Skip the computation of missing BoM quantities when no BoM is linked, allowing the MO overview to be opened without error. opw-5112132 Opw-5105544 Opw-5119897 Forward-Port-Of: odoo/odoo#229707
The spreadsheet screen now displays better on mobile devices. Long spreadsheet names are shortened neatly and the saved status stays on one line, making the navigation bar easier to read and use.
Original PR description
When opening the spreadsheet on mobile, the navbar was not well styled: - the spreadsheet name was not truncated with ellipsis - the "saved" status would take two lines (one line for the icon, one line for the text) Task: [4996784](https://www.odoo.com/odoo/2328/tasks/4996784)
This fix makes an internal messaging test read all notifications it receives instead of only the first one. It reduces random test failures and helps keep the messaging infrastructure validation stable without changing user-facing behavior.
Original PR description
This commit fixes the `test_postcommit` that fails in a non deterministic fashion. This test ensures bus notifications created in the post commit hook result in only one batch. However, the listener only consider the first notification of the batch (`conn.notifies.pop()`) and ignore the rest. When the expected notifications come as part of a bigger batch, they can be ignored thus making the test fail. This commit ensures we read every notification received. fixes runbot-233185 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 Forward-Port-Of: odoo/odoo#230117 Forward-Port-Of: odoo/odoo#230054
Documentation and clarification updates
The corporate contributor agreement record for ForgeFlow has been updated. This keeps Odoo's legal contribution documentation current and supports ongoing compliance tracking.
Original PR description
Forward-Port-Of: odoo/odoo#230040
Miscellaneous changes
pot file was manually edited, resulting in invalid pot file. 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
Original PR description
pot file was manually edited, resulting in invalid pot file. 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
7 changes
Resolved issues and error corrections
This fixes an intermittent failure in a CRM automated tour by selecting the intended customer record and waiting for the opportunity name to be filled before continuing. The change improves test reliability and helps future CRM issues surface at the correct step instead of causing misleading errors later.
Original PR description
The problem here is twofolds: - After odoo/odoo#206314 the field being searched is filtered on `is_company` which means it's literally impossible to find the partner we create as that field defaults…
The problem here is twofolds: - After odoo/odoo#206314 the field being searched is filtered on `is_company` which means it's literally impossible to find the partner we create as that field defaults to `False`. - Before that PR, since we just `click` the first link we find in the dropdown, we might get a random company which exists in the database (if any) or we might hit the "create" option. In the latter case we have a non-zero chance of clicking `o_kanban_add` before the client has had the time to `name_create` the record, set the partner, call the onchange, and return with the opportunity's name, leading to an attempt to create a nameless opportunity and a "missing required field" error Selecting the very specific partner we created (correctly this time) and then actually waiting for the opportunity's name to be set should resolve the issue, and make problems in that step show up in the right location in the future rather than hit some sub-sub-sub-symptom 20 steps later. https://runbot.odoo.com/odoo/error/229719
Users with limited access rights now see the correct page title when previewing copied links. This prevents generic “Odoo” previews caused by permission errors, making shared link previews clearer and more reliable.
Original PR description
Users without access for specific actions cannot see the right preview information, using sudo like the search for generic action but on specific model solve the issue. Steps: - Login with a user without window actions access - Copy a link somewhere to have preview dialog Actual result: - Preview title is Odoo due to access error Expected result: - Preview title is the one of the page opw-4933194
This fix ensures Point of Sale test data includes a company country when needed. It prevents false test failures in setups with country-specific localizations, helping keep quality checks stable without changing user-facing behavior.
Original PR description
Before this commit, some tests would fail when localizations requiring a country were installed, because the created company did not have a country set. runbot-233158 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Closing the barcode scanning dialog before the camera preview finishes loading no longer causes an error. This prevents a disruptive crash for users who back out of scanning or press Esc quickly.
Original PR description
Steps to reproduce: 1. Install `barcode` 2. Barcode > 'click to scan' 3. Before the camera preview loads, click the back button of the dialog Issue: A traceback occurs: `OwlError: The following error occurred in onMounted: 'Cannot set properties of null (setting 'srcObject')' ` Cause: Clicking the back button triggers `onWillUnmount`, which clears the stream and sets `this.videoPreviewRef.el` to null. However, some asynchronous functions in `onMounted` are still pending and try to access the video element, leading to a crash. Solution: Add a safe check based on component status before accessing `this.videoPreviewRef.el` opw-5055566 Forward-Port-Of: odoo/odoo#226068
This fixes an inventory issue where a transfer could show the same source document reference multiple times when several items came from the same receipt. The source document field now lists each reference only once, making transfer records clearer and reducing confusion for warehouse users.
Original PR description
### Behavior: #### Current: During the assignment of a picking, if several of its moves have the same origin, it will repeat that origin in its own origin. #### Expected: Only have one time each origin. ### Steps to reproduce: From Inventory * Enable two step transfer for the warehouse From Barcode * create and validate new receipts with "Product A" * create and validate a second new receipts with "Product A" and other products From Inventory/Operations/Transfers/Receipts * Open the corresponding receipts * In "source Document" (Field: origin, Model : stock.picking) we can see that the reference from second receipts is repeated. ### Observation: In the case of already existing origins it will not duplicate them but it's missing if several item comes from the same origin. https://github.com/odoo/odoo/commit/0caa44ca97d9d197811a03ad2ff227df68d4437a#diff-55c6314416a6a400da6acd5018d161a55eeeb0e3008fec8828121e3dd12be0ebR1410 opw-4970159
The fix keeps valid accented characters, including ü, in Mexican legal names used for electronic invoicing. This helps prevent unnecessary name changes that could cause validation issues with Mexico's tax authority (SAT).
Original PR description
Previous commit (#95207) removed accents for names including character ü which indeed is a recognized character for SAT opw-5125107
Miscellaneous changes
We need to first check if active_ids exist and get usererror if there are no active_ids present. [Link to Runbot Error builds](https://runbot.odoo.com/web#id=74407&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190324
Original PR description
We need to first check if active_ids exist and get usererror if there are no active_ids present. [Link to Runbot Error builds](https://runbot.odoo.com/web#id=74407&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190324