Tuesday, August 12, 2025
16 changes · master
Enhancements to existing features
People signing documents through a public link can now see and move to their next pending documents after completing a signature. This makes the signing flow smoother for external partners and reduces missed follow-up documents.
Original PR description
Before this commit, when signing the SENT requests through a link (not logged in Odoo), the next documents to be signed by that partner were not shown. After this commit, the unlogged partner can now go to the next documents after completing the signature of any SENT request received. Co-authored-by: Arnaud Joset <arj@odoo.com> task-4859714
Signature requests created from business records can now reuse an existing signing template while replacing its PDF with an attachment from that specific record. This makes it easier to prepare accurate documents for signing without creating separate static templates for each record.
Original PR description
Before this commit, it was possible to link sign request to records (inheriting mail.thread) but the sign.template were static. This commit allows to copy an existing sign.template and adapt the PDF to one of the attachment of the record. taskid: 4270142
Mobile users now get a dedicated Inbox entry in Discuss and the messaging menu, making mailbox access clearer and faster. Message and composer quick actions are also more consistent across related apps, improving usability in conversations and support workflows.
Original PR description
1. mobile discuss app and messaging menu now has dedicated "Inbox" item _- messaging menu in mobile has to display discuss for mailboxes, therefore the "content" part of Discuss namely `DiscussContent` has been moved into its own component_ 2. message and composer quick actions now use `ActionList` _- action definition and style slightly tweaked_ 3. Discuss action definitions now has typedefs _- registering action is made through `registerXAction()` function, where `X` is thread/message/composer_ 4. `ActionList` component props simplified to `actions` (from `quick`, `other`, `partition`) _- can pass either list of actions (single group) or list of list of actions (actions are visually split in groups)._
Users can now update project budgets while they are still in draft state, including adding new budget lines. This makes budget preparation more flexible and reduces the need to recreate budgets when early details change.
Original PR description
Currently, once the user has created the budget, they are unable to edit it or add new lines, even if the budget is in the draft state. In this commit, we have made it editable in the draft state for the user's convenience. task-4760387
Belgian payroll now excludes PFI contracts when calculating an employee's seniority for departure notice periods. This helps ensure notice periods are generated according to Belgian rules and avoids overstating seniority for affected employees.
Original PR description
When you generate the notice period for leaving employees, you must compute their seniority. In Belgium, PFI contracts should not be taken into account. This commit filters the contracts to ignore PFI ones. task-4788455 Forward-Port-Of: odoo/enterprise#91495 Forward-Port-Of: odoo/enterprise#90902
Helpdesk users can now create additional refunds for an invoice after earlier partial refunds have been paid or are in payment. This keeps invoices available for refunding until the total refunded amount reaches the original invoice total, reducing manual workarounds and supporting more accurate customer service flows.
Original PR description
Previously, users couldn't select an invoice for another refund if all of its credit notes were already paid or in payment — even if the invoice was only partially refunded. For example: If a user created a partial refund for the first time and marked it as paid, the original invoice could no longer be selected for any further refunds. Now, invoices remain available for refunds as long as the total refunded amount is less than the original invoice's amount_total. Task ID: 4582294
Payroll work entries are being simplified to track work duration directly instead of relying on separate start and stop dates. This should make payroll, attendance, leave, expense, and planning calculations more consistent and easier to maintain across related processes.
The mobile Discuss navigation now includes an Inbox entry, making it easier for users to access incoming messages on smaller screens. Related updates ensure messaging, WhatsApp, live chat, and helpdesk interactions continue to work correctly with the navigation change.
Original PR description
Part of task-4967066
Bank statement processing now finds matching partners in batches instead of repeating the same work for every statement line. This reduces database lookups and should make importing or reconciling large bank statements faster and smoother.
Original PR description
The retrieve_partner function is actually executed on each statement line, with multiple search, which is killing performance. This commit change that, so retrieve_partner is executed on a statement line recordset, minimizing the amount of queries on each call. task-4749377 Forward-Port-Of: odoo/enterprise#87444
Businesses can now turn call transcription on or off separately for each VoIP provider instead of having it enabled everywhere when AI VoIP is installed. This helps organizations manage where call data may be transcribed and shared with external services, supporting regional compliance needs.
Original PR description
Until now (after ref.1) call transcription was globally enabled by default once the `ai_voip` module was installed. The only way to prevent transcriptions (and sending data to external entities) was to uninstall the module entirely. This commit introduces a new `transcription_policy` field on the `voip.provider`, allowing transcription to be explicitly disabled per provider. Since providers are typically tied to specific regions, this enhancement improves compliance control across geographies. Planned followup: --- Transcription policy selection field should be expanded with a "user" option, that will allow users to decide if they want their individual calls transcribed. References --- (ref.1) f96d1f4cc52c009a4f55cfaabf7b683bdf9e170d [ADD] ai_voip: end-to-end post-call recording & transcription Related ticket task-4532108
Certified Belgian point of sale setups now guide users to configure the required printer and fiscal data module instead of stopping with an error. When only one fiscal data module is available, the system selects it automatically, reducing setup friction and support needs.
Original PR description
If one wants to use a certified pos without FDM or without printer, open the configuration modal to ease the configuration instead of raising a UserError. If there is only one fdm available, the pos automatically selects this one.
Spreadsheet version history now keeps and shows the actual date each revision was originally made, even after a spreadsheet is duplicated. This helps users better understand when changes happened and trace spreadsheet evolution more reliably.
Original PR description
Currently, when duplicating a spreadsheet along with its revisions, each duplicated revision is assigned the `create_date` of the new record, resulting in all revision timestamps showing the exact same datetime. This prevents users from being able to trace the history of changes and makes it difficult to identify when a specific revision was originally made. To address this issue, a new field of `datetime` type `revision_date` is introduced to stores the actual datetime when the original revision occurred. The version history side panel now displays this `revision_date` field instead of relying on `create_date`, enabling users to accurately track the evolution of spreadsheet changes over time. NOTE: For the 'original data' revision and in order to avoid adding a new field on the spreadsheet model, the timestamp will be hidden. Task-[4854898](https://www.odoo.com/odoo/project/2328/tasks/4854898)
When a salary offer is created, the company car is now selected automatically from the linked contract template when available. If the template has no car, the system uses the employee version’s car instead, reducing manual entry and avoiding missing car assignments.
Original PR description
In this PR, we fixed the assignation of the car in the contract when the contract template for the version has a company car. When creating an offer, automatically set the transportation car based on the linked contract template. If the contract template has no car, fall back to the car defined on the employee version. If neither has a car, leave the field empty. Related task: 4926053.
Payroll menus for versions and offers are now hidden unless debug mode is enabled, reducing clutter for everyday users. Payslip generation has also been improved to avoid creating duplicate payslips for the same person over the same dates, helping payroll teams produce cleaner and more reliable pay runs.
Original PR description
Reference task: https://www.odoo.com/odoo/project/1251/tasks/4988589 - Restricted visibility of "Versions" and "Offers" menu items to debug mode only. - Payslip generation logic filters out employee versions when same start/end date and state Task - 4988589
Bank reconciliation screens have been simplified by removing less-used dropdown navigation, hiding a mostly redundant status, and keeping account assignment easier to access. Attachments that are already inherited from statements are also no longer shown as extra paperclip indicators, reducing visual clutter for accounting users.
Original PR description
- Removing the action of going to the entry of statement line from the dropdown, new the only possibility will be from the list view - Hide the status of the statement line since it's mostly posted - Adding the set account button everytime next to the set partner task-4985155 Forward-Port-Of: odoo/enterprise#91423
Users are now discouraged from directly changing standard spreadsheet dashboards because those changes can be lost during upgrades. This helps business users make more informed edits and reduces the risk of unexpected dashboard changes after an update.