Wednesday, July 2, 2025
22 changes · 18.0
Enhancements to existing features
The web interface framework was updated to a newer OWL release. This improves how translated text is handled, including accessibility labels that help assistive technologies present the interface correctly.
Original PR description
This brings two commits: - [FIX] parser: t-esc/t-out vs t-translation* - [IMP] compiler: make human-readable ARIA attributes translatable see https://github.com/odoo/owl/releases/tag/v2.8.0. Forward-Port-Of: odoo/odoo#216599
Resolved issues and error corrections
This fix ensures website pages can open correctly even when the related content record uses a negative ID, a case present on Odoo.com. It prevents backend website view crashes by recognizing these IDs consistently when reading page data.
Original PR description
Steps to reproduce: 1. Install website_blog 2. Create a blog post with a negative ID (you'll need to change it via SQL) -> such kind of record is something we have on Odoo.com 3. Go to that blog post in the backend website view => Crash We have several places where the main-object data is parsed from the HTML, it did not consider the negative ID possibility. In master, an unified way to parse the main-object will be made. task-jke Forward-Port-Of: odoo/odoo#216573
Code cleanup and technical improvements
This update simplifies the internal unit test setup used across several Odoo Enterprise modules by replacing an older testing mechanism with a more maintainable approach. It is limited to tests, so it should reduce future maintenance effort without changing day-to-day product behavior for users.
Original PR description
## Pull Request HOOT (PRHOOT) 34 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/216546
Documentation and clarification updates
This update records the contributor license agreement signature for GitHub user shawkialaddin. It helps ensure their future contributions can be accepted under the project's legal contribution requirements.
Original PR description
Description of the issue/feature this PR addresses: This PR contains the CLA signature for the GitHub user shawkialaddin. Current behavior before PR: CLA is not signed for this contributor. Desired behavior after PR is merged: CLA is properly registered, allowing contributions from this user.
Miscellaneous changes
During odoo/enterprise#60393 some po files that had been deleted in odoo/odoo#172429 and odoo/odoo#172269 were re-added in. We remove them now as they are out of date + are not reachable to be translated/fixed without a PR.
Original PR description
During odoo/enterprise#60393 some po files that had been deleted in odoo/odoo#172429 and odoo/odoo#172269 were re-added in. We remove them now as they are out of date + are not reachable to be translated/fixed without a PR.
This fix makes the sales signature validation test wait until the signature area is ready before continuing. It helps prevent false test failures where the system incorrectly reports that a signature is missing because the signing box had not fully loaded yet.
Original PR description
In commit, we make sure that the signature is present in the modal before reaching the step where we click on "accept & sign". If the canvas is not yet loaded at this step, then there is an error message "Signature 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
This fix ensures invoice payment references are consistently handled as text instead of an empty false value. It prevents a test failure and helps keep Peru stock reporting workflows stable when payment references are missing.
Original PR description
steps to reproduce: 1. install l10n_pe_reports_stock module 2. run the test `test_payment_reference_autocomplete_invoice` This commit ensures that the payment_reference field is always a string, because it returs false when it is None, which causes an assertion error build_error-75601 Forward-Port-Of: odoo/odoo#215873
Website form fields that use contextual values now correctly keep their configured default values when edited and saved. This prevents editors from losing intended defaults on pages like Contact Us or recruitment forms, while still showing the right contextual value to visitors.
Original PR description
Scenario: - go to the /contactus page - edit the subject field and set a default value then save Result: the default value is not saved. Reason: in 13.0, field default value had priority over…
Scenario: - go to the /contactus page - edit the subject field and set a default value then save Result: the default value is not saved. Reason: in 13.0, field default value had priority over data-for so an issue was solved by b637a5e32f767b62736241042f88fa0cecf9f10b that if you saved a form, the data-for would become the default for all the uses of that form (so eg. a job position would be set for all job positions). In 8d0a63f35519090a74fcefedf482fea5f6eedd97 the priority was changed so data-for has higher priority than the default value, that made the prior fix unnecessary (just a nice to have, to not save the data-for as default that would be overridden by another data-for). The fix was reintroduced by ca433f38dbfe379dc9e0b823c7862eaec1a7ed9d but it removes default value if there is a data-for. Fix: remove the filling and removing of value: the data-for is not shown in the editor (allowing us to set default) but has the priority when rendering the field in non-editable mode. This is mirroring what is already done for data-fill-with. Side note: this commit also remove useless data-fill-with="undefined" attributes that are added when editing field. They shouldn't cause any issue unless someone add a "undefined" field in the prefilled fields. opw-4794903 Forward-Port-Of: odoo/odoo#216642 Forward-Port-Of: odoo/odoo#211083
This fix strengthens automated testing for electronic invoice files by ensuring XML namespace details match the expected format. It helps catch incorrect invoice formats earlier, reducing the risk of compliance or interoperability issues in localized e-invoicing flows.
Original PR description
At the moment, the `assertXmlTreeEqual` test method doesn't check that the namespaces in the generated XML match the ones in the expected XML. This is a 'feature', but in practice it prevents us from ensuring that our generated XMLs are correct. From now on, we also check namespace equality. Enterprise PR: https://github.com/odoo/enterprise/pull/87950 task-none
This fixes an issue in Point of Sale where custom payment method types added by another module did not appear in the selection list. Businesses using customized payment workflows can now add their own payment options more reliably.
Original PR description
* Create a new module try to inherit _get_payment_method_type but new selection not add in the selection list * Using lambda in selection will work 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 an issue where uninstalling the HR Contract module could leave HR menu items under the wrong parent menu. The module now restores the expected HR menu structure during uninstall, reducing confusion for users and administrators.
Original PR description
This PR adds an uninstall_hook to restore the correct parent menus under the hr module that were overridden by this module. Task: 4818020 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213954
The employee Resume section now allows scrolling when long experience descriptions are entered. This keeps the Add button accessible, preventing users from getting stuck when rich or table-based content takes up too much space.
Original PR description
**Steps to Reproduce :** 1. Install HR module. 2. Open an employee record. 3. Navigate to the Resume section. 4. Add an Experience entry. 5. Enter long description (using a table with multiple columns). 6. After that "ADD" button becomes no longer visible or usable. **Issue :** When a long description is added (especially with table content), It pushes the "ADD" button out of view, making it inaccessible. **Causes:** The container does not handle overflow properly, so elements extend beyond the visible area without scrollbars. **Solution:** Apply `overflow: auto !important;` to the affected container to allow scrolling when content overflows. This ensures the "ADD" button remains accessible. opw-4778793 **Before fix:**  **After fix:** 
This update improves Hoot, Odoo's internal unit testing framework, with better performance, fewer crashes, and more reliable test interactions. It also simplifies older testing helpers and improves the test debugging experience, helping developers maintain quality with lower risk to customer-facing features.
Original PR description
## Pull Request HOOT (PRHOOT) 34 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Enterprise: https://github.com/odoo/enterprise/pull/88949 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes keyboard navigation more reliable when users move the cursor up or down in editor content that includes file boxes. It prevents erratic cursor jumps and removes an unnecessary hidden placeholder left behind during content insertion, improving editing consistency.
Original PR description
### Approach: - Addressed an issue where cursor navigation using ArrowUp/ArrowDown resulted in unexpected behavior when the cursor was inside an .o_file_box or was expected to move into it. - The fix…
### Approach: - Addressed an issue where cursor navigation using ArrowUp/ArrowDown resulted in unexpected behavior when the cursor was inside an .o_file_box or was expected to move into it. - The fix uses horizontal position of the current caret and vertical position of neighboring line to resolve a target position using caretPositionFromPoint or caretRangeFromPoint, ensuring accurate and consistent cursor movement. ### Description of the issue/feature this PR addresses: - Pressing ArrowUp/ArrowDown caused erratic cursor behavior when navigating within or around a `file_box`. ### Desired behavior after PR is merged: - Cursor navigation behaves as expected when moving inside a `file_box`. - An empty text node was previously inserted into the DOM to preserve the caret position during content manipulation. This placeholder has been removed after the content is inserted. task-4671755 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes a bus module test more stable by ensuring websocket test changes apply only to the current worker instance. It reduces false test failures in automated validation, helping keep development and release pipelines more dependable.
Original PR description
This commit fixes the `subscribe to presence channels according to store data` test. Some of the websocket worker functions are debounced meaning some old worker functions can be called after the test ends. Since `_patchWebsocketWorker` with cleanup patches the prototype of the worker, patches can be executed from old workers which is an issue. This commit ensures only the actual instance is patched. fixes runbot-226354 Forward-Port-Of: odoo/odoo#216810
This update prevents an error when a subscription sales order has no previous invoice date. The system now uses today’s date as a fallback, helping subscription stock movements continue without interruption.
Original PR description
The Issue: Prior to this commit, When the sale order last_invoice_date is False, a traceback is thrown The Fix: To resolve this, We get the last_invoice_date or todays date opw-4403557
Users who only have permission to view shared PDF documents will no longer see the option to split PDFs. This prevents an error and keeps available actions aligned with each user's access rights.
Original PR description
When a user with only view permissions attempts to split a PDF, an error occurs: Unexpected token '<', "<!doctype "... is not valid JSON **Steps to Reproduce:** - Go to Documents. - Choose a PDF file. - Click on Share and select Internal Users with Viewer permission. - Copy the generated link. - Open the link in another window as a non-manager user. - Click on split PDF then split The fix consists in hiding the pdf split functionality for users without edit permission. opw-4354451
This update corrects test reference files for electronic payment and invoicing documents so they now verify XML namespace information properly. It helps ensure localized EDI and ISO 20022 documents are validated more accurately, reducing the risk of unnoticed format issues in future changes.
Original PR description
Before, we weren't asserting XML namespaces when calling `assertXmlTreeEqual`. As a result, many expected XMLs in EDI tests had incorrect namespaces. Now that we change the test method to check namespaces, we also need to fix the expected XMLs. Community PR: https://github.com/odoo/odoo/pull/214764 task-none
Users who work with inventory and helpdesk, but do not have sales permissions, can now create repair-related tickets without seeing an access error. The change avoids checking a sales order field when the user is not allowed to access it, making the repair workflow smoother for those roles.
Original PR description
### Before this PR If an user has only inventory, helpdesk group and it does not have "sales" permission , the error "you have not access on this field sale_order_id" appear. It appears because on helpdesk_sale that field is restricted to two specific groups. In the same module that fields is popped out during copy , but in the prepare of helpdesk_repair is accessed without checking permission ### After this PR The field is not accessed if it has no permission Forward-Port-Of: odoo/enterprise#86514
This update adds an individual contributor agreement for mostafatwfiq. It helps keep contribution records complete and supports the project's legal compliance process.
Original PR description
Added mostafatwfiq.md to doc/cla/individual.
…eport Currently in bank reconciliation report we expect all the entries to have the balance encoded in journal currency However it may not be the case if an entry is posted in a misc journal set in another currency Steps to reproduce: - Create a new journal in another currency (€) than the company's ($) - Create a new journal entry using the journal main account - Go to the account dashboard > click on the 3 dots of the journal - Open the Reconciliation report Issue: The journal
Original PR description
…eport Currently in bank reconciliation report we expect all the entries to have the balance encoded in journal currency However it may not be the case if an entry is posted in a misc journal set in another currency Steps to reproduce: - Create a new journal in another currency (€) than the company's ($) - Create a new journal entry using the journal main account - Go to the account dashboard > click on the 3 dots of the journal - Open the Reconciliation report Issue: The journal entry amount is in company curreny (balance), but with the journal currency symbol (€) opw-4701349 Forward-Port-Of: odoo/enterprise#87313
**Issue:** When a resource is on leave for a particular day, and an open shift is created for that day, the open shift includes lunch time, which causes the total allocated hours to be incorrect. **Example:** - Shift duration: 1 week (27th to 31st January) - Resource on leave on 30th January - Move to the next week and copy the previous week's shift - New shift created: - Monday to Wednesday and Friday assigned - Open
Original PR description
**Issue:**
When a resource is on leave for a particular day, and an open shift is created for that day, the open shift includes lunch time, which causes the total allocated hours to be incorrect.
**Example:**
- Shift duration: 1 week (27th to 31st January)
- Resource on leave on 30th January
- Move to the next week and copy the previous week's shift
- New shift created:
- Monday to Wednesday and Friday assigned
- Open shift on Thursday (9 hours allocated)
However, 1 extra hour is added in the open shift.
**Steps to Reproduce:**
-Install the planning_holidays module.
- Create a shift for the week (27th to 31st January).
- Add leave for 6th February.
- Copy the previous week's shift.
- Check the allocated hours for 6th February.
task-4224781
Forward-Port-Of: odoo/enterprise#73478