Daily updates from Odoo
Navigate
Branch
Saturday, April 19, 2025
15 changes
New functionality added to Odoo
Adds tools for employees to create fields whose values are generated by AI from existing record information, such as summaries, classifications, sentiment, or lead assignment suggestions. It also lets Studio users configure these AI fields and enables automated server actions that update records using AI prompts, helping reduce manual data entry and standardize decisions.
Original PR description
Purpose: --------- Add AI Fields, AI Property Fields and AI server actions, computed by a LLM based on a prompt. The goal is to allow internal users to configure fields whose values are automatically…
Purpose: --------- Add AI Fields, AI Property Fields and AI server actions, computed by a LLM based on a prompt. The goal is to allow internal users to configure fields whose values are automatically generated or server actions that will update records based on existing record data. Users can reference other fields in the prompt widget using the "/field" command, and other records for relational fields (M2O/M2M) to suggest possible values using the "/record" command. Some use cases include: - Auto-assigning leads to the most suitable salesperson - Performing sentiment analysis on received messages - Generating classifications or summaries Technical: ---------- #### Fields: - Supports ai fields (added manually or using the "ai" attribute in the field definition) and ai properties fields (new option in the property definition editor popover). - Manual computation is available via an "AI" button next to each field in form views. - Prompts are parsed and processed with access to QWeb expressions. Only admins and members of "mail.group_mail_template_editor" can use unrestricted fields. Other users are limited to safe QWeb expressions. - On creation of a new ai field/ai property, we compute the field/property values for existing records using an ai_domain (id > "last id" - 50). - Crons are provided for computing fields/properties on record, ai field or ai property creation or on property definition change: - For ai fields, only NULL textual fields (`char`, `text`, `html`) are processed. We skip non-text fields to avoid overwriting falsy values. An empty string will be written if no answer is returned. - For ai properties, all property types (except separators) for which the key is not present in the properties field are processed. A falsy value is written if no answer is returned. - No dependency tracking is implemented: prompts are not recomputed if referenced fields change after creation. - AI fields can be added from studio, by dragging the new "AI Field" component from the sidebar into the view. #### Server Actions: Adds a new type of server actions, "Update With AI". This new type of actions update a record field (like the standard "Update" actions), but using a prompt instead of code. Task-4526274
Enhancements to existing features
Activities are easier to manage with a clearer default personal filter, simpler activity types, and support for unassigned work items. Completed activities are now retained for reporting, helping teams track history more consistently across business workflows.
Original PR description
Early merge of parts from odoo/enterprise#81992 . Improve activity filtering Idea is to ease activities management, both from personal and global point of view. Now having a default 'My Activities'…
Early merge of parts from odoo/enterprise#81992 . Improve activity filtering Idea is to ease activities management, both from personal and global point of view. Now having a default 'My Activities' filter, instead of a domain. This allows to switch from personal to global activity management easily. Cleanup activity type data Purpose is to have less activity types, as we want people to use some main types instead of having too much of them. Too much activities leads to complicated flows and code. Especially we want to promote usage of plans with better summaries instead of specific types. Always keep activities We now keep all done activities, as it is used in various reporting. Previously it was controller through a 'keep_done' flag. We remove it as it is now considered as standard for all activity types. Note that 'ActivityMixin.activity_unlink()' still unlinks activities as indicated by the name. Use 'activity_feedback' when you want to close activities through the mixin, which is going to archive them. Remark: unlinking activities during a given transaction trigerred a cache invalidation. As it is not the case anymore we had to update some tests so that fields are computed again. This is mainly a test artifact, as in real life data is refreshed through UI. Mainly some triggers should be updated but hey, one thing at a time. Activities can now be unassigned Sometimes you may want to create activities to perform without assigning them directly. We therefore remove the required on user_id field. However in case of personal activities not linked to records (i.e. no model / res_id set) user_id is still required. Reason is that no-one is going to know they exist and take care of them if they don't appear on user activity feed nor documents. Making unassigned activities appear on everyone's activity feed is not a good idea, as in big companies this is going to bloat your activities. allow to schedule personal activities Since https://github.com/odoo/odoo/pull/204571 activities can be personal, aka not linked to a document using (res_model, res_id) pair. In this commit we continue this work by allowing to use the scheduler for personal activities. This PR contains mainly the python and model code to make it work. Interface and flows will be improved soon in an upcoming PR. Task-4592571 Co-Authored-By: Celeste Guilleux <guce@odoo.com>
Timesheet guidance messages were refreshed to make them more useful and broadly applicable for employees. Some less generic tips were removed and new tips were added, helping users receive clearer advice while recording time.
Original PR description
This commit updates the content of some tips and adds some other ones. task-4387146
The field service task form now uses a smaller, consistent font size for the customer preview button. This helps prevent the button text from being cut off and keeps the form visually aligned with other action buttons.
Original PR description
Before this commit, the customer preview stat button displayed in fsm task form view has a font size bigger than the other stat buttons and so the text of that button could be cropped compared of the other buttons. This commit reduces the font size to make the same font size than the other buttons. task-4662072
Budget actions in the project dashboard now clearly appear as clickable items. This makes it easier for users to identify where they can add or open budget information from the project side panel.
Original PR description
Before this commit, the button `Add budget` and the budget sections displayed in the project right side panel are not displayed as clickable element, which means the cursor does not indicate the element is clickable. This commit adds a `href` on those buttons to make sure the cursor shows those elements are clickable as expected. task-4593181
Several Odoo screens now show their action controls sooner, so users can start interacting with pages without waiting for all data to finish loading. The update also keeps Planning and Studio behavior stable where custom loading flows need special handling.
Original PR description
*: account_accountant, planning, knowledge, web_studio, website_studio This commit is the counter-part of https://github.com/odoo/odoo/pull/205129, where list, kanban, graph and pivot views have been tweaked s.t. their control panel is shown directly, without waiting for the data to be ready. This commit disables the feature in custom list and kanban views in planning, because those views customize the way data is fetch (to fetch additional data), and this doesn't map very well with the strategy implemented in https://github.com/odoo/odoo/pull/205129. This commit also fixes the x2many edition in studio, where a new type of root datapoint can be spawned (StaticList), and a tour that must now explicitely wait for the data to be ready. task-4282605
Resolved issues and error corrections
The Belgian POS certification module now works correctly with the redesigned user form. This ensures the INSZ number field appears where expected, helping Belgian POS users maintain required user information without disruption.
Original PR description
The pos_blackbox_be module was broken in master because PR #190466 rewrote the UI of the users form, causing the xpath used in the view inheritance to fail. This commit updates the xpath to work with the new UI structure, ensuring that the INSZ number field displays correctly in the user form. Here's a screenshot of the result: <img width="1149" alt="Screenshot 2025-04-18 at 09 41 58" src="https://github.com/user-attachments/assets/c9ef839a-cdbc-4661-889f-ccce24288022" />
The VoIP softphone window now adjusts its height to match the user's screen size. This prevents parts of the calling interface from being cut off on smaller displays, making it easier for users to access all call controls.
Original PR description
Since the redesign of VOIP in commit 52b3065993c41c6b7c65dda586a66fdd865b3afd, the height of the softphone component wasn't responsive. This could prevent access to the entire layout if the viewport was too small. This commit adjusts the height of softphone to suit the viewport. task-4413793 | Before | After | |--------|--------| |  |  |
Code cleanup and technical improvements
The live update service used by IoT features has been moved into a shared base module so it can support more users and scenarios. Screen rotation and related IoT flows now use this live update mechanism, improving responsiveness without changing the visible workflow.
Original PR description
In order to provide lonpolling features to community users, we moved the longpolling service from the IoT app to the `iot_base` module. We then adapted the screen rotation logic to use longpolling instead of a simple fetch. Community PR: [https://github.com/odoo/odoo/pull/205949](https://github.com/odoo/odoo/pull/205949) Task: 4480523
The Colombian electronic invoicing module updates how the portal address page behavior is implemented. This is an internal modernization that keeps the customer experience consistent while aligning the code with newer website interaction standards.
Original PR description
task-4653701 Community PR: https://github.com/odoo/odoo/pull/201730
Miscellaneous changes
A followup report will crash if some partner don't have followup responsible. Bug introduced in commit https://github.com/odoo/enterprise/commit/42cdb3658688630c143797620a6b3c236defa08e Forward-Port-Of: odoo/enterprise#83563
Original PR description
A followup report will crash if some partner don't have followup responsible. Bug introduced in commit https://github.com/odoo/enterprise/commit/42cdb3658688630c143797620a6b3c236defa08e Forward-Port-Of: odoo/enterprise#83563
This PR fixes an issue where the switch buttons in the documents module had incorrect padding when clicking on the activity switch view button.This fix ensures proper spacing and alignment across the interface. Task-4680512 Forward-Port-Of: odoo/enterprise#82747
Original PR description
This PR fixes an issue where the switch buttons in the documents module had incorrect padding when clicking on the activity switch view button.This fix ensures proper spacing and alignment across the interface. Task-4680512 Forward-Port-Of: odoo/enterprise#82747
Tests were moved to l10n_ch_hr_payroll_elm_account in https://github.com/odoo/enterprise/pull/64454 Forward-Port-Of: odoo/enterprise#83619 Forward-Port-Of: odoo/enterprise#81018
Original PR description
Tests were moved to l10n_ch_hr_payroll_elm_account in https://github.com/odoo/enterprise/pull/64454 Forward-Port-Of: odoo/enterprise#83619 Forward-Port-Of: odoo/enterprise#81018
This PR fixes two behavior on the lipe xml export in Italy. --- The first one linked to this fix: https://github.com/odoo/enterprise/commit/7323435468c8db15cd5643f7d6ecf5928ab2f3dc . It makes sure the options are gathered the right way depending on whether we export the xml from the report or from the closing entry. --- The second one makes sure the closing entry move is posted when the xml export is done pressing the "Post" button on it. --- no-task Forward-Port-Of: odoo/ente
Original PR description
This PR fixes two behavior on the lipe xml export in Italy. --- The first one linked to this fix: https://github.com/odoo/enterprise/commit/7323435468c8db15cd5643f7d6ecf5928ab2f3dc . It makes sure the options are gathered the right way depending on whether we export the xml from the report or from the closing entry. --- The second one makes sure the closing entry move is posted when the xml export is done pressing the "Post" button on it. --- no-task Forward-Port-Of: odoo/enterprise#83659 Forward-Port-Of: odoo/enterprise#83503
Fw-port Transifex translations from major version to non-major versions Also copied changes done in v18 by https://github.com/odoo/enterprise/commit/717db6525383a181ae0d211989824ddd1413712b: In Swiss localization: - Re-added in help descriptions that were removed in field overrides since they nicely describe what the codes represent - removed f-string that wasn't exporting with older version of Babel as it wasn't needed Will fix opw-4614757 Forward-Port-Of: odoo/enterprise#82037 Forwar
Original PR description
Fw-port Transifex translations from major version to non-major versions Also copied changes done in v18 by https://github.com/odoo/enterprise/commit/717db6525383a181ae0d211989824ddd1413712b: In Swiss localization: - Re-added in help descriptions that were removed in field overrides since they nicely describe what the codes represent - removed f-string that wasn't exporting with older version of Babel as it wasn't needed Will fix opw-4614757 Forward-Port-Of: odoo/enterprise#82037 Forward-Port-Of: odoo/enterprise#82009