Thursday, March 21, 2024
38 changes · saas-17.2
Enhancements to existing features
This draft change updates references to the login page so users are directed to the newer Odoo login address. This helps keep navigation consistent and avoids sending users to an outdated login path.
Resolved issues and error corrections
Broken links on the Barcode app home page and barcode-related print links in Inventory and Manufacturing settings have been corrected. This helps users access barcode actions and printable resources without running into navigation errors.
Original PR description
The purpose of this commit is to fix the broken links on the homepage of the barcode app in addition to the print links in the settings of Inventory and Manufacturing apps related to barcodes. As dictated by odoo/enterprise#58078, urls now have to start with a "/" in order to work properly. Task-3821539
Miscellaneous changes
Steps to reproduce: - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - In Contacts, Configure a bank account (Banco de la nación - BANCPEPL) for PE Company - In Accounting settings, run the automatic currency rates service ([PE] SUNAT) - Create a product: (e.g. Product X) * Sales Price: 990.00 * Withhold code: Arrendamiento de bienes muebles * Withhold Percentage: 10.00 - Create an invoice: * Customer: [a Peruvian contact] (e.g. Comercial Co
Original PR description
Steps to reproduce: - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - In Contacts, Configure a bank account (Banco de la nación - BANCPEPL) for PE Company - In…
Steps to reproduce:
- Install Accounting and l10n_pe_edi
- Switch to a Peruvian company (e.g. PE Company)
- In Contacts, Configure a bank account (Banco de la nación - BANCPEPL) for PE Company
- In Accounting settings, run the automatic currency rates service ([PE] SUNAT)
- Create a product: (e.g. Product X)
* Sales Price: 990.00
* Withhold code: Arrendamiento de bienes muebles
* Withhold Percentage: 10.00
- Create an invoice:
* Customer: [a Peruvian contact] (e.g. Comercial Constructora los Patitos S.A.)
* Operation Type: [1001] Operation Subject to Detraction
* Payment terms: End of Following Month
* Journal in: USD
* Invoice Lines:
- Product: Product X
- Account: 7012100 Merchandise - Merchandise - Local sale - Third parties
- Price: 990.00
- Taxes: 18%
- EDI Affect. Reason: Taxed- Onerous Operation
- Confirm the invoice
- Process to EDI service
Issue:
The remaining amount after deducting the withholding is not correct in the generated EDI document.
The total is 990.00 + Taxes (18%) = 1168.20
The withholding is 1168.20 * 10% = 116.82
The remaining amount should be 1168.20 - 116.82 = 1051,38
However, the remaining amount set in the EDI document is 1052,20, which is not correct.
Cause:
The rounding used to compute the withholding amounts are not correct.
The amount in the selected currency should contain 2 decimal digits (precision_rounding should be 0.01, instead of 2).
Also, the Detraction amount should be declared in PEN currency in the EDI document and should not contain the decimal part (precision_rounding should be 1, instead of 2).
opw-3747620
Forward-Port-Of: odoo/enterprise#58944
Forward-Port-Of: odoo/enterprise#58473This fix prevents technical internal action names from appearing to users when a clearer display name is not set. It helps keep the interface more user-friendly and avoids exposing confusing system labels.
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
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
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
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
Since `account.full.reconcile` doesn't have a `display_name`, the header of the group is not displayed nicely. By grouping per `matching_number` instead, we can have a nicer display. Forward-Port-Of: odoo/enterprise#58840
Original PR description
Since `account.full.reconcile` doesn't have a `display_name`, the header of the group is not displayed nicely. By grouping per `matching_number` instead, we can have a nicer display. Forward-Port-Of: odoo/enterprise#58840
Steps to reproduce the problem: - create a product and list it on eBay - uncheck the sell on eBay setting for the product. Don't archive it - create a second product and list it to the existing listing in eBay - sync an order with that product ==> First created product is shown in the sale order The eBay_id stays on the product, even after unchecking the setting. This seems to be voluntary as when relisting a product, after some time without selling it on eBay for instance, this id will t
Original PR description
Steps to reproduce the problem: - create a product and list it on eBay - uncheck the sell on eBay setting for the product. Don't archive it - create a second product and list it to the existing listing in eBay - sync an order with that product ==> First created product is shown in the sale order The eBay_id stays on the product, even after unchecking the setting. This seems to be voluntary as when relisting a product, after some time without selling it on eBay for instance, this id will then be used. We now take the first product that is checked as used in eBay. opw-3503924 Forward-Port-Of: odoo/enterprise#58852
When the user imports CSV file of a bank statement and the file has an empty date in one of the rows, a traceback will appear. Steps to reproduce the error: - Go to Accounting > Dashboard > Bank > Import Statement - Select a CSV file that has an empty date in one of the rows > Upload Traceback: ``` TypeError: '<' not supported between instances of 'NoneType' and 'datetime.date' File "odoo/http.py", line 2157, in __call__ response = request._serve_db() File "odoo/http.py", l
Original PR description
When the user imports CSV file of a bank statement and the file has an empty date in one of the rows, a traceback will appear. Steps to reproduce the error: - Go to Accounting > Dashboard > Bank >…
When the user imports CSV file of a bank statement and the file has an empty date in one of the rows,
a traceback will appear.
Steps to reproduce the error:
- Go to Accounting > Dashboard > Bank > Import Statement
- Select a CSV file that has an empty date in one of the rows > Upload
Traceback:
```
TypeError: '<' not supported between instances of 'NoneType' and 'datetime.date'
File "odoo/http.py", line 2157, in __call__
response = request._serve_db()
File "odoo/http.py", line 1732, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1759, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1960, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 207, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 24, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 20, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 466, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "home/odoo/src/enterprise/17.0/account_bank_statement_import_csv/wizard/account_bank_statement_import_csv.py", line 121, in execute_import
res = super().execute_import(fields, columns, options, dryrun=dryrun)
File "addons/base_import/models/base_import.py", line 1313, in execute_import
input_file_data = self._parse_import_data(input_file_data, import_fields, options)
File "home/odoo/src/enterprise/17.0/account_bank_statement_import_csv/wizard/account_bank_statement_import_csv.py", line 68, in _parse_import_data
if dates != sorted(dates):
```
https://github.com/odoo/enterprise/blob/312b4e5df327b25e1678755b24bd27803720cd3d/account_bank_statement_import_csv/wizard/account_bank_statement_import_csv.py#L104-L105
Here, When one of the dates is empty, line[index_date] will be None,
So, when it tries to sort dates at "sorted(dates)",
It will lead to above traceback.
sentry-4687473224
Forward-Port-Of: odoo/enterprise#58605
Forward-Port-Of: odoo/enterprise#52019Forward-Port-Of: odoo/enterprise#58846
Original PR description
Forward-Port-Of: odoo/enterprise#58846
Add an userError to prevent the user selecting quantity quality check Type with manufacturing operation types. opw-3770822 Forward-Port-Of: odoo/enterprise#57802
Original PR description
Add an userError to prevent the user selecting quantity quality check Type with manufacturing operation types. opw-3770822 Forward-Port-Of: odoo/enterprise#57802
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
Before this commit assets from `website_sale_stock_renting` was loaded before `website_sale_renting` because there was prepend in parent module assets PR: https://github.com/odoo/enterprise/pull/49610 So method `_getInvalidMessage` written in child(`website_sale_stock_renting`) get overridden by parent module(`website_sale_renting`) This commit add `website_sale_stock_renting` module assets after `website_sale_renting` module assets in order to execute method in proper order opw-3679735 F
Original PR description
Before this commit assets from `website_sale_stock_renting` was loaded before `website_sale_renting` because there was prepend in parent module assets PR: https://github.com/odoo/enterprise/pull/49610 So method `_getInvalidMessage` written in child(`website_sale_stock_renting`) get overridden by parent module(`website_sale_renting`) This commit add `website_sale_stock_renting` module assets after `website_sale_renting` module assets in order to execute method in proper order opw-3679735 Forward-Port-Of: odoo/enterprise#58639
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, 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
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