Daily updates from Odoo
Navigate
Branch
Thursday, March 9, 2023
26 changes
Enhancements to existing features
Users can now find Knowledge articles using the custom properties defined on those articles. This makes it easier to organize and retrieve relevant knowledge content based on business-specific fields.
Original PR description
This will let users search the articles by custom properties (properties that users have defined on the articles). Task-3220869
Helpdesk notification emails now follow updated recipient grouping logic to better support each recipient's language and translated notification actions. This helps customers and agents receive clearer, more localized email communications.
Original PR description
See community PR for more details. This commit simply updates enterprise code (overrides) accordingly. Task-3186426 (Mail: Support notification layout in template / email composer)
Users can now see property fields directly in list views for Helpdesk and Knowledge records. This makes it easier to review important custom information at a glance without opening each individual item.
Project workspaces in Documents now include a “Create a task” action in the demo setup. This makes it easier for users to turn project-related documents into actionable tasks, improving follow-up and project organization.
Original PR description
Description of the feature this PR addresses: - added "Create a task" action to the documents_project demo data Odoo community PR: [105694](https://github.com/odoo/odoo/pull/105694) Task-3067445
Knowledge articles now show icon, cover, and properties actions in the top bar, making them easier to find and reducing extra spacing around article titles. The update also improves properties panel behavior and refreshes article date information more accurately when users open the options menu.
Original PR description
Purpose: - Introducing a new "knowledge_icon" field widget to remove the usage of owl directives in the arch view. Move the "Add Icon", "Add Cover" and "Add Properties" buttons from the article body…
Purpose: - Introducing a new "knowledge_icon" field widget to remove the usage of owl directives in the arch view. Move the "Add Icon", "Add Cover" and "Add Properties" buttons from the article body to the topbar, to remove the margin between the title and the topbar, and to make them easier to find (they now appear when hovering the topbar). The "Add Properties" button is now also shown for root articles, but it is disabled and has a tooltip explaining that the feature is not available for root articles, so that users don't search for this button on root articles. This commit also fixes the properties panel not showing when hiding it and opening another article with the same number of properties. Now, the properties panel is always opened by default if an article has properties. It also fixes the "last edited" and "create" dates in the option panel, which were not updated properly: previously, these were updated when the topbar was patched. However, since the option panel uses bootstrap, the topbar is not patched when opening this option panel. Therefore, if you edited an article, waited for a few seconds, and opened the options panel, it was written that the article had been last modified 0 seconds ago. Now, these dates are updated when opening the bootstrap dropdown instead of when the topbar is patched. This commit also cleans the code of the renderer and the topbar, by trying to remove duplicate and dead code as much as possible. Task-3193808
Odoo now supports capturing only part of an authorized payment directly from a sales order or invoice when the payment provider allows it. This gives businesses more flexibility for subscription billing and helps avoid unintended full captures when only a partial amount should be taken.
Original PR description
Before this commit, it was not possible to partially capture a transaction from Odoo, and doing so in the provider backend would often result in a full capture in Odoo when capture was supported. With this commit, partial captures are made available in Odoo directly from the sales order or invoice, for providers that support them. Provider can either only support full capture or also support partial ones. It also optionally managed the automatic void of the remaining amount at the user request when multiple captures are supported by the provider. For subscription, this mean that the tests had to be adapted accordingly. task-2728768 See also: - https://github.com/odoo/odoo/pull/87251 - https://github.com/odoo/documentation/pull/2063
Spreadsheet lists now automatically include data filters, making it easier for users to sort through and focus on relevant records. The update also clarifies internal naming around global filters, reducing confusion for future maintenance without changing the business workflow.
Original PR description
Add data filters in spreadsheets. When inserting a list in a spreadsheet, a data filter will automatically be added to it. Rename global filters plugins and getters to avoid confusion between filters and global filters. Rename: - plugin `FiltersEvaluationPlugin` to `GlobalFiltersEvaluationPlugin` - plugin `FiltersPlugin` to `GlobalFiltersPlugin` - getter `isFitlerActive` to `isGlobalFilterActive` - getter `getActiveFilterCount` to `getActiveGlobalFilterCount` - getter `getFilterDisplayValue` to `getGlobalFilterDisplayValue` Odoo task 2585911
Users can now copy and paste figures in Odoo spreadsheets, making it easier to reuse visual elements such as charts or other inserted figures. This improves productivity when preparing spreadsheet-based documents and reports by reducing repetitive manual recreation.
Original PR description
Odoo task [2799851](https://www.odoo.com/web#id=2799851&menu_id=4720&cids=1&action=333&active_id=2328&model=project.task&view_type=form)
Newly inserted or copied Odoo graphs in spreadsheets are now selected right away, making it clearer which chart the user is editing. This improves the spreadsheet experience by reducing extra clicks and aligning chart behavior with user expectations.
Original PR description
Adapt changes from o_spreadsheet of the opening of the chart side panel in the Odoo tests. Odoo task [2982377](https://www.odoo.com/web#id=2982377&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
Spreadsheet context menus were simplified by removing less-used options, reducing clutter for users. Pivot and list actions are now accessed from the spreadsheet topbar under the Data category, keeping important tools available in a more organized place.
Original PR description
Remove some context menu items to reduce cluttering. Adapt the tests to use the menu items in the topbar instead. There is now a "data" category in the topbar menu of o_spreadsheet, append the pivot/list menu items to it instead of remplacing the category. Odoo task [2936630](https://www.odoo.com/web#id=2936630&menu_id=4720&cids=1&action=333&active_id=2328&model=project.task&view_type=form)
The spreadsheet editing feature was adjusted to work with an updated internal error-handling process. This helps keep spreadsheet interactions reliable and aligned with the latest platform behavior, with no expected change to day-to-day usage.
Original PR description
Odoo task [3090717](https://www.odoo.com/web#id=3090717&menu_id=4720&cids=1&action=333&active_id=2328&model=project.task&view_type=form)
Resolved issues and error corrections
The preparation display now ignores products without categories, such as discount or loyalty items, preventing crashes during order preparation. It also sends only the correct preparation stages to each display, helping kitchen or preparation teams see accurate order progress.
Original PR description
*:pos_preparation_display Problem with categories: Before, when a product without a category was sent to the display preparation it caused a crash. Now it is no longer possible to send products without a category to the preparation display. Namely, products without a category are mainly those linked to a discount or loyalty. Problem with stages: Previously, order_stages not belonging to a display preparation were sent to it because of a bad filter in `process_order`. Now the filter has been corrected and this problem is no longer a problem. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The UNSPSC selection list now displays the code when users open the expanded search results. This makes it easier to identify and choose the correct classification, reducing lookup mistakes.
Original PR description
Before this PR when clicking the search more button when searching unspsc, the list view was missing the "code". This PR corrects that. task-id: 3213803
Code cleanup and technical improvements
This update rebuilds Odoo's grid views with a newer interface foundation, reducing data sent from the server and making grids easier to maintain. Timesheets, forecasting, sales timesheets, analytics, and consolidation grids are updated, improving performance and preparing these views for future enhancements.
Original PR description
Purpose ======= The main goal is to convert the grid view in OWL to be able to remove the legacy code. Also, the API has been reviewed to be able to use sample server as it is the case in the other…
Purpose ======= The main goal is to convert the grid view in OWL to be able to remove the legacy code. Also, the API has been reviewed to be able to use sample server as it is the case in the other views. Implementation Details ---------------------- ### web_grid The grid view structure is now built in the JS as the others views based on the data fetched. Those data are now fetched via read_group method as the others views to be able to use the sample server without reimplementing the python methods implemented only for the grid in JS. It means the `read_grid` and `read_grid_grouped` are no longer used and removed. The group expand was not correctly supported in the grid view, only the section field triggered the group_expand of the field used for section and if the group expand is needed for the fields used in rows then the inner method called by `read_grip` and `read_grid_grouped` is override. Currently, the group expand will be prepared in JS to call an extra read_group to get those data. The advantage by doing that is the data passed has been drastically reduced since the structure of the grid view (header, rows, cells) are no longer computed in server side. #### Others changes made - `adjust_grid` method has been replaced by `grid_update_cell` - `grid_unavailability` method has been added to be able to return the unavailability dates of the current user or the employees in the grid section (in the case of timesheets). ### timesheet_grid*, project_timesheet_forecast, sale_timesheet_enterprise - convert timer header component has been reviewed to be able to convert the timer timesheet grid view in OWL. - convert timesheet grid in OWL. - convert timer timesheet grid in OWL with timer header component for My Timesheets grid view. ### analytic_enterprise An override was made to change the period start and end according to fiscal year dates defined in the current company when the range scale is `Year`. This override is now made in custom new method called `grid_compute_year_range` and this method is called before the column are generated if the range scale is in `Year`. ### account_consolidation The custom grid view has been converted in OWL. An override was made to make cell in readonly if the journal is auto_generated. This behavior is now done when the many2one columns are fetched to get the readonly columns. task-2702636 Co-authored-by: Xavier Bol (xbo) <xbo@odoo.com> Co-authored-by: Audric Onockx (auon) <auon@odoo.com> Co-authored-by: Elisabeth Dickinson <edi@odoo.com>
The spreadsheet document feature was reorganized so its interface components and templates are split into clearer parts. This makes the feature easier to maintain and extend in future updates, with little direct impact on day-to-day users.
Original PR description
Odoo task 2813881
Spreadsheet template data is now prepared on the server instead of in the browser. This keeps the business-facing spreadsheet code simpler and reduces unnecessary technical handling in the user interface without changing how users work with templates.
Miscellaneous changes
The minimum package weight accepted by FedEx is 0.01 Kg, which is incorrectly specified as 0.1 in the code after refactoring. opw-3210371 Forward-Port-Of: odoo/enterprise#37952
Original PR description
The minimum package weight accepted by FedEx is 0.01 Kg, which is incorrectly specified as 0.1 in the code after refactoring. opw-3210371 Forward-Port-Of: odoo/enterprise#37952
Currently, the inverse method of the is_user_favorite field is implemented to always toggle the value, no matter what we actually set on the record. This commit fixes the method by correctly computing whether we want to enable or disable the favorite. The "action_toggle_favorite" method is adapted accordingly. Some tests were also modified to ensure the behavior is consistent. Task-3207966 Forward-Port-Of: odoo/enterprise#37918
Original PR description
Currently, the inverse method of the is_user_favorite field is implemented to always toggle the value, no matter what we actually set on the record. This commit fixes the method by correctly computing whether we want to enable or disable the favorite. The "action_toggle_favorite" method is adapted accordingly. Some tests were also modified to ensure the behavior is consistent. Task-3207966 Forward-Port-Of: odoo/enterprise#37918
If applied, this commit will solve the feedback survey issue. Before this commit: ===================== when we ask for feedback from any recipient(s) multiple times. it will raise an error like this 'list' object has no attribute 'filtered'. It will raise when we select the same recipient(s) in the same appraisal form again and click on the 'Send' button. After this commit: ===================== It will allow work multiple times when we click on the 'Send' button and returns the exist
Original PR description
If applied, this commit will solve the feedback survey issue. Before this commit: ===================== when we ask for feedback from any recipient(s) multiple times. it will raise an error like this 'list' object has no attribute 'filtered'. It will raise when we select the same recipient(s) in the same appraisal form again and click on the 'Send' button. After this commit: ===================== It will allow work multiple times when we click on the 'Send' button and returns the existing_answers. There is some variable issue that is also fixed in this commit: 'answer' > 'answers'. see - https://tinyurl.com/2fyjufzx sentry - 3968724337 Forward-Port-Of: odoo/enterprise#37753
Remove the escape method since it'll be properly escaped in the template. See the community commit. Forward-Port-Of: odoo/enterprise#37738 Forward-Port-Of: odoo/enterprise#37533
Original PR description
Remove the escape method since it'll be properly escaped in the template. See the community commit. Forward-Port-Of: odoo/enterprise#37738 Forward-Port-Of: odoo/enterprise#37533
When saving the worksheet in quality_mrp_workorder_worksheet, no action is returned on a pass so we get a: TypeError: Cannot read properties of undefined (reading 'context') This fix ensures that nothing needs to be done if no action is returned and we can also remove the useService("action"). Forward-Port-Of: odoo/enterprise#37950
Original PR description
When saving the worksheet in quality_mrp_workorder_worksheet, no action is returned on a pass so we get a:
TypeError: Cannot read properties of undefined (reading 'context')
This fix ensures that nothing needs to be done if no action is returned and we can also remove the useService("action").
Forward-Port-Of: odoo/enterprise#37950This commit remove the condition on the separator in the website_knowledge module to separate the added buttons by inheritance from the rest of the share panel. Before this commit, when an article was readonly the separator was not present. Now, either if we are in readonly or not the separator is visible. task-3211699 Forward-Port-Of: odoo/enterprise#37707
Original PR description
This commit remove the condition on the separator in the website_knowledge module to separate the added buttons by inheritance from the rest of the share panel. Before this commit, when an article was readonly the separator was not present. Now, either if we are in readonly or not the separator is visible. task-3211699 Forward-Port-Of: odoo/enterprise#37707
**Current behavior before PR:** If the user opens the trashed article and then switches to any active article via the tree panel, clicking on the share button share panel won't display. This is because the state "displaySharePanel" wasn't updated for the above case. **Desired behavior after PR is merged:** The share button element added to dependency function of useEffect hook. If there is a change in the button state, the useEffect will be re-executed and expected behavior will work.
Original PR description
**Current behavior before PR:** If the user opens the trashed article and then switches to any active article via the tree panel, clicking on the share button share panel won't display. This is because the state "displaySharePanel" wasn't updated for the above case. **Desired behavior after PR is merged:** The share button element added to dependency function of useEffect hook. If there is a change in the button state, the useEffect will be re-executed and expected behavior will work. Task-3106375 Forward-Port-Of: odoo/enterprise#37592
Steps to reproduce: - change the reference uom for weight and archive the kg record - create an intrastat invoice Result: - each report line appears twice opw-3188272 Forward-Port-Of: odoo/enterprise#37932 Forward-Port-Of: odoo/enterprise#37841
Original PR description
Steps to reproduce: - change the reference uom for weight and archive the kg record - create an intrastat invoice Result: - each report line appears twice opw-3188272 Forward-Port-Of: odoo/enterprise#37932 Forward-Port-Of: odoo/enterprise#37841
Before this PR the label of account_depreciation_id and account_depreciation_expense_id were not the same is the list and form view, this pr corrects that task-id: 3215877 Forward-Port-Of: odoo/enterprise#37811
Original PR description
Before this PR the label of account_depreciation_id and account_depreciation_expense_id were not the same is the list and form view, this pr corrects that task-id: 3215877 Forward-Port-Of: odoo/enterprise#37811
### Steps to reproduce - create an asset associated with a bill, and confirm. - in the `Depreciation Board` tab, try to modify the depreciation amount of one of the lines You should be met with the following traceback: ```py RPC_ERROR Odoo Server Error Traceback (most recent call last): File "/home/odoo/src/odoo16/odoo/odoo/http.py", line 1584, in _serve_db return service_model.retrying(self._serve_ir_http, self.env) File "/home/odoo/src/odoo16/odoo/odoo/service/model.py", li
Original PR description
### Steps to reproduce - create an asset associated with a bill, and confirm. - in the `Depreciation Board` tab, try to modify the depreciation amount of one of the lines You should be met with the…
### Steps to reproduce
- create an asset associated with a bill, and confirm.
- in the `Depreciation Board` tab, try to modify the depreciation amount of one of the lines
You should be met with the following traceback:
```py
RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/src/odoo16/odoo/odoo/http.py", line 1584, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/home/odoo/src/odoo16/odoo/odoo/service/model.py", line 134, in retrying
result = func()
File "/home/odoo/src/odoo16/odoo/odoo/http.py", line 1613, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/src/odoo16/odoo/odoo/http.py", line 1810, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/src/odoo16/odoo/odoo/addons/base/models/ir_http.py", line 149, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/src/odoo16/odoo/odoo/http.py", line 699, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/src/odoo16/odoo/addons/web/controllers/dataset.py", line 42, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/odoo/src/odoo16/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/src/odoo16/odoo/odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/src/odoo16/odoo/odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/odoo/src/odoo16/enterprise/account_asset/models/account_asset.py", line 328, in onchange
return super().onchange(values, False, {
File "/home/odoo/src/odoo16/odoo/odoo/models.py", line 6465, in onchange
snapshot0.fetch(name)
File "/home/odoo/src/odoo16/odoo/odoo/models.py", line 6277, in fetch
self[name] = [Snapshot(line, tree[name]) for line in record[name]]
File "/home/odoo/src/odoo16/odoo/odoo/models.py", line 6277, in <listcomp>
self[name] = [Snapshot(line, tree[name]) for line in record[name]]
KeyError: 'original_move_line_ids'
```
opw-3119727
opw-3146212
Forward-Port-Of: odoo/enterprise#37400