Wednesday, March 15, 2023
28 changes · master
Enhancements to existing features
The core product version has been updated to mark the master branch as the 16.3 alpha release. This helps align future development, testing, and release planning around the next planned version.
Resolved issues and error corrections
This update polishes the chatter area used for messages and activities, improving spacing, borders, and button sizing. The changes make the interface cleaner and more consistent, especially for users working in different languages.
Original PR description
This commits makes some improvement on the chatter visuals -Spacing/styling of various elements -Missing borders around chatter -Fix button size in other languages
Code cleanup and technical improvements
The manufacturing timer was split into two clearer parts so it can work properly both inside forms and as a standalone screen element. This is an internal cleanup that supports newer interface rules and helps reduce future maintenance issues without changing business workflows.
Original PR description
Since [1], [2], [3] and [4], the field API was simplified and specified. Some props were removed (update, type, setDirty and value) and some were now mandatory (record and name). This specification make it difficult to use the fields as a "normal" component (without a record). This was the case with MrpTimer, that was used as a field, but also as a component. To solve this issue, in this commit, we divide it in two different components, MrpTimer and MrpTimerField. [1]: https://github.com/odoo/odoo/commit/aed1ba484d0c48a59e166ef01e69967bd618a562 [2]: https://github.com/odoo/odoo/commit/8cde3e84bb70a2bd097921c08c0059bf65bee602 [3]: https://github.com/odoo/odoo/commit/688986f888f2fe2371d58b74ded81315ba6bb353 [4]: https://github.com/odoo/odoo/commit/91303252f413325859a6f1651d056593a8cf6382
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#115188
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#115188
Shared projects in the customer portal no longer fail to open when timesheets are installed. The change ensures the needed timesheet unit service is available in the shared project view, preventing an error for portal users.
Original PR description
Steps: - install hr_timehseet module - Share any project - Go to the portal and open the project. Issue: currently,timesheet_uom service is not added in project webclient so service not found. Fix: In this commit, we have added timesheet_uom services in project webclient.
This fixes an issue where a default project could still allow timesheet grid edits even when timesheets were disabled for that project. The change helps keep project settings enforced consistently and avoids users entering time on projects that should not track timesheets.
Original PR description
## Description Quick follow up on #38160 Default projects can be set in the settings to a project that has their Timesheet option disabled. --- opw-3203241
This update modernizes automated guided-tour tests across multiple Odoo Enterprise apps to use the newer web interface framework. It should not change day-to-day business workflows, but it helps keep testing reliable and supports future interface improvements.
Original PR description
Part of https://github.com/odoo/odoo/pull/107618 TASK-ID: 3082036
The manufacturing work order employee timer was reorganized so it can work reliably both inside forms and as a standalone popup component. This is an internal cleanup that supports recent platform changes and helps maintain timer behavior without changing business workflows.
Original PR description
Since [1], [2], [3] and [4], the field API was simplified and specified. Some props were removed (update, type, setDirty and value) and some were now mandatory (record and name). This specification make it difficult to use the fields as a "normal" component (without a record). This was the case with MrpTimer, that was used as a field, but also as a component. To solve this issue, in this commit, we divide it in two different components, MrpTimer and MrpTimerField. [1]: https://github.com/odoo/odoo/commit/aed1ba484d0c48a59e166ef01e69967bd618a562 [2]: https://github.com/odoo/odoo/commit/8cde3e84bb70a2bd097921c08c0059bf65bee602 [3]: https://github.com/odoo/odoo/commit/688986f888f2fe2371d58b74ded81315ba6bb353 [4]: https://github.com/odoo/odoo/commit/91303252f413325859a6f1651d056593a8cf6382
This commit removes all links to the `Awesome Timesheet` app since this app has been recently removed. Forward-Port-Of: odoo/odoo#115010 Forward-Port-Of: odoo/odoo#114890
Original PR description
This commit removes all links to the `Awesome Timesheet` app since this app has been recently removed. Forward-Port-Of: odoo/odoo#115010 Forward-Port-Of: odoo/odoo#114890
task-3187734 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114118
Original PR description
task-3187734 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114118
Steps to reproduce: - Install Discuss and Livechat. - Open a window without logging in and trigger the Livechat. - Select the "I have a pricing question" option, and it should tell you that there are no operators available. - When it asks you for your email just type anything, and try to close the window. - When you have pressed on the "x" it should ask you to review the service you had, select any of it and close the window. - Now log into the database and go to the livechat app and go
Original PR description
Steps to reproduce: - Install Discuss and Livechat. - Open a window without logging in and trigger the Livechat. - Select the "I have a pricing question" option, and it should tell you that there are…
Steps to reproduce: - Install Discuss and Livechat. - Open a window without logging in and trigger the Livechat. - Select the "I have a pricing question" option, and it should tell you that there are no operators available. - When it asks you for your email just type anything, and try to close the window. - When you have pressed on the "x" it should ask you to review the service you had, select any of it and close the window. - Now log into the database and go to the livechat app and go to the livechat channel where we did the review, and inside it try to "Go to Website". Issue: Traceback will be raised, caused of the review we have done which is not assigned to anyone in the support team. Solution: When can handle this, and just still take into account the review we just had (current fix). Or we should not let the user to review if we don't have an agent to be reviewed. Or if we can somehow assign these reviews to the chatbot. opw-3143564 Forward-Port-Of: odoo/odoo#112222
On inventory adjustments, when Counted Quantity is 0 and then press "enter", the difference will always set to 0. The compute function for inventory_diff_quantity is not triggered in this situation. We manually update the value in this case to trigger the cumpute function. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115210 Forward-Port-Of: odoo/odoo#114826
Original PR description
On inventory adjustments, when Counted Quantity is 0 and then press "enter", the difference will always set to 0. The compute function for inventory_diff_quantity is not triggered in this situation. We manually update the value in this case to trigger the cumpute function. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115210 Forward-Port-Of: odoo/odoo#114826
To reproduce the problem: - ensures python-magic is not installed. It is used to guess the mime type of a file. The code uses an alternate solution if not present and this is that alternate version that's unable to guess the mime type of an xlsx file. - in website_slides, open a course - open a content - go to the "Additional Resources" tab - add an xlsx file - remove the extension of the file in the name - open the public website and open that content - click on the link of the file you
Original PR description
To reproduce the problem: - ensures python-magic is not installed. It is used to guess the mime type of a file. The code uses an alternate solution if not present and this is that alternate version…
To reproduce the problem: - ensures python-magic is not installed. It is used to guess the mime type of a file. The code uses an alternate solution if not present and this is that alternate version that's unable to guess the mime type of an xlsx file. - in website_slides, open a course - open a content - go to the "Additional Resources" tab - add an xlsx file - remove the extension of the file in the name - open the public website and open that content - click on the link of the file you just have added - instead of a xlsx, you get a zip file This fix solves the problem by using the extension of the file uploaded if it is valid. Technical note: prior version 16, the mime type stored in the attachment was used to determine the extension of the file when downloading it. From version 16, if the extension is missing in the file name, the system tries to guess it using python-magic if installed and a custom implementation if not: _odoo_guess_mimetype. The custom implementation doesn't support the detection of xlsx files (and other formats) while python-magic supports it. That's why the problem described above only appends while python-magic is not installed. To solve the problem we have added in the download URL a name of a computed field that returns the name of the resource but also complete it with the extension of the file name if necessary and present. Task-3200998 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#113749
Steps to reproduce: - Install Sales modules (for test purpose) - Open any quotation - Click on "Send by Email" button - Download the attachment (in the bottom of the modal) - Try to add another partner to recipients Issue: Chrome: The partner is not added (visually) to the recipients. Firefox: After downloading the attachment, the page is stuck on "Loading...". Cause: When downloading the attachment, since it's a link, the browser think at first that we
Original PR description
Steps to reproduce: - Install Sales modules (for test purpose) - Open any quotation - Click on "Send by Email" button - Download the attachment (in the bottom of the modal) - Try to add another…
Steps to reproduce: - Install Sales modules (for test purpose) - Open any quotation - Click on "Send by Email" button - Download the attachment (in the bottom of the modal) - Try to add another partner to recipients Issue: Chrome: The partner is not added (visually) to the recipients. Firefox: After downloading the attachment, the page is stuck on "Loading...". Cause: When downloading the attachment, since it's a link, the browser think at first that we are going to change the page, and therefore trigger the "beforeunload" event. Doing so will call the `urgentSave` method that will set the `_urgentSave` attribute to true, and then notify to render. When we try to add a partner to the recipients, since the `_urgentSave` attribute is set to true, it will not trigger the rendering of the view. Solution: Add `taget="_blank"` to the `<a/>` tag, so the browser will open the attachment in a new tab, and therefore will not trigger the "beforeunload" event. opw-3176996 Forward-Port-Of: odoo/odoo#113856
Current behavior: The rescue session are created with a starting balance of 0.00. When the starting balance should be the end balance of the previous session. Steps to reproduce: - Open a POS session on 2 different browsers - Make an order on the first browser, and close the session - Make an order on the second browser, and close the session - The second browser's session will be in rescue mode and the starting balance will be 0.00 when it should be the end balance of the first session.
Original PR description
Current behavior: The rescue session are created with a starting balance of 0.00. When the starting balance should be the end balance of the previous session. Steps to reproduce: - Open a POS session on 2 different browsers - Make an order on the first browser, and close the session - Make an order on the second browser, and close the session - The second browser's session will be in rescue mode and the starting balance will be 0.00 when it should be the end balance of the first session. opw-3136236 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#113518
- Allow link from imported VB to PO, fixes Every imported vendor bill now will have the chance to make its invoice_origin linked to a Purchase Order. The function is moved from `account_journal` to `account_edi_format` to allow the link being done from all webservices, thread attachments and upload. - Avoid mocking the proxy testing The test on the check that the same attachment is coming twice from the proxy doesn't actually need to test the proxy. By splitting the function, we avoid
Original PR description
- Allow link from imported VB to PO, fixes Every imported vendor bill now will have the chance to make its invoice_origin linked to a Purchase Order. The function is moved from `account_journal` to…
- Allow link from imported VB to PO, fixes Every imported vendor bill now will have the chance to make its invoice_origin linked to a Purchase Order. The function is moved from `account_journal` to `account_edi_format` to allow the link being done from all webservices, thread attachments and upload. - Avoid mocking the proxy testing The test on the check that the same attachment is coming twice from the proxy doesn't actually need to test the proxy. By splitting the function, we avoid mocking the proxy for no added value. Added an ir.rule for companies to only look for their account_edi_proxy_client.users - PA Index label should be Destination Code PA Index is a completely wrong description. This is the destination "address" of the partner at which our EDI documents (invoices) should be directed to inside the SdI e-invoicing system, much like an IP address. It's not an index, doesn't have much to share with the Public Administration. The correct literal translation of the name should be "Destination Code" for Codice Destinatario. We have clients opening tickets because they don't recognize this field on the partner form because of the wrong translation. - Fixes on taxes import Lines didn't have their taxes cleared, so invoices actually added the taxes in the XML to the default supplier taxes of the product VAT taxes on import search was conflicting with actual withholding / pension fund taxes, so extra conditions are added in the search if withholding / pension fund fields are not specified Task link: https://www.odoo.com/web#id=3175353&model=project.task Task-3175353 Forward-Port-Of: odoo/odoo#111365
[FIX] web_editor: avoid toolbar update if selection outside editable (this commit fixes a traceback when clicking on mass_mailing's codeview) [FIX] mass_mailing: deactivate snippet overlay on codeview task-3171892 opw-3161789 Forward-Port-Of: odoo/odoo#112134
Original PR description
[FIX] web_editor: avoid toolbar update if selection outside editable (this commit fixes a traceback when clicking on mass_mailing's codeview) [FIX] mass_mailing: deactivate snippet overlay on codeview task-3171892 opw-3161789 Forward-Port-Of: odoo/odoo#112134
**Description of the issue/feature this PR addresses:** In accounting settings currently for the sales and purchase receipt there is upgrade boolean widget. But already this feature is available in the community, user can add the users to group from the groups menu and the menu will be getting visible/available for the users. So there is no point of adding upgrade widget for this option. **Current behavior before PR:** upgrade widget is show for sales and purchase receipt in account sett
Original PR description
**Description of the issue/feature this PR addresses:** In accounting settings currently for the sales and purchase receipt there is upgrade boolean widget. But already this feature is available in the community, user can add the users to group from the groups menu and the menu will be getting visible/available for the users. So there is no point of adding upgrade widget for this option. **Current behavior before PR:** upgrade widget is show for sales and purchase receipt in account settings. **Desired behavior after PR is merged:** upgrade widget will be removed from sales and purchase receipt in account settings. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#104654
At the moment translations are only available if a user chooses es_CO specifically. This commit changes it to es, making it available regardless of which Spanish version is chosen by the user. task-3230384 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115383 Forward-Port-Of: odoo/odoo#115171
Original PR description
At the moment translations are only available if a user chooses es_CO specifically. This commit changes it to es, making it available regardless of which Spanish version is chosen by the user. task-3230384 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115383 Forward-Port-Of: odoo/odoo#115171
To Reproduce ============ - go to employees app and filter by `Absent is Yes` then by `Absent is No` some employees are present in both filters which is not logical Problem ======= the search method on `is_absent` field always performs the search `ids in absent_ids` no matter what are the operator and the value Solution ======== use the `operator` argument in the searching opw-3205967 Forward-Port-Of: odoo/odoo#114715
Original PR description
To Reproduce ============ - go to employees app and filter by `Absent is Yes` then by `Absent is No` some employees are present in both filters which is not logical Problem ======= the search method on `is_absent` field always performs the search `ids in absent_ids` no matter what are the operator and the value Solution ======== use the `operator` argument in the searching opw-3205967 Forward-Port-Of: odoo/odoo#114715
In accounting dashboard there is a link "XXX Payments to send via SEPA". It's supposed to show list of SEPA payments, but instead it shows all payments for the journal. In v15 it works via context `search_default_sepa_to_send=1`, but that filter was removed in v16 [1] Fix it by forcing the domain on the action level. [1]: https://github.com/odoo/enterprise/commit/1983b9949ac1d79536cd92bcece777a355acd113 opw-3101288 Forward-Port-Of: odoo/enterprise#35362
Original PR description
In accounting dashboard there is a link "XXX Payments to send via SEPA". It's supposed to show list of SEPA payments, but instead it shows all payments for the journal. In v15 it works via context `search_default_sepa_to_send=1`, but that filter was removed in v16 [1] Fix it by forcing the domain on the action level. [1]: https://github.com/odoo/enterprise/commit/1983b9949ac1d79536cd92bcece777a355acd113 opw-3101288 Forward-Port-Of: odoo/enterprise#35362
#### Description - 'NoneType' object is not callable while evaluating '_render(self, current_value, render)[1]' that occurs in 'data_cleaning.record' because of rule_id._action_to_python() returns 'None' and methods[0](record, value) tried to get the record and none type object can't be allowed in interaction #### Traceback: ```python Traceback (most recent call last): File "/tmp/tmpxgcnow2b/migrations/base/tests/test_mock_crawl.py", line 220, in crawl_menu self.mock_action(action_
Original PR description
#### Description - 'NoneType' object is not callable while evaluating '_render(self, current_value, render)[1]' that occurs in 'data_cleaning.record' because of rule_id._action_to_python() returns…
#### Description
- 'NoneType' object is not callable while evaluating '_render(self, current_value, render)[1]' that occurs in 'data_cleaning.record' because of rule_id._action_to_python() returns 'None' and methods[0](record, value) tried to get the record and none type object can't be allowed in interaction
#### Traceback:
```python
Traceback (most recent call last):
File "/tmp/tmpxgcnow2b/migrations/base/tests/test_mock_crawl.py", line 220, in crawl_menu
self.mock_action(action_vals)
File "/tmp/tmpxgcnow2b/migrations/base/tests/test_mock_crawl.py", line 304, in mock_action
views = get_views(
File "/home/odoo/src/odoo/16.0/odoo/addons/base/models/ir_ui_view.py", line 2506, in get_views
bindings = self.env['ir.actions.actions'].get_bindings(self._name)
File "/home/odoo/src/odoo/16.0/odoo/addons/base/models/ir_actions.py", line 99, in get_bindings
for action_type, all_actions in self._get_bindings(model_name).items():
File "<decorator-gen-53>", line 2, in _get_bindings
File "/home/odoo/src/odoo/16.0/odoo/tools/cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/home/odoo/src/odoo/16.0/odoo/addons/base/models/ir_actions.py", line 127, in _get_bindings
self.env.flush_all()
File "/home/odoo/src/odoo/16.0/odoo/api.py", line 732, in flush_all
self._recompute_all()
File "/home/odoo/src/odoo/16.0/odoo/api.py", line 728, in _recompute_all
self[field.model_name]._recompute_field(field)
File "/home/odoo/src/odoo/16.0/odoo/models.py", line 6152, in _recompute_field
field.recompute(records)
File "/home/odoo/src/odoo/16.0/odoo/fields.py", line 1325, in recompute
self.compute_value(recs)
File "/home/odoo/src/odoo/16.0/odoo/fields.py", line 1347, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/16.0/odoo/models.py", line 4186, in _compute_field_value
getattr(self, field.compute)()
File "/home/odoo/src/enterprise/16.0/data_cleaning/models/data_cleaning_record.py", line 84, in _compute_values
suggested_value = record._render_value(current_value)
File "/home/odoo/src/enterprise/16.0/data_cleaning/models/data_cleaning_record.py", line 69, in _render_value
return _render(self, current_value, render)[1]
File "/home/odoo/src/enterprise/16.0/data_cleaning/models/data_cleaning_record.py", line 64, in _render
return _render(record, methods[0](record, value), methods[1:])
TypeError: 'NoneType' object is not callable
```
#### References:
- Link to task: opw-3167377
- [Error Pad](https://pad.odoo.com/p/issue-3167377-ksna)
Forward-Port-Of: odoo/enterprise#37672## Current behaviour You are able to edit in the grid view the timesheet on a project that *had* the option "Timesheets" enabled, but doesn't anymore. ## Expected behaviour You should be able to edit a timesheet time in the grid view when the associated project has the setting disabled. Else it will create a new entry for the task in the project, even tough the option has been disabled. ## Steps to reproduce - Install Project, Timesheets - Create a project with Timesheets enabled, on a
Original PR description
## Current behaviour You are able to edit in the grid view the timesheet on a project that *had* the option "Timesheets" enabled, but doesn't anymore. ## Expected behaviour You should be able to edit…
## Current behaviour You are able to edit in the grid view the timesheet on a project that *had* the option "Timesheets" enabled, but doesn't anymore. ## Expected behaviour You should be able to edit a timesheet time in the grid view when the associated project has the setting disabled. Else it will create a new entry for the task in the project, even tough the option has been disabled. ## Steps to reproduce - Install Project, Timesheets - Create a project with Timesheets enabled, on a task log some hours - Validate the timesheet in Timesheets - Disable the option on the project for timesheets - In Timesheets > Grid View > try to modify the time of the timesheet we just validated - The changes goes through and you can see in the list view that a new timesheet has been created with the difference. ## Reason for the problem The cell in the grid view is not read only in that case. ## Fix We cannot put the cell read only, but in `adjust_grid` we raise an UserError if `allow_timesheets` on the project of the line is disabled. ## Affected versions - 16.0 - saas-16.1 - master --- opw-3203241 Forward-Port-Of: odoo/enterprise#37924
This commit fixes the problem that no feedback is provided after creating a new spreadsheet template via top bar menu (File -> New). After fixing, the page will be redirected to the newly created template after its creation. task [3212263](https://www.odoo.com/web#id=3212263&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#38067 Forward-Port-Of: odoo/enterprise#37723
Original PR description
This commit fixes the problem that no feedback is provided after creating a new spreadsheet template via top bar menu (File -> New). After fixing, the page will be redirected to the newly created template after its creation. task [3212263](https://www.odoo.com/web#id=3212263&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#38067 Forward-Port-Of: odoo/enterprise#37723
Reproduction: 1. Install Accounting, Sales, FedEx shipment, create a UK company, use a real UK address, for my test: Hoover Building 7, Western Ave, London, UB6 8DB 2. Go to settings -> Accounting, enable the multi-currency option. In Settings-> Sale, enable pricelists. 3. Go to Sales, place an order of Deco Addict, price list uses the default USD price list, and pick any saleable product, add the FedEx international shipment method, get rate. 4. Confirm the order and do to the delivery. Try
Original PR description
Reproduction: 1. Install Accounting, Sales, FedEx shipment, create a UK company, use a real UK address, for my test: Hoover Building 7, Western Ave, London, UB6 8DB 2. Go to settings -> Accounting,…
Reproduction: 1. Install Accounting, Sales, FedEx shipment, create a UK company, use a real UK address, for my test: Hoover Building 7, Western Ave, London, UB6 8DB 2. Go to settings -> Accounting, enable the multi-currency option. In Settings-> Sale, enable pricelists. 3. Go to Sales, place an order of Deco Addict, price list uses the default USD price list, and pick any saleable product, add the FedEx international shipment method, get rate. 4. Confirm the order and do to the delivery. Try to validate the stock move, KeyError: 'USD', log “Preferred currency has not been found in FedEx response” Reason: For FedEx shipment requests of stock moves, the preferred currency is set to the company’s currency instead of the order’s currency. But in the same function https://github.com/odoo/enterprise/blob/14.0/delivery_fedex/models/delivery_fedex.py#L409-L422 the shipment rate in the order currency is checked. This causes a not found error when the order currency is different from the company’s currency. Fix: when we send FedEx shipment request for stock moves, we should check if there’s a SO related to the stock picking, if so we use the SO currency. Otherwise, we use the company currency. To simplify the code we just move order_currency above and use it for currency set. Note: the request results contain rate in the account's base currency, and the rate in preferred currency Related PR for setting preferred currency: https://github.com/odoo/enterprise/pull/13723 opw-3145829 Forward-Port-Of: odoo/enterprise#38035 Forward-Port-Of: odoo/enterprise#37878
This fix a crash when someone click the clock of the activity group for Lead/Opportunity. Forward-Port-Of: odoo/enterprise#38145
Original PR description
This fix a crash when someone click the clock of the activity group for Lead/Opportunity. Forward-Port-Of: odoo/enterprise#38145
Steps to reproduce: 1. set up FedEx shipping, enable dutiable material 3. create an international UPS shipment with a product with unit price = 1$ and qty = 10 4. the declared value for customs is 100$ instead of 10$ This is because in the delivery app we have: `monetary_value=line.sale_price` However in delivery_fedex we have: `customs_value.Amount = delivery_commodity.qty * delivery_commodity.monetary_value` Causing the quantity to be multiplied twice. opw-3229291 Forward-Port-Of
Original PR description
Steps to reproduce: 1. set up FedEx shipping, enable dutiable material 3. create an international UPS shipment with a product with unit price = 1$ and qty = 10 4. the declared value for customs is 100$ instead of 10$ This is because in the delivery app we have: `monetary_value=line.sale_price` However in delivery_fedex we have: `customs_value.Amount = delivery_commodity.qty * delivery_commodity.monetary_value` Causing the quantity to be multiplied twice. opw-3229291 Forward-Port-Of: odoo/enterprise#38056
_* = project_timesheet_synchro This commit removes all links to the `Awesome Timesheet` app since this app has been recently removed. Forward-Port-Of: odoo/enterprise#38049 Forward-Port-Of: odoo/enterprise#38004
Original PR description
_* = project_timesheet_synchro This commit removes all links to the `Awesome Timesheet` app since this app has been recently removed. Forward-Port-Of: odoo/enterprise#38049 Forward-Port-Of: odoo/enterprise#38004