Daily updates from Odoo
Thursday, March 21, 2024
46 changes
21 changes
Resolved issues and error corrections
This fixes cases where users could see internal technical action names in the web interface. Client actions will no longer fall back to these technical labels, keeping screens clearer and more user-friendly.
Original PR description
Since [1], it's now possible to set a display name on a client action, but a fallback to the action's name was also added. The issue with this, is that the action's name is a very technical one, and we don't want to display it to the user. [1] https://github.com/odoo/odoo/commit/3ad4fd65387f60b524e5f786556963ead8ae9dfe
Miscellaneous changes
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#157954 Forward-Port-Of: odoo/odoo#157817
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#157954 Forward-Port-Of: odoo/odoo#157817
This PR introduces a new configuration parameter 'event.event_mail_async' forcing registrations-based communication to be asynchronous. Instead of directly sending communication it triggers the cron to be run as soon as possible. When having large volume of registrations, and especially concurrent registrations it saves a DB to avoid generating tickets and preparing emails synchronously to the registration creation. Task-3764894: Event: Allow using cron triggers for communication Par
Original PR description
This PR introduces a new configuration parameter 'event.event_mail_async' forcing registrations-based communication to be asynchronous. Instead of directly sending communication it triggers the cron to be run as soon as possible. When having large volume of registrations, and especially concurrent registrations it saves a DB to avoid generating tickets and preparing emails synchronously to the registration creation. Task-3764894: Event: Allow using cron triggers for communication Part of Task-3084943: Event: Improve communication scheduler scalability Forward-Port-Of: odoo/odoo#155777
An error occurs when the user attempts to access a forecast report for the replenishment product but does not receive the warehouse location ID (archive/delete). Steps to reproduce: (without demo data) - Install "stock_account" module - Inventory -> Operation -> Procurement -> Replenishment - Create a new Replenishment product - Configuration -> warehouse -> Archive warehouse records - Go to a product made in the replenishment and click on forecast report Traceback : ```IndexError:
Original PR description
An error occurs when the user attempts to access a forecast report for the replenishment product but does not receive the warehouse location ID (archive/delete). Steps to reproduce: (without demo…
An error occurs when the user attempts to access a forecast report for the replenishment product but does not receive the warehouse location ID (archive/delete).
Steps to reproduce: (without demo data)
- Install "stock_account" module
- Inventory -> Operation -> Procurement -> Replenishment
- Create a new Replenishment product
- Configuration -> warehouse -> Archive warehouse records
- Go to a product made in the replenishment and click on forecast report
Traceback :
```IndexError: list index out of range
File "odoo/http.py", line 2251, in __call__
response = request._serve_db()
File "odoo/http.py", line 1826, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1847, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1824, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1832, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2057, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 222, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 740, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 34, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 30, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/stock/report/stock_forecasted.py", line 21, in get_report_values
'docs': self._get_report_data(product_ids=docids),
File "addons/stock/report/stock_forecasted.py", line 126, in _get_report_data
res.update(self._get_report_header(product_template_ids, product_ids, wh_location_ids))
File "addons/sale_stock/report/stock_forecasted.py", line 34, in _get_report_header
res = super()._get_report_header(product_template_ids, product_ids, wh_location_ids)
File "addons/purchase_stock/report/stock_forecasted.py", line 11, in _get_report_header
res = super()._get_report_header(product_template_ids, product_ids, wh_location_ids)
File "addons/stock_account/report/stock_forecasted.py", line 17, in _get_report_header
company = self.env['stock.location'].browse(wh_location_ids[0]).company_id
```
This commit will help to open a forecast report if the warehouse location is not found.
sentry-4998176742
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#158017### Steps to reproduce: - Install **Field service** app. - Go to Field Service app and create a new task, with Allocated Time of 5 hours. - In the new ticket, Log 5 hours in the **TimeSheets** tab. - Go to the tasks list. - Notice how the progress bar of the new task shows **1** _instead_ of **100** although 5 out of 5 hours have been logged. ### Investigation: - 8389722b1abdef029799c3c082a44e30dafb24b1 introduced the new **ProjectTaskProgressBarField** component. - 4a93d9aee957dd3feb3
Original PR description
### Steps to reproduce: - Install **Field service** app. - Go to Field Service app and create a new task, with Allocated Time of 5 hours. - In the new ticket, Log 5 hours in the **TimeSheets** tab. - Go to the tasks list. - Notice how the progress bar of the new task shows **1** _instead_ of **100** although 5 out of 5 hours have been logged. ### Investigation: - 8389722b1abdef029799c3c082a44e30dafb24b1 introduced the new **ProjectTaskProgressBarField** component. - 4a93d9aee957dd3feb3db0cb69eb3b8f0f4a4683 introduced a change to calculate the `task.progress` as a _fraction_ instead of a _percentage_ https://github.com/odoo/odoo/blob/7280dd53bc14f7c398c63a1f719987bcab7c257a/addons/hr_timesheet/models/project_task.py#L102 - But the **ProjectTaskProgressBarField** wasn't adapted to that change working with percentage values. opw-3790397 Forward-Port-Of: odoo/odoo#157825
Before this commit, when the current user did not have `hr.group_hr_user` group and creates a timesheet for an employee in his team, he could get a traceback before one field defined only `hr.employee` model cannot be fetched in `hr.employee.public` by the ORM. The reason is because when the user creates a timesheet in a task without any company set, we will take the company of the employee set on the timesheet to set it in the new timesheet, by doing that, the ORM will prefetch the fields of `h
Original PR description
Before this commit, when the current user did not have `hr.group_hr_user` group and creates a timesheet for an employee in his team, he could get a traceback before one field defined only…
Before this commit, when the current user did not have `hr.group_hr_user` group and creates a timesheet for an employee in his team, he could get a traceback before one field defined only `hr.employee` model cannot be fetched in `hr.employee.public` by the ORM. The reason is because when the user creates a timesheet in a task without any company set, we will take the company of the employee set on the timesheet to set it in the new timesheet, by doing that, the ORM will prefetch the fields of `hr.employee` and returned the company from its cache. This commit makes sure we will not have any issue when we try to get the company of the employee to set in the new timesheet if one field defined in `hr.employee` is not defined in `hr.employee.public` and has to be prefetched by the ORM. Steps to reproduce (in 17+) ================== 0. install `hr_timesheet` and `pos_blackbox_be` modules. 1. create a user A with `hr_timesheet.group_hr_timesheet_approver`, without any access to Employee app 2. create a project and a task without any company set (default value) 3. log in as user A 4. go to the form view of task created in step 2 5. add a timesheet and save the form view Expected Behavior ================= The timesheet should be added in the task and the form view should be saved without any issue. Actual Behavior =============== A traceback is occured saying "The fields 'insz_or_bis_number' you try to read is not available on the public employee profile" opw-3769277 Forward-Port-Of: odoo/odoo#156506
# Context With 17.0 the `mail.alias.domain` was introduced, allowing the configuration of the bounce, catchall and default from email addresses at the company level (`res_company`). For this purpose, the `_compute_email_from` method was introduced to correctly compute the `email_from` in various email contexts. But, the `email_from` field in mass_mailing was using an obsolete combination of `default=` and a compute method. This meant that when one created a new `mailing.mailing` record,
Original PR description
# Context With 17.0 the `mail.alias.domain` was introduced, allowing the configuration of the bounce, catchall and default from email addresses at the company level (`res_company`). For this purpose,…
# Context With 17.0 the `mail.alias.domain` was introduced, allowing the configuration of the bounce, catchall and default from email addresses at the company level (`res_company`). For this purpose, the `_compute_email_from` method was introduced to correctly compute the `email_from` in various email contexts. But, the `email_from` field in mass_mailing was using an obsolete combination of `default=` and a compute method. This meant that when one created a new `mailing.mailing` record, it was always defaulting to `self.env.user.email_formatted`. The compute was only triggered when the `mail_server_id` field manually updated. This is corrected with this fix and a unit test was added to test three different use cases. An invisible `create_uid` was added to the base mailing From view xml to have the compute method trigger correctly in some unit tests. ## How to reproduce bug: See related github issue https://github.com/odoo/odoo/issues/151310 ## Behavior after this fix: If `mail.alias.domain` is setup for the company and a default `ir.mail_server` is configured for Email Marketing, `_compute_email_from` will select the expected `email_from` at record creation for `mailing.mailing`. opw-3704715 Fixes #151310 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#152655
When the user inserts a video with the `/video` command and provides a link of an unlisted vimeo video, the system generates a new url based on the options selected but omits the hash parameter granting access to the given video. As a result, the video can not be loaded and the vimeo `iframe` indicates that the video does not exist. To fix the issue, we will copy the hash parameter from the original link to the newly generated url. That way, the video will be loaded properly and the user will
Original PR description
When the user inserts a video with the `/video` command and provides a link of an unlisted vimeo video, the system generates a new url based on the options selected but omits the hash parameter…
When the user inserts a video with the `/video` command and provides a link of an unlisted vimeo video, the system generates a new url based on the options selected but omits the hash parameter granting access to the given video. As a result, the video can not be loaded and the vimeo `iframe` indicates that the video does not exist. To fix the issue, we will copy the hash parameter from the original link to the newly generated url. That way, the video will be loaded properly and the user will be able to embed unlisted vimeo videos. Steps to reproduce the issue: 1. Install the website app 2. Open the website builder 3. Drag and drop a text block 4. In the text block, type the `/video` command to insert a video 5. In the modal, paste the link of an unlisted video 6. The `iframe` indicates that the video does not exist => The system should extract the hash parameter from the provided url and set it on the generated url. The video should then be loaded properly. task-3697764 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#157279 Forward-Port-Of: odoo/odoo#150663
Steps to reproduce: - Enter in edit mode. - Select the 'Header' menu. - Switch the default template to 'Rounded box menu'. - Select again the 'Header' menu and on the 'Navbar' details, update the format value (i.e: 10px) and save. -> Problem: some buttons are not affected by the change of the format value. The problem is that since [1], those buttons have the `rounded-circle` class so their font size is not the custom one (but it is the value of `$font-size-base` instead). To solve
Original PR description
Steps to reproduce: - Enter in edit mode. - Select the 'Header' menu. - Switch the default template to 'Rounded box menu'. - Select again the 'Header' menu and on the 'Navbar' details, update the format value (i.e: 10px) and save. -> Problem: some buttons are not affected by the change of the format value. The problem is that since [1], those buttons have the `rounded-circle` class so their font size is not the custom one (but it is the value of `$font-size-base` instead). To solve the problem, the css rule has been adapted in order to force the font size of the buttons inside the header to the custom value if it exists. [1]: https://github.com/odoo/odoo/commit/e3e9c492e0d1e009a0c459a1dc591e122b4b65d3 opw-3810794 Forward-Port-Of: odoo/odoo#158135
Removed background color of crm enrich mail messages, so that they look good on both light and dark mode Related task: 3541419 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#158119 Forward-Port-Of: odoo/odoo#158003
Original PR description
Removed background color of crm enrich mail messages, so that they look good on both light and dark mode Related task: 3541419 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#158119 Forward-Port-Of: odoo/odoo#158003
The push-to-talk extension service sends a message to the extension when starting to check if it is enabled. If the response is received before the RTC service is started, the answer is ignored, and the service acts as if the extension were not available. This PR fixes this issue. Forward-Port-Of: odoo/odoo#158252
Original PR description
The push-to-talk extension service sends a message to the extension when starting to check if it is enabled. If the response is received before the RTC service is started, the answer is ignored, and the service acts as if the extension were not available. This PR fixes this issue. Forward-Port-Of: odoo/odoo#158252
Since [1] when the social share widget was introduced, a hashtag is generated from the name of the website that is found inside the page title. This fails when the page title is replaced through the SEO feature. This commit prevents the failure but not extracting the website name if it is missing from the title. Steps to reproduce: - Install website_forum. - Go to a forum post. - Set SEO title to a value without `|` (pipe). - Share to X. => An error popup was shown. [1]: https:/
Original PR description
Since [1] when the social share widget was introduced, a hashtag is generated from the name of the website that is found inside the page title. This fails when the page title is replaced through the SEO feature. This commit prevents the failure but not extracting the website name if it is missing from the title. Steps to reproduce: - Install website_forum. - Go to a forum post. - Set SEO title to a value without `|` (pipe). - Share to X. => An error popup was shown. [1]: https://github.com/odoo/odoo/commit/1c91e27c8c8cb7492d26f03e27c4991b53a1675d opw-3799914 Forward-Port-Of: odoo/odoo#158064
Before this commit, radio buttons in the offcanvas filters (displayed on mobile) were not working as they should: clicking on the label worked fine but the click on the radio itself did not trigger anything. We impeach input's `pointer-event` so, the `<a>` becomes main and only interaction This commit also fixes an contrast issue in the tag filter in the offcanvas task-3649662 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-
Original PR description
Before this commit, radio buttons in the offcanvas filters (displayed on mobile) were not working as they should: clicking on the label worked fine but the click on the radio itself did not trigger anything. We impeach input's `pointer-event` so, the `<a>` becomes main and only interaction This commit also fixes an contrast issue in the tag filter in the offcanvas task-3649662 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#147129
Purpose of this commit: Currently, people having access to different dashboards without any access rights would end up with a traceback when trying to search more employees. Steps to reproduce this issue: - have a user with timesheet officer rights and no hr rights - log in with that user account - go on the dashboard app and select "Timesheets" - go on employee filter and click on "search more" Current behaviour: A traceback is displayed because the user has no access to the view
Original PR description
Purpose of this commit: Currently, people having access to different dashboards without any access rights would end up with a traceback when trying to search more employees. Steps to reproduce this…
Purpose of this commit: Currently, people having access to different dashboards without any access rights would end up with a traceback when trying to search more employees. Steps to reproduce this issue: - have a user with timesheet officer rights and no hr rights - log in with that user account - go on the dashboard app and select "Timesheets" - go on employee filter and click on "search more" Current behaviour: A traceback is displayed because the user has no access to the view Expected behaviour: The public employee search view should be displayed How the issue was fixed: The method called `_get_views` has been overriden in the `hr.employee` model to return the `hr.employee.public` views instead if the user doesn't have the appropriate access rights. As there was no way through the dashboard to define a relation, the method explicitely takes the result for the public employee and sets it as result of the private one as well. Forward-Port-Of: odoo/odoo#158096 Forward-Port-Of: odoo/odoo#155739
`_get_checkout_steps` didn't provide a friendly way to add steps in the checkout flow. Developers had to reimplement part of the parent logic in their overrides. This commit introduces `get_checkout_step_list`. This method will allow an easier override of the checkout steps while keeping the logic to return a single step in the parent method. Forward-Port-Of: odoo/odoo#158026
Original PR description
`_get_checkout_steps` didn't provide a friendly way to add steps in the checkout flow. Developers had to reimplement part of the parent logic in their overrides. This commit introduces `get_checkout_step_list`. This method will allow an easier override of the checkout steps while keeping the logic to return a single step in the parent method. Forward-Port-Of: odoo/odoo#158026
Since [1] when the "Padding (Y, X)" option was added, form elements are recognized as columns because they match the `.row > div` selector of that new option. This commit excludes those form elements from this option's selector. Steps to reproduce: - Drop a website form. - Click on field's input. => An empty "Column" editor appeared in the side panel, and an error occurred when trying to delete it. [1]: https://github.com/odoo/odoo/commit/11418cc6f0afcc8e14869f4f38ae0d6d462ac712
Original PR description
Since [1] when the "Padding (Y, X)" option was added, form elements are recognized as columns because they match the `.row > div` selector of that new option. This commit excludes those form elements from this option's selector. Steps to reproduce: - Drop a website form. - Click on field's input. => An empty "Column" editor appeared in the side panel, and an error occurred when trying to delete it. [1]: https://github.com/odoo/odoo/commit/11418cc6f0afcc8e14869f4f38ae0d6d462ac712 task-3748574 Forward-Port-Of: odoo/odoo#157572
The barcode service using jquery for chrome on mobile is not working properly without jquery included, we include it here task-3817495 Forward-Port-Of: odoo/odoo#158275
Original PR description
The barcode service using jquery for chrome on mobile is not working properly without jquery included, we include it here task-3817495 Forward-Port-Of: odoo/odoo#158275
Steps to reproduce: * Create a product tag (available on ecommerce) * Select that filter on the /shop page * Enter a search string -> Traceback The selected tag is given as a string to the autocomplete route, and not a list of ids, which fails when converted to an 'in' domain leaf. `[('product_variant_ids.all_product_tag_ids', 'in', tags)]` This commit makes sure to convert the given ids to a list, correctly handled by the orm. Fixes #155327 Forward-Port-Of: odoo/odoo#1554
Original PR description
Steps to reproduce:
* Create a product tag (available on ecommerce)
* Select that filter on the /shop page
* Enter a search string
-> Traceback
The selected tag is given as a string to the
autocomplete route, and not a list of ids,
which fails when converted to an 'in' domain leaf.
`[('product_variant_ids.all_product_tag_ids', 'in', tags)]`
This commit makes sure to convert the given ids to a list, correctly handled by the orm.
Fixes #155327
Forward-Port-Of: odoo/odoo#155430Steps to reproduce: - - Create 4 products: Final product (FP), Product 1,2,3 (P1,P2 and P3) - Set routes to manifacture on each product - For P1, P2, P3 add a 0:0 reordering rule. - Add a BOM for P2 with 1 unit of P1 as components - Add a BOM for P3 with 1 unit of P2 as components - Add a BOM for FP with 1 unit of P3 and of P2 as components The MO overview of a FP should look like this : ``` FP /\ / \ P3 P2 | | P2 P1 | P1 ``` - Create and confirm a
Original PR description
Steps to reproduce: - - Create 4 products: Final product (FP), Product 1,2,3 (P1,P2 and P3) - Set routes to manifacture on each product - For P1, P2, P3 add a 0:0 reordering rule. - Add a BOM for P2…
Steps to reproduce:
-
- Create 4 products: Final product (FP), Product 1,2,3 (P1,P2 and P3)
- Set routes to manifacture on each product
- For P1, P2, P3 add a 0:0 reordering rule.
- Add a BOM for P2 with 1 unit of P1 as components
- Add a BOM for P3 with 1 unit of P2 as components
- Add a BOM for FP with 1 unit of P3 and of P2 as components The MO overview of a FP should look like this :
```
FP
/\
/ \
P3 P2
| |
P2 P1
|
P1
```
- Create and confirm a manufacturing order for a FP
Current behavior:
-
As the quantity on hand is not sufficient to manufacture a FP, manufacturing orders are automatically created for P3, P2 and P1. However, the quantity on each of these MOs is of 1 unit.
Expected behavior:
-
Since 2 units of P2 and of P1 will be required to manufacture the FP the quantity of their respective MOs should be at 2.
Cause of the issue:
-
Confirming the MO for FP will call the trigger_scheduler() on its raw stock move:
https://github.com/odoo/odoo/blob/79813f08e5a2f0188ac7d184d000486f25319503/addons/mrp/models/mrp_production.py#L1291
https://github.com/odoo/odoo/blob/f3ef40da0406bb0fd683dce3a08739e247fd6dfc/addons/stock/models/stock_orderpoint.py#L495
In this method, we compute the qty to order for the orderpoints of P2 and P3. Since these ones are positive, procurement will be run for both of these leading to the creation of 2 new MO's via the manufacture route. The post process of the scheduler is then run https://github.com/odoo/odoo/blob/f3ef40da0406bb0fd683dce3a08739e247fd6dfc/addons/stock/models/stock_orderpoint.py#L550
An override of this method in mrp will then find the created MO and confirm these, triggering the above process once more but now for the MO's of P3 and P2 rather than FP: we start by computing the qty to order for the orderpoints of P2 and P1 to manufacture P3 and P2. However, to compute this quantity, we look at the forecast of these quantities and this is where the problem comes in:
https://github.com/odoo/odoo/blob/f3ef40da0406bb0fd683dce3a08739e247fd6dfc/addons/stock/models/stock_orderpoint.py#L284
With the orderpoint of P2:
- `virtual_available` is at a value of -1 since there is currently 2 stock moves taking this product (one to manufacture FP and one to manufacture P3) and one stock move bringing one unit of this product (the one coming from the MO of P2 we are currently trying to confirm).
- `orderpoint._quantity_in_progress()` has a value of 1 due to the MO of P2 that we are currently confirming.
Adding these quantities to one an other, the forecasted qty of P2 is at 0. This is a mistake since the incoming stock move for P2 is counted twice in the forecast qty: once in each term. As a result no new procurement will be generated for P2 hence the issue.
FIX:
-
Since this `_quantity_in_progress()` seems to have been introduced to improve purchase flows rather than to interact with manufacturing flows: https://github.com/odoo/odoo/commit/943da6df0f1d39e8e10869b25c5ba8cc13a2aa54
We decided to ignore its contribution during our manufacturing flow for the forecast qty to be correctly computed.This requires to ignore the contribution of each mo triggering the scheduler and those that already triggered the scheduler since the confirmation of the MO of FP.
Notes: The test sets a little more complex MO overview than the above use case to be sure to catch corner cases situations.
opw-3689920
-
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#153400**Current behaviour before commit:** After selecting cells in table, moving cursor through arrowkeys doesn't deselect cells. **Desired behaviour after commit:** Now cells are getting deselected. task-3718716 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153365
Original PR description
**Current behaviour before commit:** After selecting cells in table, moving cursor through arrowkeys doesn't deselect cells. **Desired behaviour after commit:** Now cells are getting deselected. task-3718716 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153365
This commit fixes an issue where one could interract with the load more button of the kanban view even in sample data mode. task-3754233 Forward-Port-Of: odoo/odoo#157740
Original PR description
This commit fixes an issue where one could interract with the load more button of the kanban view even in sample data mode. task-3754233 Forward-Port-Of: odoo/odoo#157740
5 changes
Resolved issues and error corrections
This update removes an automatically installed module, `partner_autocomplete`, from the project module. This fix addresses a previous issue where shared projects with portal users would encounter internal server errors due to missing module files. The change ensures smoother operation for shared projects.
Original PR description
Issue: ------ The `partner_autocomplete` module is an automatically installed module. This module is not included in the dependencies and can therefore be uninstalled. If `partner_autocomplete` is uninstalled and we go to a shared project with a portal user for example, we get an internal server error, as we don't have access to the `partner_autocomplete` files. Solution: --------- Remove the `partner_autocomplete` files from the manifest file of the `project` module. Note: If the widget is not found (in the very rare case of uninstalling the `partner_autocomplete` module), we will use the default widget (and create a log). opw-3774575 Forward-Port-Of: odoo/odoo#157865 Forward-Port-Of: odoo/odoo#157411
Documentation and clarification updates
This pull request formally records the signing of a legal agreement (CLA) by Hari1119. This ensures compliance with Odoo's open-source licensing and strengthens our commitment to the Odoo community. The change involves adding a documentation file detailing this agreement.
Original PR description
Signed a individual CLA Forward-Port-Of: odoo/odoo#156234
This pull request updates the documentation to include a legal agreement (CLA) signature for a contribution by ZhongduoduoQAQ. This ensures the code adheres to Odoo's licensing terms and allows for proper attribution. It’s a standard process for accepting contributions into the Odoo project.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#157957
This pull request formally signs Odoo's Contributor License Agreement (CLA), ensuring compliance with our open-source licensing. This update is a standard legal step for contributors and doesn't impact Odoo's functionality. It strengthens our commitment to the Odoo community.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#157960
This pull request formally records that santiagopim has signed the Odoo Contributor License Agreement (CLA). This is a necessary step for santiagopim to contribute code to the Odoo project, ensuring compliance with our licensing terms. With the CLA now signed, santiagopim can begin contributing to Odoo.
Original PR description
Description of the issue/feature this PR addresses: Sign CLA agreement for santiagopim Current behavior before PR: No CLA signed Desired behavior after PR is merged: CLA signed --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#157955
15 changes
Enhancements to existing features
The webshop demo data now includes a Wood option under product colors, shown with a wood image instead of a plain color. This makes the demo more visually appealing and highlights that color-style product choices can use images, with new Acoustic Bloc Screens examples in White and Wood.
Original PR description
This commit introduces 'Wood' as a new attribute value in the Color attribute (display type = color) for the demo data. Unlike traditional colors, 'Wood' is represented by an image (wood.png), enhancing the demo's visual appeal and showcasing the image upload feature for color displays. The commit also includes two new variants for the 'Acoustic Bloc Screens' product: one in 'White' and another in 'Wood'. This addition demonstrates the flexibility and capability of our attribute system in a more dynamic demo setting. task-3581924 See odoo/odoo#153112
The Referrals app onboarding text can now be translated for users in different languages. This helps companies provide a more localized and accessible onboarding experience for international teams.
Original PR description
This PR makes the Referrals onboarding translatable
Miscellaneous changes
When disposing of an asset after an increase, we have 2 assets in the recordset. Where we should have used `asset`, we used `self` Forward-Port-Of: odoo/enterprise#58838
Original PR description
When disposing of an asset after an increase, we have 2 assets in the recordset. Where we should have used `asset`, we used `self` Forward-Port-Of: odoo/enterprise#58838
Ensure an avatar is generated based on the employee/user name if no image is provided at the record creation (for internal users only). Taskid: 3637523 X-original-commit: 9d11d2087378e1a56333e11daa18e6dc1b8c655e Forward-Port-Of: odoo/enterprise#58860
Original PR description
Ensure an avatar is generated based on the employee/user name if no image is provided at the record creation (for internal users only). Taskid: 3637523 X-original-commit: 9d11d2087378e1a56333e11daa18e6dc1b8c655e Forward-Port-Of: odoo/enterprise#58860
Versions -------- - 15.0+ Steps ----- 1. Have a public holiday; 2. add a planning slot overlapping the holiday; 3. go to Project / Reporting / Timesheets and Planning Analysis. Issue ----- Planned Hours includes holiday hours. Cause ----- The SQL query generating the report only looks at standard workdays. Solution -------- In the SQL query, add a left join on `resource.calendar.leaves` and only select dates date that don't overlap with an employee's leave. opw-3509155
Original PR description
Versions -------- - 15.0+ Steps ----- 1. Have a public holiday; 2. add a planning slot overlapping the holiday; 3. go to Project / Reporting / Timesheets and Planning Analysis. Issue ----- Planned Hours includes holiday hours. Cause ----- The SQL query generating the report only looks at standard workdays. Solution -------- In the SQL query, add a left join on `resource.calendar.leaves` and only select dates date that don't overlap with an employee's leave. opw-3509155 Forward-Port-Of: odoo/enterprise#58867 Forward-Port-Of: odoo/enterprise#56847
Steps to produce: - add new form from editor on website - add action create ticket on it - submit ticket on multi-company environment. Cause: access error while submit ticket with multi-company Solution: access ticket using sudo resolve this issue. task-3635784 Forward-Port-Of: odoo/enterprise#58882 Forward-Port-Of: odoo/enterprise#53389
Original PR description
Steps to produce: - add new form from editor on website - add action create ticket on it - submit ticket on multi-company environment. Cause: access error while submit ticket with multi-company Solution: access ticket using sudo resolve this issue. task-3635784 Forward-Port-Of: odoo/enterprise#58882 Forward-Port-Of: odoo/enterprise#53389
Forward-Port-Of: odoo/enterprise#58973
Original PR description
Forward-Port-Of: odoo/enterprise#58973
Currently, log-level errors occur when WhatsApp webhooks are called, and the app secret may be missed. This commit changes 'logger.error' to 'logger.warning' since this is not an error in the codebase. sentry-4482005357 Forward-Port-Of: odoo/enterprise#47521
Original PR description
Currently, log-level errors occur when WhatsApp webhooks are called, and the app secret may be missed. This commit changes 'logger.error' to 'logger.warning' since this is not an error in the codebase. sentry-4482005357 Forward-Port-Of: odoo/enterprise#47521
The Customs values for a commodity needs to be the values of the entire package. Currently, the value per unit is set which results in the following warning. ``` { 'Severity': 'WARNING', 'Source': 'crs', 'Code': '448', 'Message': 'The sum of internationalDetail commodities customs value amounts do not the equal the internationalDetail customs value amount; the greater customs value amount was used to rate.', 'LocalizedMessage': 'The sum of internationalDetail commodi
Original PR description
The Customs values for a commodity needs to be the values of the entire package. Currently, the value per unit is set which results in the following warning. ``` { 'Severity': 'WARNING', 'Source':…
The Customs values for a commodity needs to be the values of the entire package. Currently, the value per unit is set which results in the following warning.
```
{
'Severity': 'WARNING',
'Source': 'crs',
'Code': '448',
'Message': 'The sum of internationalDetail commodities customs value amounts do not the equal the internationalDetail customs value amount; the greater customs value amount was used to rate.',
'LocalizedMessage': 'The sum of internationalDetail commodities customs value amounts do not the equal the internationalDetail customs value amount; the greater customs value amount was used to rate.',
'MessageParameters': []
}
```
A previous fix https://github.com/odoo/enterprise/pull/38056 missed to correct the value for rating api so a following fix https://github.com/odoo/odoo/pull/116068 was made, which made the first fix obsolete + incorrect. The followup PR missed adjusting the FedEx value to match its change (i.e. other carriers were checked, but FexEx was overlooked) This commit corrects this issue and sets the correct commodity value for FedEx.
This corrects the sequence of arguments passed to the method
`_fedex_update_srm` The method on the super class is intended to be
overridden to add additional information on the Fedex Request.
The incorrect sequence of arguments restricts it from being overridden
correctly.
Forward-Port-Of: odoo/enterprise#58734Currently we send a list of ibans, and a single date from which to fetch the files. This is a bit problematic if the user has multiple journals and one of which is not used. In such a case, this old journal won't have transactions for months. Then we'll use the date of this old journal as the one from which to start fetching. So a journal that is up to date and gets documents everyday will still use this old date. Therefore we'll download lots of files (3 months or historic) even though the v
Original PR description
Currently we send a list of ibans, and a single date from which to fetch the files. This is a bit problematic if the user has multiple journals and one of which is not used. In such a case, this old journal won't have transactions for months. Then we'll use the date of this old journal as the one from which to start fetching. So a journal that is up to date and gets documents everyday will still use this old date. Therefore we'll download lots of files (3 months or historic) even though the vast majority will not be used (only skipped because already imported) From now on, for each journal, we send the date of the last bank statement along with the IBAN of the journal, so that on IAP's side, we can filter out older bank statements. This allows faster fetching of the files. IAP: https://github.com/odoo/iap-apps/pull/771 task-id 3762743 Forward-Port-Of: odoo/enterprise#58936 Forward-Port-Of: odoo/enterprise#57722
Steps to reproduce: - have a codabox setup - from the accounting dashboard, fetch the codabox data Issue: Traceback Cause: When there are no transactions to fetch and there is no fallback journal_id in https://github.com/odoo/enterprise/blob/27878a7b1a0577c2e83d756d0f59fabe25b20223/account_accountant/static/src/components/bank_reconciliation/kanban.js#L541-L558 it will break (no journal_id -> no company_id -> break ensure one) Note: it could be interesting to further investigate why
Original PR description
Steps to reproduce: - have a codabox setup - from the accounting dashboard, fetch the codabox data Issue: Traceback Cause: When there are no transactions to fetch and there is no fallback journal_id in https://github.com/odoo/enterprise/blob/27878a7b1a0577c2e83d756d0f59fabe25b20223/account_accountant/static/src/components/bank_reconciliation/kanban.js#L541-L558 it will break (no journal_id -> no company_id -> break ensure one) Note: it could be interesting to further investigate why there is no default journal in the props opw-3814226 Forward-Port-Of: odoo/enterprise#58835
The amount rounding tour was broken. As it used `:contains(), it was always checking for a substring of the current value of a line. Since it has to wait for the change to open (rpc call), there was a lot of indeterminism. It is fixed by adding more robust extra triggers. Forward-Port-Of: odoo/enterprise#58285
Original PR description
The amount rounding tour was broken. As it used `:contains(), it was always checking for a substring of the current value of a line. Since it has to wait for the change to open (rpc call), there was a lot of indeterminism. It is fixed by adding more robust extra triggers. Forward-Port-Of: odoo/enterprise#58285
**Before this PR:** Status icons in the embedded view were overlapping with the menu. **After this PR:** The issue has been resolved, and now the menu is displayed correctly over the icons. **Task**-3717057 Forward-Port-Of: odoo/enterprise#56926
Original PR description
**Before this PR:** Status icons in the embedded view were overlapping with the menu. **After this PR:** The issue has been resolved, and now the menu is displayed correctly over the icons. **Task**-3717057 Forward-Port-Of: odoo/enterprise#56926
Steps to Reproduce : - Toggle Studio from Odoo Dashboard - Click on create new app button --> Enter App name and Respective model - The `Create your App` button in Chrome will ultimately not be clearly visible at 100% zoom; the user must currently zoom out to see the button. video link: [Video](https://drive.google.com/file/d/1ug8VFpC10l4o_HFRQOnvwbUDO9yg_rzq/view) Observed behavior: - `Create your App` button is not visible. Expected behavior: - `Create your App` button should be
Original PR description
Steps to Reproduce : - Toggle Studio from Odoo Dashboard - Click on create new app button --> Enter App name and Respective model - The `Create your App` button in Chrome will ultimately not be clearly visible at 100% zoom; the user must currently zoom out to see the button. video link: [Video](https://drive.google.com/file/d/1ug8VFpC10l4o_HFRQOnvwbUDO9yg_rzq/view) Observed behavior: - `Create your App` button is not visible. Expected behavior: - `Create your App` button should be visible clearly. Task-3794467 Forward-Port-Of: odoo/enterprise#58404
How to reproduce: - in point of sale, enable "Generate a code on ticket" - create a pos_order, save the ticket - using the code on the ticket, request an invoice through the portal and fill the information as if you were a mexican company => An invoice is generated and sent successfully to the SAT, but "CFDI to Public" is True on the invoice. Hence, the receptor's RFC will be "XAXX..." instead of the RFC filled in the portal. Reason: The pos_order has "CFDI to Public" to True, and
Original PR description
How to reproduce: - in point of sale, enable "Generate a code on ticket" - create a pos_order, save the ticket - using the code on the ticket, request an invoice through the portal and fill the information as if you were a mexican company => An invoice is generated and sent successfully to the SAT, but "CFDI to Public" is True on the invoice. Hence, the receptor's RFC will be "XAXX..." instead of the RFC filled in the portal. Reason: The pos_order has "CFDI to Public" to True, and this value is copied on the invoice. Fix: Recompute the value for the "CFDI to Public" field on the pos_order when the partner_id is filled. It should only be True when the Receptor's RFC is "XAXX...". Note that the new compute for "CFDI to Public" on the pos_order now resembles the one on the account_move. opw-3767576 Forward-Port-Of: odoo/enterprise#58771
5 changes
Resolved issues and error corrections
This update adjusts how the WhatsApp integration handles logging when webhooks are called and the app secret is missing. Instead of marking these occurrences as errors, they are now logged as warnings, which better reflects that this is a normal operational situation rather than a system failure. This reduces unnecessary error alerts while maintaining visibility into these events.
Original PR description
Currently, log-level errors occur when WhatsApp webhooks are called, and the app secret may be missed. This commit changes 'logger.error' to 'logger.warning' since this is not an error in the codebase. sentry-4482005357 Forward-Port-Of: odoo/enterprise#47521
This update resolves a display issue in the Knowledge module where status icons were overlapping with the menu in embedded views. The menu now displays correctly on top of the icons, improving the user interface and making the application more usable.
Original PR description
**Before this PR:** Status icons in the embedded view were overlapping with the menu. **After this PR:** The issue has been resolved, and now the menu is displayed correctly over the icons. **Task**-3717057 Forward-Port-Of: odoo/enterprise#56926
Fixed an issue in the web editor where table cells remained selected even after using arrow keys to move the cursor. Users can now properly deselect cells by navigating with arrow keys, improving the editing experience when working with tables.
Original PR description
**Current behaviour before commit:** After selecting cells in table, moving cursor through arrowkeys doesn't deselect cells. **Desired behaviour after commit:** Now cells are getting deselected. task-3718716 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153365
Project update descriptions can now be edited collaboratively by multiple team members, just like other project fields. This improvement was previously overlooked when the collaborative editing feature was implemented, and this fix ensures consistency across all project update fields.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#157954 Forward-Port-Of: odoo/odoo#157817
This update removes the background color from CRM enrichment email messages so they display properly in both light and dark mode themes. This improves the visual consistency and readability of automated enrichment emails sent to users regardless of their interface theme preference.
Original PR description
Removed background color of crm enrich mail messages, so that they look good on both light and dark mode Related task: 3541419 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#158119 Forward-Port-Of: odoo/odoo#158003