Daily updates from Odoo
Wednesday, August 27, 2025
11 changes
2 changes
Resolved issues and error corrections
This fixes a checkout issue where changing a product image layout in the website editor could make the Add to Cart and wishlist buttons stop working. The storefront now finds the correct product form even when the page layout places the button outside its usual position, helping customers complete purchases reliably.
Original PR description
## Version saas-18.4+ ## Steps to reproduce - Open the shop; - Select any product; - Open the Editor: - Select the product's main image; - Change the image width to either `100 percent` or `None`,…
## Version
saas-18.4+
## Steps to reproduce
- Open the shop;
- Select any product;
- Open the Editor:
- Select the product's main image;
- Change the image width to either `100 percent` or `None`, then save;
- Click on `Add to cart`.
## Issue
Commit bbb2d98d9ab97ce729d59b9858b63daccf5434e2 introduced a UI update that reorganizes the layout of the product configurator, placing the `Add to cart` button next to the form rather than below it.
Although the button remains inside the form in the original template, using the Editor to adjust the layout can result in the button being saved outside the `<form>` element in the final DOM.
This breaks the logic that relies on `closest('form')` to locate the surrounding form, since the button is no longer a descendant of the form element.
## Solution
Find the first product form relative to the button, since it may be a sibling rather than an ancestor in the DOM.
opw-4942986
See also:
- https://github.com/odoo/enterprise/pull/90631This fix prevents certain IoT-connected printers from disappearing when their connection method briefly changes during availability checks. Businesses can keep printing reliably because the system recognizes the printer by its IP address and preserves the existing print queue entry.
Original PR description
Some printers (`lpd...PASSTHRU`s for example) tend to disappear when checking available printers list. They are often switching between one time `lpd...PASSTHRU` and the second time `socket...` protocols. As we get ip addresses for printers, we now check if the new protocol still correspond to the same printer, and if so, we keep the old one. As the printer will still be in the cups queue list, it will still be able to print through it.
9 changes
Enhancements to existing features
Several Odoo dashboards now include carousel-style navigation, making it easier for users to browse dashboard content in a more focused way. This improves the dashboard experience across accounting, CRM, helpdesk, payroll, recruitment, marketing automation, manufacturing, purchasing, and rental reporting areas.
Original PR description
This commit updates the dashboards to include the new carousel feature. Part of task: 4851982
Belgian 281.50 tax reporting now includes sportsman activity information, helping businesses meet reporting requirements for these payments. The update also separates first names for natural persons in XML exports to better match official specifications.
Original PR description
## IMP] l10n_be_reports: 281.50 add sportsman activities The aim of this commit is to cover the sport activities part of the 281.50 reports. Context: During the initial dev we ignored that feature as it wasn't our main focus. Now, the feature matured and some customer needs it. Task-id: 4919018 ## [IMP] l10n_be_reports: 281.50 handle natural person first name The aim of this commit is to comply with the 281.50 official specs by handling the first name of natural person and setting it in the xml. Before this commit: We don't handle first name and we set the whole partner.name as the name. After this commit: We handle first name and assume it is everything after the last ', ' separation. Task-id: 4919018
Users can now access the Ask AI natural language query feature directly from the main command palette using CTRL+K, instead of needing to switch to the slash command area. This makes AI assistance more discoverable and reduces extra steps, while caching also helps avoid unnecessary background requests.
Original PR description
This commit allows access to the ask ai command (natural language query feature) from the default namespace (CTRL+K) for better UX. After this commit, Ask AI agent can now be access from both the "/" and default namespace. To accomplish the feature, we need to override the `setCommands` of the CommandPalette component because it has special handling of "default" commands -- it filters out the commands not similar to the searchValue. However, we want the Ask AI command to be always there (showing as well the searchValue). So, when we see that the set of filtered commands has zero items, that's the time we insert the Ask AI command. We are also now caching the Ask AI agent to avoid unnecessary rpc calls. See illustration: https://youtu.be/lJWY8RC4V5I
Creating recurring prices on subscription products is now more straightforward: users add fixed prices directly in the list instead of going through an extra pricing dialog. The pricing screen is also clearer by hiding non-fixed price entries that could appear misleading and by reordering the Pricelist and Plan fields.
Original PR description
From this PR onwards, when adding a new recurring price on a product, the usual dialog window with the choice for complex pricing isn't shown anymore. The list view is used to add new prices and it defaults to a fixed price. The position of the Pricelist and of the Plan has also been inverted. Task: 5021972
The Belgian POS blackbox connection now retries detection and records clearer logs when identification fails. This helps reduce cases where certified fiscal hardware is not recognized correctly, making troubleshooting faster and operations more reliable.
Original PR description
This PR adds a retry mechanism and a logger to better identify and prevent cases where a blackbox isn't correctly identified as such Forward-Port-Of: odoo/enterprise#92489
Resolved issues and error corrections
The scheduled subscription invoicing process now looks beyond the initial batch before deciding whether more work should be triggered. This prevents eligible subscriptions from being skipped when earlier records in the batch are not ready to invoice, helping invoices run on time.
Original PR description
Change was introduced here https://github.com/odoo/enterprise/pull/82340 that caused the cron trigger to not be activated if any of the 31 in the batch of subscriptions found was not to invoice. This is problematic because there could be other subscriptions that meet the domain requirements and the to invoice requirements that are not being seen because the limit is on the search before we check invoiceability. Added a limit to _get_subscriptions_to_invoice instead of on the search in order to take into account both filters for next cron triggers. opw-4850884 Forward-Port-Of: odoo/enterprise#92690 Forward-Port-Of: odoo/enterprise#89787
Employee appraisal skill records now keep important extra information, such as the justification text, when skill levels are changed or copied. This prevents appraisal details from being unintentionally erased and helps maintain a complete employee evaluation history.
Original PR description
Allow models that inherit the hr_individual_skill mixin to specify additional fields to be included/preserved/carried-over when writing/creating new skill records. This was already an issue in the `hr_appraisal_skill` module where the `Justification` field was not included when copying/creating new skills. As a result, the field was "erased" on every skill level change task-4984689 Forward-Port-Of: odoo/enterprise#91772
Fixes an issue where adjusting the checkout time from the weekly Attendance view could save the current time instead of the time selected by the user. This helps keep employee attendance records accurate when managers edit checkout times in the Gantt interface.
Original PR description
Steps to Produce: - Go to the Attendance interface and select week. - Drag the second half of the column to adjust checkout. - Save the change. Issue: - Dragging on half cell deletes the checkout value from the context. - As a result, the system sets the checkout time to the current time instead of the dragged value. - This leads to incorrect attendance records. Fix: - Ensure the checkout value remains in the context when dragging the cell. - Preserve the modified checkout time so it reflects the user's intended change instead of defaulting to the current time. Task-4958060 Forward-Port-Of: odoo/enterprise#93092 Forward-Port-Of: odoo/enterprise#91119
Fixed an issue in Odoo Sign where initials selected in the Add Initials dialog could be added but not shown on multi-page PDFs. Users now see their initials immediately on the document, whether applied to one page or all pages.
Original PR description
Issue: * When uploading a multi-page PDF and choosing an option in the `Add Initials` dialog, the initials were not visible. * This happened because the old `postRender` used to call `refreshSignItems`, but that code was removed in a recent refactor. Fix: * Call `refreshSignItems()` directly after inserting the initials. * Ensures initials appear immediately whether added on one page or across all pages. Impact: * Users now see their initials properly rendered on the document after making a choice in the dialog.