Monday, July 6, 2026
10 changes · saas-18.4
Enhancements to existing features
The Sendcloud delivery option formerly labeled "Use Batch Shipping" is now called "Use Multicollo". This aligns Odoo terminology with Sendcloud wording, reducing confusion for users configuring shipments.
Original PR description
In order to avoid confusion for the customer, "Use Batch Shipping" was renamed to "Use Multicollo".This way it is consistent with the terminology used by Sendcloud. task-6048477 Forward-Port-Of: odoo/enterprise#122133
Resolved issues and error corrections
The WIP Accounting Entry wizard no longer errors when a user temporarily clears the Date field while editing. This keeps the manufacturing accounting workflow usable and avoids an interruption during normal data entry.
Original PR description
Issue Before This PR: When clearing the Date field in the WIP Accounting Entry wizard, an error was raised during the re-computation of dependent fields. This prevented from temporarily emptying the…
Issue Before This PR: When clearing the Date field in the WIP Accounting Entry wizard, an error was raised during the re-computation of dependent fields. This prevented from temporarily emptying the date field while editing the wizard. Steps to Reproduce: - Open the list view of Manufacturing Orders. - Open the Post WIP Accounting Entry wizard by either: - Selecting one or more Manufacturing Orders and choosing Actions ,click Post WIP Accounting Entry - Or, opening a Manufacturing Order form and selecting Post WIP Accounting Entry from the Actions & Reports menu. - Clear the Date field. - Observe that an error is raised. Cause of the Issue: The compute methods _compute_reversal_date() and _compute_line_ids() assumed that wizard.date was always set. When the Date field was cleared, its value became False, but the compute logic still attempted to compare or use the date, resulting in an error. With This PR: The compute methods now verify that wizard.date is set before performing date-dependent computations. This prevents errors when the Date field is temporarily cleared, allowing the wizard to behave correctly during user input. Issue reference: https://github.com/odoo/odoo/issues/246547 Forward-Port-Of: odoo/odoo#273002
Documentation and clarification updates
Several community modules had the wrong license listed in their metadata. This update corrects those records to LGPL-3, helping keep licensing information accurate and compliant.
Original PR description
Before this commit, the license set on manifest of some modules uses the enterprise license instead of `LGPL-3` license since it is a community module. This commit changes the license to set `LGPL-3`. Fixes #205134 Forward-Port-Of: odoo/odoo#274007 Forward-Port-Of: odoo/odoo#273597
This fix prevents payment numbering sequences from being created too early when setting up a new company. It ensures the sequence is linked to the correct company and uses the right year-based numbering format, reducing configuration errors in accounting workflows.
Original PR description
Previously, batch payment sequence will be created by simply select to create new company due to having lambda in default. Hence, the created sequence does not have a correct company_id set as company hasn't yet created. Switch to creating sequence in ``create`` function to avoid this issue. Also use ``range_year`` for payment prefix because it was set to use date range. 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#273487 Forward-Port-Of: odoo/odoo#268689
Forms now avoid running the same automatic update logic multiple times when several related fields change together, such as during initial form opening. This can make form loading and field updates more efficient without changing the expected business behavior.
Original PR description
When an onchange method depends on several fields that all change at once (for example two fields that both have a default value), opening the form triggers that method once per field, even though a single call would suffice. This adds a per-pass set of already-applied onchange methods so that, within the same batch of changed fields, each method is invoked only once. Note this does not guarantee a method is called exactly once overall: it may still run again in later onchange passes; we only remove the redundant calls within a single pass. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#273843 Forward-Port-Of: odoo/odoo#251813
The Project app’s user and administrator role descriptions were rewritten to be grammatically correct and easier to understand. This helps administrators choose the right access level by clearly explaining what each role can do.
Original PR description
This commit improves the grammar of the Project user group description. ### **For User:** **Before -** `User can user the your employees' schedule` **After -** `User: Can manage tasks in projects shared with them.` ### **For Admin:** **Before -** `Administrator can manage the employees' schedule` **After -** `Administrator: Can manage projects and stages, with access to reporting and configuration.` **opw-6340390** Forward-Port-Of: odoo/odoo#273061
This change fixes an unstable automated test for the HTML editor toolbar that could fail depending on browser event timing. It makes the test verify the expected update sequence more reliably, helping keep development and release checks stable without changing user-facing behavior.
Original PR description
### Description of the issue/feature this PR addresses: - Resolve non-deterministic failures in the 'toolbar should not open between double and triple click' Hoot test. - Because browser-level selectionchange events are dispatched asynchronously in the event loop, asserting on the presence of `.o-we-toolbar` in the DOM leads to timing race conditions. ### Solution: - Resolves the flakiness by introducing a wrapper method `triggerDebouncedUpdateToolbar` in `ToolbarPlugin` and refactoring the test to track method call sequences instead of asserting on DOM elements. This verifies the scheduled debounced updates in a deterministic sequence. task: https://runbot.odoo.com/odoo/error/243145 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#273923 Forward-Port-Of: odoo/odoo#273303
The outstanding payments section on invoices now lists payments in a consistent newest-first order. This helps users quickly understand recent payment activity and reduces confusion when reviewing invoices.
Original PR description
Before this commit: The invoice outstanding payments widget was not sorted by date globally, which could lead to confusion for users when viewing the widget. After this commit: This commit adds a sorting mechanism to ensure that the payments are displayed in descending order based on their date and ID. opw-6254080 Forward-Port-Of: odoo/enterprise#121642
Commission plans now reject salesperson start dates that fall outside the plan’s effective period. This prevents invalid commission setup data and helps ensure sales compensation rules are applied consistently.
Original PR description
Version: 18.0 Steps to reproduce: - open sale commission plans and create a new plan with an effective period - go to the salesperson tab and add a salesperson - set the salesperson from date after the plan end date issue: salesperson period start date was accepted even if it was set after the plan end date fix: added validation to raise an error when the salesperson start date falls outside the plan effective period task id: 6241188 Forward-Port-Of: odoo/enterprise#118289
This update prevents a batch payment test from running in setups where the Accountant app is not installed. It avoids false test failures caused by different accounting behavior, improving reliability of quality checks without changing business functionality.
Original PR description
`test_payment_state_after_invoice_edition_without_journal_entry` test fails when `accountant` module is not installed. The test is specific to a case where there is no journal entry linked to a payment. However, when `accountant` module is not installed, a journal entry is always linked to the payment. runbot-941263 Forward-Port-Of: odoo/enterprise#123017