Daily updates from Odoo
Tuesday, July 21, 2026
7 changes · master
Enhancements to existing features
The planning and point-of-sale payment integration has been consolidated into the main planning POS module. This removes a separate bridge component because the main module already depends on online payments, making maintenance simpler without changing expected business workflows.
Original PR description
Since `pos_sale_planning` depends directly on `pos_online_payment`, this commit removes the bridge module `pos_sale_planning_online_payment` and merges its logic into `pos_sale_planning`. Task-6128503 Related PRs: - Community: https://github.com/odoo/odoo/pull/264942 - Upgrade: https://github.com/odoo/upgrade/pull/10659
The Timesheets print option is now hidden on helpdesk tickets that have no logged timesheet entries. This prevents users from accidentally generating blank PDFs and keeps the ticket actions menu more relevant.
Original PR description
Before this PR --- - The "Timesheets" print action was visible in the gear menu of helpdesk tickets even when no timesheet entries were logged on the ticket. - Clicking the action generated an empty timesheet PDF. After this PR --- - The "Timesheets" print action is now hidden on helpdesk tickets when no timesheet entries are linked (timesheet_ids is empty). - Empty timesheet PDFs can no longer be triggered from the ticket view. task-5361456
Resolved issues and error corrections
Commission adjustment entries no longer crash when someone types a non-matching user name in the Add to or Reduce From fields. The quick-create option was disabled there, so users must select an existing valid user and can continue working without server errors.
Original PR description
Steps to reproduce: - Go to Sales > Commission > Adjustments - In Add to/Reduce From, type a name with no match - Click Create '<name>' -> server crashes (RPC_ERROR) Cause: `sale.commission.plan.user._rec_name` is a Many2one (`user_id`). Default `name_create` wrote the typed text into that integer column, which Postgres rejected. Fix: - Disable quick-create on `add_user_id`/`reduce_user_id` in the Adjustments list view Version: saas-18.3 to master opw-6384909 Forward-Port-Of: odoo/enterprise#124431
Duplicating certain Sign templates with multiple documents, signers, and fields could fail because the system tried to process the same signer role more than once. This fix skips roles that were already handled, making template duplication reliable for affected signing workflows.
Original PR description
Issue: This [loop](https://github.com/odoo-dev/enterprise/blob/55bb2cc570451361701d53583f019ed832a5e5d3/sign/models/sign_item.py#L59-L63) runs multiple times with the same approvers(sign.item.role), but doesn't take into account the already 'seen map' inside the base copy function for batching. If they are already seen they will return a non-iterable [None]. To replicate: 1) Sign -> Template -> upload PDF 2) Go into the template 3) Add 2 Documents, with 2 signers and multiple fields on both documents 4) Save -> gear Icon -> make into template 5) Go back to the list view of templates 6) Select the template -> Gear Icon -> Duplicate Fix: add an already seen check to skip if already seen. opw-6352408 Forward-Port-Of: odoo/enterprise#123814 Forward-Port-Of: odoo/enterprise#122667
This fix removes an unnecessary repeated reload action from an automated restaurant appointment test. It prevents false test failures caused by a timing issue while keeping the same coverage for the intended business flow.
Original PR description
The `RestaurantAppointmentTour` performed two consecutive "Reload Data" actions. The first reload starts synchronizing data from the server to IndexedDB. If the second reload is triggered before the synchronization completes, it deletes the IndexedDB while it is still in use, causing the synchronization process to crash. This race condition can be reproduced locally by running the tour with `cpu_throttling` enabled. In practice, users never trigger two consecutive reloads, so the second reload step in the tour is unnecessary. Remove it to avoid the artificial race condition while preserving the intended test coverage. Task-[6364951](https://www.odoo.com/odoo/project/1737/tasks/6364951) Runbot Error-[941343](https://runbot.odoo.com/odoo/error/941343), [941344](https://runbot.odoo.com/odoo/error/941344), [941345](https://runbot.odoo.com/odoo/error/941345) Forward-Port-Of: odoo/enterprise#125028 Forward-Port-Of: odoo/enterprise#123429
Code cleanup and technical improvements
The Documents app was updated to use newer underlying interface technology as part of Odoo’s Owl 3 migration. This keeps the file viewer aligned with the platform upgrade without changing day-to-day business workflows.
Original PR description
As part of the Owl 3 migration, this pr aims to replace **onWillUpdateProps** hook with the appropriate Owl 3 alternatives.
The Documents app was updated as part of the broader Owl 3 migration, replacing an older internal component update pattern with the newer supported approach. This helps keep the app compatible with the platform’s evolving frontend framework without changing day-to-day user workflows.
Original PR description
As part of the Owl 3 migration, this pr aims to replace **onWillUpdateProps** hook with the appropriate Owl 3 alternatives.