Tuesday, July 1, 2025
9 changes · saas-18.4
Enhancements to existing features
Purchase routing rules can now use either standard receipt or dropship operation types. This makes it easier to configure dropshipping flows separately from regular warehouse receipts, reducing setup confusion for businesses using both processes.
Original PR description
*: stock_dropshipping With this commit ======================== Previously, only 'Receipt' operation types could be selected for rules with the 'Buy' action. However, with a dedicated 'Dropship' operation type, it's now possible to distinguish between standard receipts and dropship flows. This commit enhances the route rule configuration by allowing both 'Receipt' and 'Dropship' operation types to be selectable for 'Buy' actions. Now that 'Dropship' is an operation type, allowing it for 'Buy' rules ensures correct flow setup for dropshipping scenarios. task-4353843
The Time Off app now shows a helpful balance banner when viewing an employee's time off from their profile, making remaining leave easier to understand. It also corrects manager access when creating leave for subordinates and fixes balances by excluding expired allocations.
Original PR description
When coming from the time off smartbutton on the employee, having a small banner indicating the number of leaves remaining is useful. This PR adds this banner, the same as in the time off dashboard. The PR also fixes two bugs: - When an employee is a time off manager of another employee, he has access to the time off management menu. There, he can create new time offs for all subordinates employees. The field employee_id had the group hr_holiday_user, which is wrong as the time off managers don't necessarilly have this group. Removing the group allows the time off managers to select the correct employee, and the domain on the employee field ensures that the manager can only select subordinates employees. - In hr_leave kanban cards, the time off balance for that time off type is shown. The amount were incorrectly computed. This PR fixes the issue by filtering out the expired leave allocations. Forward-Port-Of: odoo/odoo#213792
This update refines several website builder controls so users can pick colors, switch builder tabs, and edit links more reliably. It also improves the visual consistency of color pickers and prevents template preview images from being cropped, making page customization smoother and clearer.
Original PR description
### [IMP] html_builder, website: improve color palette select UI This brings back the color palette on two columns and styles closer to what it looked like before [1]. [1]:…
### [IMP] html_builder, website: improve color palette select UI This brings back the color palette on two columns and styles closer to what it looked like before [1]. [1]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4879833 ### [FIX] html_builder: fix colors of theme tab colorpicker Commit [1] was supposed to fix the theme tab in colorpickers, but the variables were set on the wrong element. As the picker's popover is in another part of the DOM, the variables need to be set either on the `html` or the `body` element. [1]: https://github.com/odoo/odoo/commit/4a48b7ce1257 task-4367641 ### [FIX] html_builder: improve focus on builder tabs The `:focus-visible` state on the builder tabs (Add, Edit, Theme) clashed with the highlight styles as the outline did not have the same width and height. Additionally, `:focus-visible` and `:hover` states were incompatible. task-4879833 ### [FIX] html_builder: prioritize link popover over button overlays In the website builder, the button overlays may sometimes appear over the link popover. Adding a sequence makes sure that the buttons will appear first in the DOM order, and therefore under most other overlays. Steps to reproduce: - Drop enough snippets to have a scrollbar. - On the 1st snippet, have an inner column with a small width (just to make sure that the buttons will appear at the "right" place) and a button or a link at the bottom. - Click on the button => The overlay buttons appear over the link popover. task-4879833 ### [IMP] html_builder, web: integrate BuilderColorPicker styles Use dark styles for the BuilderColorPicker, like the rest of the builder interface. task-4879833 ### [FIX] website: do not crop template option We now insert actual images instead of svgs for the "Template" option on dynamic snippets. The alt is also fixed. task-4879833
When an online payment provider is activated, Odoo now automatically assigns the appropriate outstanding account to the related payment method. This reduces manual setup work and keeps payment accounting consistent with the Invoicing module, while excluding manual payment methods without external integrations.
Original PR description
In this PR: - When activating an Online Payment provider that creates a payment.method.line in a journal, automatically assign an Outstanding account to the payment method. - Uses the existing Outstanding Account resolution method from Invoicing module to ensure consistency across the system. - Applied to all Online Payment Providers that rely on provider integration, excluding manual payment providers without external integrations. task-4826385 Forward-Port-Of: odoo/odoo#216364 Forward-Port-Of: odoo/odoo#213554
Invoices can no longer be sent by email when the customer has no email address on file. This prevents invoices from being marked as sent incorrectly and prompts users to add the missing email first.
Original PR description
On send and print, When a partner has no email a popup prompts the user to add one but the `Send` button remains active. As a result, the email is sent to an invalid address, and the invoice is incorrectly marked as sent. We should block sending invoices by email if the partner has no email (same behavior as on Sales Orders). Task [link](https://www.odoo.com/odoo/project.task/4882552) task-4882552 Forward-Port-Of: odoo/odoo#215425
Discuss now keeps conversations visually stable while loading and uses smoother scrolling when jumping to the latest message or a specific message. This makes chat navigation feel more polished, especially on slower connections or in long conversations.
Original PR description
Before this commit, jump to present and to message in a discuss conversation was visually unappealing. This comes from: - jump to present scrolling is instantaneous, instead of smooth. - jump to…
Before this commit, jump to present and to message in a discuss conversation was visually unappealing. This comes from: - jump to present scrolling is instantaneous, instead of smooth. - jump to message scroll direction is always from top, when the frequent use-case is jump to older message thus should scroll to top. - message list is empty while the thread is loading, so the slower the connection the most visually unappealing it was. This commit improves scrolling experience with jump to present and jump to message as follow: - jump to present uses a smooth scroll effect similarly to jump to message - jump to message scroll direction is based on whether the message is older or newer to loaded set of messages. - message list stay visually in place while thread is loading. Task-4589532 Before  After 
Payroll runs can now generate payslips from a selected list of employees as well as from existing contract versions. This makes payroll processing more flexible when employee work entries are used and helps ensure the right contracts are selected automatically for the pay period.
Original PR description
Problem ---------- Generation of payslip with valid_versions is not enough flexible With work entries, we have to generate payslips for employees. Objective ---------- Change the _get_valid_versions_domain to _get_valid_versions to get only ids Adapt the signature of generate_payslips to use employees or versions to generate payslips Solution ---------- Now the _get_valid_versions give the valid versions ids, so we can directly browse them or add them in a domain, the domain is not forced The generate_payslips can work with versions (first argument by default) and employees, if employee_ids are given, this will fetch valid versions for these employee depending on the pay run config directly. So via the front, we can call generate_payslips with a list of employees if we don't have versions directly. (it will automatically select all contracts valid in the range of payrun as before with contracts) task-4900019
Users registering SEPA Direct Debit payments now see a banner listing any partners who do not have a valid SEPA mandate. This helps staff quickly identify which customer records need attention before payments can be processed.
Original PR description
When users try to register one or multiple payments with 'SEPA Direct Debit' method, and one or more partners don't have a valid SEPA mandate, a banner alerts the user and mention the names of the concerned partners. This makes it easier for the user because he directly sees the partners for which he has to set a SEPA mandate. task-4575537 runbot : https://runbot.odoo.com/runbot/bundle/18-0-sepa-missing-links-roto-353391 Forward-Port-Of: odoo/enterprise#81019
HR users can now open the employee contract version linked to a partially signed offer in a read-only view before countersigning. The signed contract button also consistently opens the correct version, including after a page refresh, reducing confusion during contract review.
Original PR description
New Versions tied to partially signed contracts are now read-only. A smartbutton for HR to view the employee version before countersigning. The smart button exists within the offer form view when the offer is partially-signed, it redirects to a read-only view of the employee version based on the partially signed contract. Fixes When the contract is countersigned, clicking on the "signed contract" smart button now leads to the correct version view. When the page is refreshed, the correct version is still loaded. Task-4873800