Friday, October 31, 2025
8 changes · saas-18.4
Resolved issues and error corrections
This fix stops Odoo from forcing a default employee structure onto an admin employee record that may not exist in some customer setups. It prevents upgrade or employee creation failures for companies that use their own HR administration workflow.
Original PR description
After this commit: https://github.com/odoo/odoo/commit/6247dc36f703ee2ec45913802ad175cb79873845 and this one: https://github.com/odoo-dev/odoo/commit/5686072b8e7b827269573e8ab1f5b84b61b9315c when we…
After this commit:
https://github.com/odoo/odoo/commit/6247dc36f703ee2ec45913802ad175cb79873845 and this one:
https://github.com/odoo-dev/odoo/commit/5686072b8e7b827269573e8ab1f5b84b61b9315c
when we set default Structure to employee admin
but Later when clients set up their work flow
they set up their own admin employee.
This record is not present, so when employee admin record is not there , no need to set default structure too so need to set no forcecreate on that employee admin too.
When we try to set default structure and if admin record does not exit,
we got error when we try to create employee as no name found and we try to pop name from val here :
https://github.com/odoo/odoo/blob/7e0cc5ec686a52b8c1f8270213acac54575ed469/addons/hr/models/hr_employee.py#L1275
Generated during upgrade
```
File "/home/odoo/src/odoo/19.0/addons/resource/models/resource_mixin.py", line 37, in create
self._prepare_resource_values(
File "/home/odoo/src/odoo/19.0/addons/hr/models/hr_employee.py", line 1275, in _prepare_resource_values
vals.pop('name') # Already considered by super call but no popped
KeyError: 'name'
```
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-prThis update makes an automated test for Discuss sub-channel search more stable under heavy system load. It helps ensure thread loading during search continues to be verified reliably, reducing false test failures without changing user-facing behavior.
Original PR description
The `test_discuss_sub_channel_search` tour ensures that lazy loading of threads works correctly with the search feature. Technically, the component uses the `useVisible` hook which waits for a trigger to be visible before loading more threads. However, under high CPU load, the `IntersectionObserver` might not detect the change. For example, clearing the search input will make the element disappear, but scrolling afterward may make it reappear. As a result, the component might not detect that it should load more threads. In practice, this should never happen. The test now waits for the state to update before scrolling. fixes runbot-181951 Forward-Port-Of: odoo/odoo#233419
This fix removes an outdated action in the self-ordering flow that could trigger errors after a related function had already been removed. It helps keep restaurant self-ordering sessions stable for customers and staff.
Original PR description
Before this commit, there was still a call to the resetTableIdentifier, even though the function had been removed, which could cause errors. opw-5166737 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232521
This fixes an issue in Point of Sale where a lot number could still be applied to a sale order line even after the user canceled the lot selection. The change helps prevent incorrect product tracking information from being added during order loading.
Original PR description
Before this commit, when loading a sale order containing an order line tracked by lot, the system prompted the user to select a lot. However, even if the user canceled the selection, the lot was still added to the order line. After this commit, the lot will no longer be set if the user cancels the selection. opw-5162487 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233281
The printed approval request report now has cleaner spacing and more consistent text sizing. This makes approval details easier to read and better aligned when users print or review their requests.
Original PR description
Steps to Reproduce: - Install approvals module. - Navigate to Approvals → My Approvals → My Requests → Print report. Issue: - The formatting of the report is not proper. Solution: - Fixed the report's QWeb template (approvals.report_aprroval_request_document). - changed col-2 to col-3 to give the labels more space and improve alignment with the field values - changed h5 to h6 for more consistent and appropriate font size throughout the document **before :** <img width="777" height="818" alt="image" src="https://github.com/user-attachments/assets/86cbaf50-191a-412b-9b8e-149442256819" /> **after :** <img width="829" height="623" alt="image" src="https://github.com/user-attachments/assets/da237a87-7a7b-45db-8347-d64e1e987469" /> Forward-Port-Of: odoo/enterprise#95609
Payroll users who are allowed to resend payslips by email can now generate the secure payslip link needed in the email. This fixes an access issue that blocked the “Your Payslip” button from being included correctly.
Original PR description
Hr Payroll users that are meant to be able to use the Resend Payslip by email button do not have enough access right to get the documents token to put into the email "Your Payslip" button. Add a sudo on the payslip to get the document access url after the check of user role has been done. If have the right to use the button, sudo the rest. Task-5049444 Forward-Port-Of: odoo/enterprise#93420
Creating a new salary offer from an existing offer now generates a valid link with a unique access token. This prevents employees or candidates from receiving unusable offer links ending with an invalid token value.
Original PR description
_______________________________________ ## Short functional explanation of the error When creating an offer on the page of another offer, the salary configurator url doesn't contain a token, but instead, contains token = false. ## Reproduction Steps 1. Open the recruitment module. If there's no job position nor application, create some. 2. Open an existing application and click on Generate Offer. 3. Click on New on the top left of the screen. 4. Fill the new application and click on save. ### Expected behavior The field 'Link' contains an URL with, at the end, &token=x, with x a randomly generated token. ### Unexpected behavior The field 'Link' contains an URL with, at the end, &token=False. ## Origin of the issue The token generation code wasn't called when creating a new offer the way described in reproduction steps. _________________________________________ opw-4885796 --- Forward-Port-Of: odoo/enterprise#89546
Shared project users no longer see an unintended slider option when opening tasks from the portal. This keeps the shared project view focused and prevents confusing controls from appearing to external users.
Original PR description
Steps to reproduce: - Open any shared project from portal account. - Open any task Issue: - Visible slider with Show Sub Tasks option. Reason: - Unwantedly added ControlPanel into FormView of Project Sharing View. - Issue from https://github.com/odoo/odoo/pull/224203. Fix: - Remove the ControlPanel in Form View and extend web Control in xml to acheive the button.