Daily updates from Odoo
Thursday, July 3, 2025
13 changes · master
Enhancements to existing features
Tax return setup has been streamlined so country-specific returns can be created automatically from their configuration. This reduces duplicate setup work and makes it easier to maintain reporting across many localizations while preserving flexibility for custom cases.
Original PR description
Previously, we had to define the return type in data and also instanciate it in Python. Now, we can specify the country_code when defining the return type which will allow it to be created in the base function generate_all_returns, if it's not specified it can still be created by hand with a custom override of the function. task-4841751
Front desk host and responsible user choices are now limited to people from the selected company, reducing mistakes in multi-company setups. The update also clarifies selection options and ensures notifications reach hosts through the right available channel.
Original PR description
The purpose of this change is to ensure that hosts and responsible users are selected only from the appropriate company in a multi-company environment. This PR includes the following changes: - Added a Hosts field restricted to employees of the selected company. - Made the Hosts field visible only when the Host Selection checkbox is enabled. - Restricted Host Selection to the hosts of the selected station. - Updated the Responsibles field to allow selection only from users in the same company. - Added tooltips for Host Selection and Responsibles to clarify their purposes. - Updated the /get_hosts API to enforce host selection restrictions. Task - 4657837
The bank reconciliation widget no longer shows a link to the bank journal entry when that entry is simply the bank transaction itself. This reduces clutter and helps users focus on relevant reconciliation information.
Original PR description
Before this PR: Link to the bank journal entry was shown in bank reco widget. After this PR: If the journal entry linked is the bank itself, then it will not be shown in bank reco widget. task-4872789 Forward-Port-Of: odoo/enterprise#87753
The stock barcode app's automated tests were moved to a newer testing framework. This helps maintain reliability for barcode picking workflows without changing day-to-day user behavior.
Original PR description
This commit converts and adds the QUnit tests into the HOOT suite. task-4028356
Starshipit shipping labels no longer block delivery confirmation when the final shipping cost is not immediately available. Odoo temporarily records a zero cost, then automatically retrieves the final price later and updates both the delivery and related sales order so customers and staff see the accurate charge.
Original PR description
**Description of the issue/feature this PR addresses:** This PR enhances the Starshipit integration to reliably handle scenarios where the exact shipping cost is not immediately available from…
**Description of the issue/feature this PR addresses:** This PR enhances the Starshipit integration to reliably handle scenarios where the exact shipping cost is not immediately available from Starshipit after label creation. Cost is fetched via a cron job and correctly applied to both the stock.picking's carrier_price and, crucially, the corresponding Sales Order delivery line. First commit removes the 3-tries loop, and was already reviewed on this [PR](https://github.com/odoo/enterprise/pull/85088). **Current behavior before PR:** When confirming a picking with a Starshipit Delivery method, the exact Shipping cost was not instantly available. The previous code had 3 attempts to retrieve it, before stopping the process, asking the user to try at a later time. **Desired behavior after PR is merged:** The price fetching becomes non-blocking. If Starshipit did not return an immediate `total_shipping_price`, a temporary price of 0.0 will be used. A Cron job will then run on all pickings with a 0.0 carrier price in order to fetch the exact price from Starshipit, and update the SO delivery lines. opw-4748113 When merging on `master`, further improvement might be to introduce a `starshipit_pending_price` boolean field instead of running the CRON job on all 0.0 carrier price pickings. With the new view `view_picking_form_inherit_stock` being introduced, runbot tests fail when migrating to saas-18.1. (Because view is not yet present in the saas-18.1 codebase) **How to test?** - On a runbot DB, install the `delivery_starshipit` module - Configure the DB to interact with the connector - Place a Sales Order with a delivery method configured to use Starshipit. - Confirm the Delivery. The shipping price, if not available, will be temporarily set to 0.0. - Run the Cron Job manually. You can check and activate the Cron by navigating to Settings > Technical > Automation > Scheduled Actions. - Check that the SO has been updated with the actual shipping price from Starshipit. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#89184 Forward-Port-Of: odoo/enterprise#86383
Website administrators can now open the website generator directly from the website settings. This makes it easier to import or set up a website at any time, without needing to go through the initial onboarding flow.
Original PR description
Added a button in the website settings that redirects to the website generator configurator. The goal is to have a standart way to import a website without necessarily behing part of the onboarding flow.
Demo employee records for Laurie Poiret and Max Durand now use the Belgian CP200 salary structure instead of a US setup. This makes Belgian payroll demo data more accurate and helps users see the right configuration for Belgian employees.
Original PR description
In the demo data, Laurie Poiret and Max Durand had the US structure type by default. This commit sets their structure type to CP200 as they belong to the belgian company. task-4879577
Salary configurator labels and terms now translate correctly when users switch from English to another language. This improves the experience for multilingual HR teams by reducing untranslated text in contract salary setup screens.
Original PR description
Originally, some terms remain untranslated when changing the language from English. Thus, those terms have been adjusted to adhere to automatic translation
The salary package page now keeps the salary section visible while users scroll through related benefits and personal information. This makes it easier for employees or HR users to review compensation details alongside the rest of the package without losing context.
Original PR description
this commit makes the salary section sticky in the whole page. Some CSS tweaks were applyied along with some tweaks in the template to make it possible. Most important change is to make the `salary_package_benefits` , `salary_package_sidebar` and `salary_package_personal_information` inside the same `div` to make the sticky effect work properly. task-4878562
The AI module can now build assistant guidance dynamically from templates, making future AI agents easier to tailor to different business situations. This lays groundwork for more context-aware AI features, such as natural language search, while keeping the current change mostly internal.
Original PR description
- I see `ai.agent._generate_response` as an entry point to communicating with the agent, whether we want the direct response from the llm or the user chats with the agent. - In the future, we'll be introducing different types of `ai.agent`, each has its own responsibility. E.g. the natural language search feature will have a custom ai.agent for it. It will have it's own set of dynamic system prompts (computed based on the situation). I propose these dynamic system prompts to be defined as qweb templates which are rendered when system messages are computed. - [ ] tests for the html_to_markdown function
Spreadsheet filters have been aligned with a recent change so relation filters now rely on the underlying record identifiers rather than display names. This keeps spreadsheet behavior consistent and helps prevent mismatches when records have similar or changing names.
Original PR description
This commit updates the tests to align with the changes made in the `ODOO.FILTER.VALUE` formula, as the value returned by the formula for a relation filter is now the technical value (ids) instead of the display value. Task: 4910291
Once a salary offer is generated, users can access available offers through the related smart button. This makes generated offers easier to find and reduces confusion in the recruitment and employee salary workflow.
Original PR description
Since an offer is generated, a user can access the available offers from the smart button Task: 4762685
Financial reporting now avoids creating temporary database tables and views for budget and analytic analysis, using direct queries instead. This should make those reports easier to run on read-only database servers and reduce database overhead, without changing report content.
Original PR description
- temporary view for the analytic groupby replaced by a query directly - temporary table for the budget also replaced by a query directly - temporary table for cash_basis not replaced as we are not sure about the impact We can also use readonly servers for budget and analysis as we dont need to create a table/view task-4841765