Monday, September 2, 2024
52 changes · saas-17.4
Resolved issues and error corrections
This fix restores both intended updates for website shop product snippets after one had accidentally replaced the other. It helps ensure the online store displays the correct snippet behavior consistently.
Original PR description
A previous oversight lead to _prepare_values to be overridden twice for 2 separate tasks The task that was merged last was functioning while the other one wasn't This commit merges the 2 functions together commit 1: 5bde2e42c8ec5e943a779ad4b3e1b7142f2d2fcf commit 2: 4ac43fbafc2899e296bf0593dcaef0c3b914928c --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The comments menu in Knowledge articles now keeps a consistent layout when the screen is narrowed. This prevents overlapping controls and makes commenting easier to use on smaller screens.
Original PR description
Steps to reproduce: 1. Open Knowledge 2. Select any text in an article 3. The menu will show 4. Click on comments 5. Write a log and shrink the screen 6. The comments menu breaks The display of comments is a little bit odd Removed 'flex-wrap' from the message header's CSS to prevent the menu from overlapping when the screen size is reduced. This ensures a consistent layout and better user experience on smaller screens. Task-4063810
Emoji names are now safely handled when translated, preventing certain non-English translations from breaking the emoji picker. This ensures users can reliably browse and insert emojis regardless of their selected language.
Original PR description
BUG: emojis were not loading in some non-English languages The issue was that the emojis were not escaped when translated, and in some languages, the translated emojis contained double quotes inside, which was originally curly quotes. FIX: escape the translated emoji names to avoid the double quotes breaking the JSON parsing. task-4139904 task-4143513 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The on-screen celebration message now remains visible even when its surrounding area has no size. This prevents users from missing positive feedback after completing certain actions.
Original PR description
In this commit, we fix the rainbowMan css so that it is visible through a container that is 0x0. To do this, we need to change the position to fixed instead of absolute. 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
Fixed an issue where opening the manufacturing order overview could fail when a component quantity was set to a negative value. This prevents an error screen and keeps the manufacturing workflow usable in this edge case.
Original PR description
When the quantity of components is negative in mo and user clicks on the overview button. a traceback will appear. Steps to reproduce the error: - Install ```mrp``` and ```purchase``` - Create…
When the quantity of components is negative in mo and user clicks on
the overview button.
a traceback will appear.
Steps to reproduce the error:
- Install ```mrp``` and ```purchase```
- Create product A > In Purchase, add vendor > In Inventory, Select Buy and
Replenish on Order (MTO) in Routes > Save
- Create one MO > Select any product > In components, Select product A >
In To consume, Set 10 for ex. > Confirm
- Click on Purchases smart button > Confirm Order > Receive Products > Validate
- Go back to MO > Set negative value in Quantity (ex. -1) > Save
- Click on Overview
Traceback:
```
AssertionError: precision_digits must be a non-negative integer, got 0.01
File "odoo/http.py", line 2373, in __call__
response = request._serve_db()
File "odoo/http.py", line 1903, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1966, 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 1933, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2177, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 223, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 754, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 35, in call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 459, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/mrp/report/mrp_report_mo_overview.py", line 19, in get_report_values
'data': self._get_report_data(production_id),
File "addons/mrp/report/mrp_report_mo_overview.py", line 77, in _get_report_data
components = self._get_components_data(production, level=1, current_index='')
File "addons/mrp/report/mrp_report_mo_overview.py", line 416, in _get_components_data
replenish_data = self._get_replenishments_from_forecast(production, replenish_data)
File "addons/mrp/report/mrp_report_mo_overview.py", line 694, in _get_replenishments_from_forecast
forecast_lines = self._add_origins_to_forecast(forecast_lines)
File "addons/mrp/report/mrp_report_mo_overview.py", line 771, in _add_origins_to_forecast
if float_compare(move_out_qty, 0, line['move_out'].product_uom.rounding) <= 0:
File "odoo/tools/float_utils.py", line 181, in float_compare
rounding_factor = _float_check_precision(precision_digits=precision_digits,
File "odoo/tools/float_utils.py", line 39, in _float_check_precision
assert float(precision_digits).is_integer() and precision_digits >= 0,\
```
https://github.com/odoo/odoo/blob/2c89fae7bc3e026425a4f02c4a70e4a87083560d/addons/mrp/report/mrp_report_mo_overview.py#L771
Here, In the above line ```precision_rounding``` is missing.
So, it will lead to the above traceback.
This commit will prevent the negative quantity of component product.
Sentry-5729142241
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fix restores a required hidden field used when importing translation files. Users can again export and re-import translation files, such as French sales app translations, without encountering the reported error.
Original PR description
There was no indication that the field was needed when it was removed. It is not added automatically by the orm because it is not a depend or an explicit modifier. It is being reintroduced with a comment. Issue: Settings > Translations > Export Translation > Select language as French > PO File > Export type module > Choose sales app as apps to export > Download the file > Import Translation > Add language name > Code fr_FR > Upload file > Overwrite existing terms checked > error message appears. The error was introduced by: https://github.com/odoo/odoo/commit/5639ed865c5a3b82bab25b0ecac28c68c02e9306 opw-4115861 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
ABA batch payment validation now correctly falls back to the standard process when a payment is not related to payroll. This prevents errors during payment file generation and helps Australian payroll/accounting teams process batches reliably.
Original PR description
The `_generate_export_file()` method was updated to handle payroll payments in ABA batch processing. However, the previous implementation lacked a proper fallback to the superclass method when the payment was not a payroll payment, leading to a traceback during ABA batch payment validation. opw-4106377
The Knowledge app comments menu now keeps a cleaner layout when the screen is narrowed. This prevents overlapping controls and makes commenting easier to use on smaller displays.
Original PR description
Steps to reproduce: 1. Open Knowledge 2. Select any text in an article 3. The menu will show 4. Click on comments 5. Write a log and shrink the screen 6. The comments menu breaks 7. The display of comments is a little bit odd Removed 'flex-wrap' from the message header's CSS to prevent the menu from overlapping when the screen size is reduced. This ensures a consistent layout and better user experience on smaller screens. Task-4063810
The Knowledge comments menu now stays properly aligned when the screen is narrowed. This prevents overlapping controls and makes commenting in articles easier to use on smaller displays.
Original PR description
Steps to reproduce: 1. Open Knowledge 2. Select any text in an article 3. The menu will show 4. Click on comments 5. Write a log and shrink the screen 6. The comments menu breaks 7. The display of comments is a little bit odd Removed 'flex-wrap' from the message header's CSS to prevent the menu from overlapping when the screen size is reduced. This ensures a consistent layout and better user experience on smaller screens. Task-4063810
Miscellaneous changes
Prior to this commit: If you were in debug=1 or debug=assets prior to opening the PoS, it would be lost when opening the pos session from the backend. This can be particularly problematic on mobile app as the user can not modify the url manually. Being in debug mode on the PoS is useful to have the debug window and troubleshoot with the asset code After this commit: The PoS is opened with the same debug mode than the browser session Forward-Port-Of: odoo/odoo#178569
Original PR description
Prior to this commit: If you were in debug=1 or debug=assets prior to opening the PoS, it would be lost when opening the pos session from the backend. This can be particularly problematic on mobile app as the user can not modify the url manually. Being in debug mode on the PoS is useful to have the debug window and troubleshoot with the asset code After this commit: The PoS is opened with the same debug mode than the browser session Forward-Port-Of: odoo/odoo#178569
Previously the code setting the default taxes on product was called only if the database was in demo, which makes zero sense. Without demo data, creating a new company and assigning it its accounting package was not configuring correctly the existing products with the default taxes. ticket 4037904 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177852 Forward-Port-Of: odoo/odoo#173803
Original PR description
Previously the code setting the default taxes on product was called only if the database was in demo, which makes zero sense. Without demo data, creating a new company and assigning it its accounting package was not configuring correctly the existing products with the default taxes. ticket 4037904 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177852 Forward-Port-Of: odoo/odoo#173803
This commit make card column with 100% for 3 column grid in order to not have forth blank space in mobile view and display on product par row in mobile. opw-4052977 Forward-Port-Of: odoo/odoo#178487
Original PR description
This commit make card column with 100% for 3 column grid in order to not have forth blank space in mobile view and display on product par row in mobile. opw-4052977 Forward-Port-Of: odoo/odoo#178487
To reproduce the bug, follow these steps: 1. Create a new time off type. 2. Create a new accrual plan. 3. Set the "Accrued Gain Time" field to “At the start of the accrual period.” 4. Create a new milestone with a cap. 5. Create a new allocation set its type to accrual then link it to our accrual plan. 6. Set the start date in the past so that the accrued days reach the cap. 7. Create a new leave in the past related to the allocation. 8. Check your balance for a future date in the Time
Original PR description
To reproduce the bug, follow these steps: 1. Create a new time off type. 2. Create a new accrual plan. 3. Set the "Accrued Gain Time" field to “At the start of the accrual period.” 4. Create a new…
To reproduce the bug, follow these steps: 1. Create a new time off type. 2. Create a new accrual plan. 3. Set the "Accrued Gain Time" field to “At the start of the accrual period.” 4. Create a new milestone with a cap. 5. Create a new allocation set its type to accrual then link it to our accrual plan. 6. Set the start date in the past so that the accrued days reach the cap. 7. Create a new leave in the past related to the allocation. 8. Check your balance for a future date in the Time Off app. Normally, with accrual allocation, we should see the allocation increase. The problem here is that in the future, the allocation decreases. This issue arises due to the way the `leaves_taken` field is computed. https://github.com/odoo/odoo/blob/08a4b9d78addeefde24b189f0066540e0dcee4c4/addons/hr_holidays/models/hr_leave_allocation.py#L215-L220 The value is retrieved from a default dictionary, which is processed based on existing records in the database. When we attempt to fetch the value using a new instance that only exists in memory, the key returns the default value of 0. Additionally, if we modify step 7 to set the leave in the future, the accrual value caps out at a level below the intended maximum. In some cases, if the data-fetching function is called with the same parameters consecutively, we receive different outputs. These issues arise because the new record persists as a cache. When we retrieve a new record with the same origin as a previous call, we receive the previously processed data. This also leads to a problem with recursion in the function `_get_future_leaves_on`. This commit addresses and resolves these issues. opw-4040882 Forward-Port-Of: odoo/odoo#174354
Steps to reproduce: - Install 'Purchase' - Create a new company with CLP currency. - Select Chile fiscal localization in Settings. - Make a new Request for Quotation - Add any product set price to 23.67 - Add VAT of 19% - Confirm the order - Click on the Action button -> Print -> Purchase Order. Issues: On the downloaded pdf, the tax base is displayed as "VAT 19% on $24". It shouldn't be the case as we have a single VAT so no need to display this. The reason for this appearing is
Original PR description
Steps to reproduce: - Install 'Purchase' - Create a new company with CLP currency. - Select Chile fiscal localization in Settings. - Make a new Request for Quotation - Add any product set price to…
Steps to reproduce: - Install 'Purchase' - Create a new company with CLP currency. - Select Chile fiscal localization in Settings. - Make a new Request for Quotation - Add any product set price to 23.67 - Add VAT of 19% - Confirm the order - Click on the Action button -> Print -> Purchase Order. Issues: On the downloaded pdf, the tax base is displayed as "VAT 19% on $24". It shouldn't be the case as we have a single VAT so no need to display this. The reason for this appearing is because we have a rounding incosistency. Here we apply `currency.round` on the amount. https://github.com/odoo/odoo/blob/42fa237296f9b1fa556ae310b3273f863420e659/addons/account/models/account_tax.py#L2116 This is not the case here. https://github.com/odoo/odoo/blob/42fa237296f9b1fa556ae310b3273f863420e659/addons/account/models/account_tax.py#L2163 Because of this we will have 2 amount in `encountered_base_amounts` whiche means that `'display_tax_base'` will be set to True. https://github.com/odoo/odoo/blob/42fa237296f9b1fa556ae310b3273f863420e659/addons/account/models/account_tax.py#L2188 opw-4039152 Forward-Port-Of: odoo/odoo#178225
Do a modification of the picking type reservation method will not remove the reservation date on stock.move. It could create issue on the reservation or the forecast report where the reservation date is used without doing a check on the picking type reservation method. Clean the data when we update the reservation method 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 an
Original PR description
Do a modification of the picking type reservation method will not remove the reservation date on stock.move. It could create issue on the reservation or the forecast report where the reservation date is used without doing a check on the picking type reservation method. Clean the data when we update the reservation method 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#177975 Forward-Port-Of: odoo/odoo#170341
Steps to reproduce: - In a multiple company environment, open Timesheets app - In All Timesheets add a line - While selecting employee we see that we get all the employees from all companies. Issue: - All the employees shouldn't be visible Cause: - An empty domain is getting passed. - Pre saas-17.1 when an empty domain is passed then we get records from within the company. - From saas-17.1 onward an empty gets every possible record. Solution: - Adding the companies to be
Original PR description
Steps to reproduce: - In a multiple company environment, open Timesheets app - In All Timesheets add a line - While selecting employee we see that we get all the employees from all companies. Issue: - All the employees shouldn't be visible Cause: - An empty domain is getting passed. - Pre saas-17.1 when an empty domain is passed then we get records from within the company. - From saas-17.1 onward an empty gets every possible record. Solution: - Adding the companies to be from allowed_company_ids task-3918572 Forward-Port-Of: odoo/odoo#178295 Forward-Port-Of: odoo/odoo#167004
[FIX] mail: include whatsapp in webpush notifications There are couple of components in the notification architecture. For the sake of illustration let's simplify it with the following: Sender -> Queuer -> Receiver Queuer is an FMC backend, so we should only be concerned about the other two. Receiver which is just a frontend service worker that will generate notifications as soon as he receives an event. The issue (before this commit) was in the Sender part, which was skipping whatsapp
Original PR description
[FIX] mail: include whatsapp in webpush notifications There are couple of components in the notification architecture. For the sake of illustration let's simplify it with the following: Sender -> Queuer -> Receiver Queuer is an FMC backend, so we should only be concerned about the other two. Receiver which is just a frontend service worker that will generate notifications as soon as he receives an event. The issue (before this commit) was in the Sender part, which was skipping whatsapp type message generation. [Reproduce] - Configure Whatsapp account, include user A in "Notify users" - Allow notifications in your browser (chat icon/ OdooBot suggestion) - Send a whatsapp message to the configured whatsapp number - BUG: Push notification is not showing up opw-3720699 Forward-Port-Of: odoo/odoo#177686 Forward-Port-Of: odoo/odoo#175638
## Issue: - When creating a kit BoM with two components that the total of their cost share is 100, we get this UserError when saving: 'The total cost share for a BoM's components has to be 100%.'" ## Steps To Reproduce: - Create a BoM of type Kit. - Add 2 components. - Set their cost shares to 99.99 and 0.01. - Save and Notice the error: "The total cost share for a BoM's component have to be 100" ## Solution: - After saving, the [`float_round`](https://github.com/odoo/odoo/blob/048
Original PR description
## Issue: - When creating a kit BoM with two components that the total of their cost share is 100, we get this UserError when saving: 'The total cost share for a BoM's components has to be 100%.'" ##…
## Issue:
- When creating a kit BoM with two components that the total of their cost share is 100, we get this UserError when saving: 'The total cost share for a BoM's components has to be 100%.'"
## Steps To Reproduce:
- Create a BoM of type Kit.
- Add 2 components.
- Set their cost shares to 99.99 and 0.01.
- Save and Notice the error: "The total cost share for a BoM's component have to be 100"
## Solution:
- After saving, the [`float_round`](https://github.com/odoo/odoo/blob/048ed950ad32187a8e7ae7811a5afc87d9ce8ac8/odoo/tools/float_utils.py#L35) method is eventually called. When it reaches the line [`result = rounded_value * rounding_factor`](https://github.com/odoo/odoo/blob/048ed950ad32187a8e7ae7811a5afc87d9ce8ac8/odoo/tools/float_utils.py#L113) with `rounded_value = 9999.0` and `rounding_factor = 0.01`, it returns `99.99000001`.
- A possible fix is to modify the `float_round` method to include a condition before returning the result:
``` python
if precision_digits or precision_rounding:
decimal_places = precision_digits or len(str(precision_rounding).split('.')[1])
return round(result, decimal_places)```
- However, I believe it might be too low-level, so I kept it simple by rounding the `bom.lines` before summing them and returning the UserError`.
opw-4100375
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#177915
Forward-Port-Of: odoo/odoo#177015[MOV] website: rename automatic editor tests The goal of this commit is to rename the `automatic_editor` test files. This will be usefull in the next commit. runbot-60056 runbot-69009 ---------------------------------------------------------------------------------------------------------------------------------------------- [FIX] website: adapt the automatic editor on new website test The goal of this commit is to simplify the `automatic_editor_on_new_website` test. Indeed, th
Original PR description
[MOV] website: rename automatic editor tests The goal of this commit is to rename the `automatic_editor` test files. This will be usefull in the next commit. runbot-60056 runbot-69009…
[MOV] website: rename automatic editor tests The goal of this commit is to rename the `automatic_editor` test files. This will be usefull in the next commit. runbot-60056 runbot-69009 ---------------------------------------------------------------------------------------------------------------------------------------------- [FIX] website: adapt the automatic editor on new website test The goal of this commit is to simplify the `automatic_editor_on_new_website` test. Indeed, the test was added by [1] to check if the editor was correctly started after the creation of a website under some circonstences but since [2], the editor is not started after creating a website. The part that tests the installation of a new language through the theme editor has been removed as it is already implemented in the `rte_translator` test. The remaining part that tests the creation of a website with the skip of the configurator is kept as it is not implemented in another test. [1]: https://github.com/odoo/odoo/commit/81f5c768278d15d4ef943deffa397736b867c825 [2]: https://github.com/odoo/odoo/commit/e38808e1a77dab291beb4020a2bf3c248f88cdef runbot-60056 runbot-69009 Forward-Port-Of: odoo/odoo#178529 Forward-Port-Of: odoo/odoo#177865
Set up email alias for Vendor Bill journal Send email with docx attachment to alias Bill is created Issue: No attachment is present This commit will extend 827b536942a67e91d4283ebd2bf50db5141f0abe to allow more formats opw-4092311 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#178106
Original PR description
Set up email alias for Vendor Bill journal Send email with docx attachment to alias Bill is created Issue: No attachment is present This commit will extend 827b536942a67e91d4283ebd2bf50db5141f0abe to allow more formats opw-4092311 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#178106
We get an error when validating a stock picking with a branch company Steps: - Create a company C with a branch B - Set env.companies to both C and B, and env.company to either C or B - Create product P with company set as B, a standard_price > 0 and a product category set to 'Automated' and valuation != 'standard' - Make a stock picking from/to B for product P - Try to validate picking -> UserError: 'Incompatible companies on records' This is because the account move is created with main c
Original PR description
We get an error when validating a stock picking with a branch company Steps: - Create a company C with a branch B - Set env.companies to both C and B, and env.company to either C or B - Create product P with company set as B, a standard_price > 0 and a product category set to 'Automated' and valuation != 'standard' - Make a stock picking from/to B for product P - Try to validate picking -> UserError: 'Incompatible companies on records' This is because the account move is created with main company instead of branch company. opw-4105551 Forward-Port-Of: odoo/odoo#176501
In #97883, the Hungarian localization was translated from Hungarian into English. After that, some Hungarian translations for tax names, tax descriptions and tax report lines were lost. This commit aims at ensuring the translations are added and bringing Hungarian taxes in conformity with best practices. Specifically, this commit changes tax names in descriptions according to the tax naming conventions. task-4132407 --- I confirm I have signed the CLA and read the PR guidelines at
Original PR description
In #97883, the Hungarian localization was translated from Hungarian into English. After that, some Hungarian translations for tax names, tax descriptions and tax report lines were lost. This commit aims at ensuring the translations are added and bringing Hungarian taxes in conformity with best practices. Specifically, this commit changes tax names in descriptions according to the tax naming conventions. task-4132407 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178242 Forward-Port-Of: odoo/odoo#177928
This commit brings out some more improvement to the New Zealand localization. It will mostly be about translating a few terms, improving tax labels on invoices and mark invoices as "tax invoices". Task id #3753652 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178663 Forward-Port-Of: odoo/odoo#165686
Original PR description
This commit brings out some more improvement to the New Zealand localization. It will mostly be about translating a few terms, improving tax labels on invoices and mark invoices as "tax invoices". Task id #3753652 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178663 Forward-Port-Of: odoo/odoo#165686
When rendering a template in the render mixin urls are converted from local to full without consideration for the website of the record being processed. We now pass the base url of the record, fetched with `get_base_url` so that email links link to the proper website when needed. task-4104753 Forward-Port-Of: odoo/odoo#178737 Forward-Port-Of: odoo/odoo#176152
Original PR description
When rendering a template in the render mixin urls are converted from local to full without consideration for the website of the record being processed. We now pass the base url of the record, fetched with `get_base_url` so that email links link to the proper website when needed. task-4104753 Forward-Port-Of: odoo/odoo#178737 Forward-Port-Of: odoo/odoo#176152
There is an issue where the Mercado Pago terminal rejects a card payment, but Odoo accepts the payment. This is caused by a quirk in the Mercado Pago API, where the payment intent status is "FINISHED" despite the payment status being "rejected". This PR fixes the issue by checking the payment status explicitly by calling the API. task-4097968 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178469 Forward-Port-Of
Original PR description
There is an issue where the Mercado Pago terminal rejects a card payment, but Odoo accepts the payment. This is caused by a quirk in the Mercado Pago API, where the payment intent status is "FINISHED" despite the payment status being "rejected". This PR fixes the issue by checking the payment status explicitly by calling the API. task-4097968 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178469 Forward-Port-Of: odoo/odoo#178386
Reproduce: 1) Make a database before this PR: #176489 2) change to current version. 3) start database with `-u all` This will fail _check_carryover_target constrain when api.constrains checks for the data, carryover_target was not nullified because it was not in the group of values to be updated . So nullify carryover_target using eval="False" for exisiting records that were changed in #176489. Description of the issue/feature this PR addresses: Current behavior before PR: Desire
Original PR description
Reproduce: 1) Make a database before this PR: #176489 2) change to current version. 3) start database with `-u all` This will fail _check_carryover_target constrain when api.constrains checks for the data, carryover_target was not nullified because it was not in the group of values to be updated . So nullify carryover_target using eval="False" for exisiting records that were changed in #176489. 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#178165
If the model `account.move.line` has custom field with name `source_line_id` or `source_move_id` or `source_line_account_type` then, when the computed field `payment_state` in model `account.move` is computed it causes `psycopg2.errors.AmbiguousColumn` during `GROUP BY` operation here[^1]. Because **account_move_line** is one of the joined tables in that query and it causes issue while grouping. Actually the issue can occur if any of the joined tables in that[^2] query has custom field with the
Original PR description
If the model `account.move.line` has custom field with name `source_line_id` or `source_move_id` or `source_line_account_type` then, when the computed field `payment_state` in model `account.move` is…
If the model `account.move.line` has custom field with name `source_line_id` or `source_move_id` or `source_line_account_type` then, when the computed field `payment_state` in model `account.move` is computed it causes `psycopg2.errors.AmbiguousColumn` during `GROUP BY` operation here[^1]. Because **account_move_line** is one of the joined tables in that query and it causes issue while grouping. Actually the issue can occur if any of the joined tables in that[^2] query has custom field with the names above, it will cause same issue.
To resolve this issue, I added a table alias
to the all 3 elements in GROUP BY clause.
Steps to reproduce:
1. Install module account in any version >= `saas~15.3`
2. Add custom field to the model `account.move.line` with name `source_move_id`.
3. Try to create invoice
You will face issue similar to this:
```
File "/home/odoo/src/odoo/saas-15.3/addons/account/models/account_move.py", line 1430, in _compute_amount
self._cr.execute(' UNION ALL '.join(queries), [stored_ids, stored_ids])
File "/home/odoo/src/odoo/saas-15.3/odoo/sql_db.py", line 356, in execute
res = self._obj.execute(query, params)
psycopg2.errors.AmbiguousColumn: column reference "source_move_id" is ambiguous
LINE 20: GROUP BY source_line_id, source_move_id,...
```
I targeted this PR to `16.0` because branch `saas-15.3` is disbaled
[^1]: https://github.com/odoo/odoo/blob/8346b2a7561c178fd7e9f9d1fbd7dac3e3843fd1/addons/account/models/account_move.py#L912
[^2]: https://github.com/odoo/odoo/blob/8346b2a7561c178fd7e9f9d1fbd7dac3e3843fd1/addons/account/models/account_move.py#L896-L912
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#177579When `_search_on_comodel` is called with no `domain` and no `additional_domain`, it returns `False` (see added documentation for more explanation). However, when it is called with no `domain`, but an actual `additional_domain`, it returns something because both domains are merged before the `search`. Yet the `additional_domain` should filter the result even more, not expand it. Fix: First return `False` if there's no `filtered_domain`. Otherwise, and only then, merge both domains before the
Original PR description
When `_search_on_comodel` is called with no `domain` and no `additional_domain`, it returns `False` (see added documentation for more explanation). However, when it is called with no `domain`, but an actual `additional_domain`, it returns something because both domains are merged before the `search`. Yet the `additional_domain` should filter the result even more, not expand it. Fix: First return `False` if there's no `filtered_domain`. Otherwise, and only then, merge both domains before the `search`. task-3251630 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178119 Forward-Port-Of: odoo/odoo#172973
Steps to reproduce: 1) Install hr_work_entry_contract_planning_attendance 2) Create planning-based contracts for employee 3) create a shift for the employee for 8 hours (Based on the working schedule) 4) create attendance more than shift hours 5) Open work entries and you get Extra Overtime work entry Cause: For the work entries, we defined date_generated_from and date_generated_to in contracts Based on these dates we are going to decide whether we need to create work entries for the sp
Original PR description
Steps to reproduce: 1) Install hr_work_entry_contract_planning_attendance 2) Create planning-based contracts for employee 3) create a shift for the employee for 8 hours (Based on the working schedule) 4) create attendance more than shift hours 5) Open work entries and you get Extra Overtime work entry Cause: For the work entries, we defined date_generated_from and date_generated_to in contracts Based on these dates we are going to decide whether we need to create work entries for the specific period working schedule as work entry source Fix: these dates are set for both types of contracts task-3646385 Forward-Port-Of: odoo/odoo#156432
**Current behavior:** Creating a purchase order for >1000 units of a product with a tax that is included in the base price, there will be rounding issues and a corrective SVL will be created with the creation of the invoice which makes it impossible to reset the bill to draft. **Expected behavior:** The SVL value will reflect the true value of the associated moves, no corrective SVL will be created on invoice generation. **Steps to reproduce:** 1. Make a storable product with a cat
Original PR description
**Current behavior:** Creating a purchase order for >1000 units of a product with a tax that is included in the base price, there will be rounding issues and a corrective SVL will be created with the…
**Current behavior:**
Creating a purchase order for >1000 units of a product with a
tax that is included in the base price, there will be rounding
issues and a corrective SVL will be created with the creation of
the invoice which makes it impossible to reset the bill to
draft.
**Expected behavior:**
The SVL value will reflect the true value of the associated
moves, no corrective SVL will be created on invoice generation.
**Steps to reproduce:**
1. Make a storable product with a category having 'average'
costing method
2. Make a purchase tax of 10% with:
`price_include: True`
`repartition_type: tax = {factor_percent: 100, account_id=Tax Paid}`
`include_base_amount': False`
3. Create a purchase order for the product with the new tax,
with a quantity of 1000
4. Confirm the order, validate the picking, create a bill and
confirm it as well
5. Observe that 2 SVL are created (corrective one after the
creation of the invoice)
**Cause of the issue:**
The price unit calculation for the purchase order line's price
unit value is rounded, while the price unit calculation for the
associated account move line is not. The valuation system
compensates for this difference by creating another SVL record.
**Fix:**
Don't round when calculating the price unit for the purchase
order line. We should keep the max amount of precision until
there is an explicit need to round.
opw-3757684
Forward-Port-Of: odoo/odoo#178300
Forward-Port-Of: odoo/odoo#165653This commit fixes an issue that allowed users to paste text containing line breaks inside of a no line break input (like text fields with line_break = False option). This is resolved by replacing line breaks by white spaces on input when the event originates from a paste action. Task 4130435 Forward-Port-Of: odoo/odoo#178293 Forward-Port-Of: odoo/odoo#178044
Original PR description
This commit fixes an issue that allowed users to paste text containing line breaks inside of a no line break input (like text fields with line_break = False option). This is resolved by replacing line breaks by white spaces on input when the event originates from a paste action. Task 4130435 Forward-Port-Of: odoo/odoo#178293 Forward-Port-Of: odoo/odoo#178044
Forward-Port-Of: odoo/odoo#178525
Original PR description
Forward-Port-Of: odoo/odoo#178525
The route `/website_mail/follow` can create new contacts, for that reason, it should be protected with recaptcha similar to `/website/form/<string:model_name>` and `/website_mass_mailing/subscribe` This PR adds the Recaptcha check on the endpoint: `/website_mail/follow` Before this PR it was possible to create as much dummy contact as you wanted as an attacker with a simple script opw-4023724 Forward-Port-Of: odoo/odoo#178435 Forward-Port-Of: odoo/odoo#175083
Original PR description
The route `/website_mail/follow` can create new contacts, for that reason, it should be protected with recaptcha similar to `/website/form/<string:model_name>` and `/website_mass_mailing/subscribe` This PR adds the Recaptcha check on the endpoint: `/website_mail/follow` Before this PR it was possible to create as much dummy contact as you wanted as an attacker with a simple script opw-4023724 Forward-Port-Of: odoo/odoo#178435 Forward-Port-Of: odoo/odoo#175083
*= event_crm_sale, website_event_crm * -Probably miss by script since https://github.com/odoo/odoo/pull/104741/commits/332c117f60a36f723c450f61ce2e0e7181d66c21 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#177703
Original PR description
*= event_crm_sale, website_event_crm * -Probably miss by script since https://github.com/odoo/odoo/pull/104741/commits/332c117f60a36f723c450f61ce2e0e7181d66c21 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#177703
**Current behavior:** When a kit bom product move line is broken down into move lines for its component products, changes written to the move line (not on the move) will not carry over to the new move nor move lines. **Expected behavior:** The change should be observed beyond the decomposition. **Steps to reproduce:** 1. Create a new internal transfer in barcode 2. Add a product with some bom via form, also edit the destination location in the form to be something non-
Original PR description
**Current behavior:** When a kit bom product move line is broken down into move lines for its component products, changes written to the move line (not on the move) will not carry over to the new…
**Current behavior:**
When a kit bom product move line is broken down into move lines
for its component products, changes written to the move line
(not on the move) will not carry over to the new move nor move
lines.
**Expected behavior:**
The change should be observed beyond the decomposition.
**Steps to reproduce:**
1. Create a new internal transfer in barcode
2. Add a product with some bom via form, also edit the
destination location in the form to be something
non-default.
3. Save the form, validate the transfer
4. See that the broken down move lines don't keep the changed
destination location
**Cause of the issue:**
When the kit bom moves are exploded, the location information of
its move lines is not taken into account at any point- and thus
it's lost.
**Fix:**
For kit bom products, use a move line's location information
during creation of a move as opposed to the picking. Only link a
new move line for a kit bom product to an existing move if (in
addition to the product) the location source and destination
values match.
opw-4016702
Forward-Port-Of: odoo/odoo#177818
Forward-Port-Of: odoo/odoo#173347Before this commit, reloading a sale order imported into the POS would result in the loss of the link between the POS order line and the sale order line. opw-4120046 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177776
Original PR description
Before this commit, reloading a sale order imported into the POS would result in the loss of the link between the POS order line and the sale order line. opw-4120046 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177776
Before this commit, deselecting a contact in the POS would not revert to using the default pricelist for price computation. This issue was due to incorrect pricelist assignment when a contact was removed. opw-4068014 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177610
Original PR description
Before this commit, deselecting a contact in the POS would not revert to using the default pricelist for price computation. This issue was due to incorrect pricelist assignment when a contact was removed. opw-4068014 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177610
When the user tries to add a barcode without Customer Taxes, a traceback will appear. Traceback: ``` AttributeError: 'product.template' object has no attribute 'super' File "odoo/http.py", line 2374, in __call__ response = request._serve_db() File "odoo/http.py", line 1904, in _serve_db return self._transactioning( File "odoo/http.py", line 1967, in _transactioning return service_model.retrying(func, env=self.env) File "odoo/service/model.py", line 134, in retryi
Original PR description
When the user tries to add a barcode without Customer Taxes, a traceback will appear. Traceback: ``` AttributeError: 'product.template' object has no attribute 'super' File "odoo/http.py", line 2374,…
When the user tries to add a barcode without Customer Taxes,
a traceback will appear.
Traceback:
```
AttributeError: 'product.template' object has no attribute 'super'
File "odoo/http.py", line 2374, in __call__
response = request._serve_db()
File "odoo/http.py", line 1904, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1967, 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 1934, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2178, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 223, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 755, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 35, in call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 459, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/web/models/models.py", line 1008, in onchange
record._apply_onchange_methods(field_name, result)
File "odoo/models.py", line 7042, in _apply_onchange_methods
res = method(self)
File "home/odoo/src/enterprise/saas-17.4/product_barcodelookup/models/product_template.py", line 20, in _onchange_barcode
product._update_product_by_barcodelookup(product, barcode_lookup_data)
File "home/odoo/src/enterprise/saas-17.4/product_barcodelookup/models/product_template.py", line 77, in _update_product_by_barcodelookup
product.list_price = self._get_list_price(price)
File "addons/account/models/product.py", line 154, in _get_list_price
return self.super._get_list_price(price)
```
https://github.com/odoo/odoo/blob/42fa237296f9b1fa556ae310b3273f863420e659/addons/account/models/product.py#L146 Here, self.super is used instead of super() .
so, it will lead to the above traceback.
sentry-5766033395
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#178177From the IoT Box form view, we display the connected devices: they were readonly. Now, they are editable, avoiding us from going to the "Device" page, then look for the device in the list. Forward-Port-Of: odoo/enterprise#68966
Original PR description
From the IoT Box form view, we display the connected devices: they were readonly. Now, they are editable, avoiding us from going to the "Device" page, then look for the device in the list. Forward-Port-Of: odoo/enterprise#68966
This commit fixes the broken tour in payroll as the previous one depended on actions that have been removed. task-3621276 Forward-Port-Of: odoo/enterprise#68492 Forward-Port-Of: odoo/enterprise#61673
Original PR description
This commit fixes the broken tour in payroll as the previous one depended on actions that have been removed. task-3621276 Forward-Port-Of: odoo/enterprise#68492 Forward-Port-Of: odoo/enterprise#61673
A `_logger.critical` call was mistakenly committed in the `SixDriver.py` file. It has now been removed. Task: 3995682 Forward-Port-Of: odoo/enterprise#66641
Original PR description
A `_logger.critical` call was mistakenly committed in the `SixDriver.py` file. It has now been removed. Task: 3995682 Forward-Port-Of: odoo/enterprise#66641
Behaviour before fix: The exported planning ics file included both the employee's shifts and unwanted shifts by other employees. Behaviour after fix: The exported planning ics file only includes the employee's shifts. Solution: Don't include the domain to add unwnated shifts in the search of the _get_cs_file method of the planning.planning model. Task-3981746 Forward-Port-Of: odoo/enterprise#69050
Original PR description
Behaviour before fix: The exported planning ics file included both the employee's shifts and unwanted shifts by other employees. Behaviour after fix: The exported planning ics file only includes the employee's shifts. Solution: Don't include the domain to add unwnated shifts in the search of the _get_cs_file method of the planning.planning model. Task-3981746 Forward-Port-Of: odoo/enterprise#69050
Performs test of a related commit in communiy: [FIX] mail: include whatsapp in webpush notifications There are couple of components in the notification architecture. For the sake of illustration let's simplify it with the following: Sender -> Queuer -> Receiver Queuer is an FMC backend, so we should only be concerned about the other two. Receiver which is just a frontend service worker that will generate notifications as soon as he receives an event. The issue (before this commit) was in the
Original PR description
Performs test of a related commit in communiy: [FIX] mail: include whatsapp in webpush notifications There are couple of components in the notification architecture. For the sake of illustration let's simplify it with the following: Sender -> Queuer -> Receiver Queuer is an FMC backend, so we should only be concerned about the other two. Receiver which is just a frontend service worker that will generate notifications as soon as he receives an event. The issue (before this commit) was in the Sender part, which was skipping whatsapp type message generation. [Reproduce] - Configure Whatsapp account, include user A in "Notify users" - Allow notifications in your browser (chat icon/ OdooBot suggestion) - Send a whatsapp message to the configured whatsapp number - BUG: Push notification not showing up opw-3720699 Forward-Port-Of: odoo/enterprise#68807 Forward-Port-Of: odoo/enterprise#68453
Added PLE 12.1 and PLE 13.1 records for detailed inventory tracking. PLE 12.1 tracks inventory in physical units, while PLE 13.1 includes both physical and monetary values. Both records are updated semi-annually and reported monthly, with submission deadlines of October 1st and April 1st, per Superintendent Resolution 169-2015. Forward-Port-Of: odoo/enterprise#68527 Forward-Port-Of: odoo/enterprise#62696
Original PR description
Added PLE 12.1 and PLE 13.1 records for detailed inventory tracking. PLE 12.1 tracks inventory in physical units, while PLE 13.1 includes both physical and monetary values. Both records are updated semi-annually and reported monthly, with submission deadlines of October 1st and April 1st, per Superintendent Resolution 169-2015. Forward-Port-Of: odoo/enterprise#68527 Forward-Port-Of: odoo/enterprise#62696
This commit brings out some more improvement to the New Zealand localization. It will mostly be about translating a few terms, improving tax labels on invoices and mark invoices as "tax invoices". Task id #3753652 Forward-Port-Of: odoo/enterprise#69224 Forward-Port-Of: odoo/enterprise#62591
Original PR description
This commit brings out some more improvement to the New Zealand localization. It will mostly be about translating a few terms, improving tax labels on invoices and mark invoices as "tax invoices". Task id #3753652 Forward-Port-Of: odoo/enterprise#69224 Forward-Port-Of: odoo/enterprise#62591
Current behaviour: --- Sometimes when clicking "Put in pack", the whole page freezes and gives a 503 error. Steps to reproduce: --- 1. Go to Settings, Inventory 2. Activate Packages 3. Go to Products 4. Create a new product 5. Set inventory > Tracking: By Lots 6. Go to Operations > Receipts 7. Create a new receipt for the product 8. Set the Demand quantity to 13.5 9. Click on Mark as Todo 10. Go to Barcode, operations, receipts 11. Select the last created receipt 12. Edit the l
Original PR description
Current behaviour: --- Sometimes when clicking "Put in pack", the whole page freezes and gives a 503 error. Steps to reproduce: --- 1. Go to Settings, Inventory 2. Activate Packages 3. Go to Products 4. Create a new product 5. Set inventory > Tracking: By Lots 6. Go to Operations > Receipts 7. Create a new receipt for the product 8. Set the Demand quantity to 13.5 9. Click on Mark as Todo 10. Go to Barcode, operations, receipts 11. Select the last created receipt 12. Edit the line, input 5.66, save 13. Click on Put in pack 14. The whole page freezes Cause of the issue: --- Caused by: https://github.com/odoo/enterprise/commit/42e9c378b0766e98a93605d0c2bc0797e3995734 The content of `pageLines` can be modified, thus the loop can never end. Fix: --- Shallow copy of `this.pageLines` (similar than in `get groupedLines()` in `BarcodeModel`) opw-4060843 Forward-Port-Of: odoo/enterprise#68448
Steps to reproduce the bug: - Create a storable product “P1” - Create a 3 quality.point: - 1st per operation: - 2nd per product - 3rd per quantity - Create a receipt picking with 2 unit of P1 - Mark as to do - Try to do the “quality.check” Problem: The 'quality.check' is not ordered by the 'quality.point' defined in the product because the 'quality.check' measured by 'move_line' is created when the 'stock.move.line' is created before the other type, s
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”
- Create a 3 quality.point:
- 1st per operation:
- 2nd per product
- 3rd per quantity
- Create a receipt picking with 2 unit of P1
- Mark as to do
- Try to do the “quality.check”
Problem:
The 'quality.check' is not ordered by the 'quality.point' defined in the product because the 'quality.check' measured by 'move_line' is created when the 'stock.move.line' is created before the other type, so it is proposed first.
https://github.com/odoo/enterprise/blob/fbc3ce9d690ab8c5ccf5b0f46748aec8901575a1/quality_control/models/stock_move_line.py#L31
https://github.com/odoo/enterprise/blob/fbc3ce9d690ab8c5ccf5b0f46748aec8901575a1/quality_control/models/stock_move_line.py#L54-L55
opw-3870095
Forward-Port-Of: odoo/enterprise#62107
Forward-Port-Of: odoo/enterprise#61132In this PR, one test case is added to ensure the behavior of the planning-based contract on work entries Task - 3646385 Forward-Port-Of: odoo/enterprise#66801
Original PR description
In this PR, one test case is added to ensure the behavior of the planning-based contract on work entries Task - 3646385 Forward-Port-Of: odoo/enterprise#66801
Currently, a traceback occurs when the user creates a PO with a product from a company other than 'KE'. To reproduce this issue: 1) Install `l10n_ke_edi_oscu_stock` 2) Switch to a company other than `KE` 3) Create a PO with a product > `Confirm Order` 4) Click on `Receive Products` > `Validate` and get back to PO through breadcrumb 5) Click on the `Create Bill` Error:- ``` ValueError: Compute method failed to assign purchase.order.line(19, ).display_name ``` The above error o
Original PR description
Currently, a traceback occurs when the user creates a PO with a product from a company other than 'KE'. To reproduce this issue: 1) Install `l10n_ke_edi_oscu_stock` 2) Switch to a company other than…
Currently, a traceback occurs when the user creates a PO with a product from a company other than 'KE'. To reproduce this issue: 1) Install `l10n_ke_edi_oscu_stock` 2) Switch to a company other than `KE` 3) Create a PO with a product > `Confirm Order` 4) Click on `Receive Products` > `Validate` and get back to PO through breadcrumb 5) Click on the `Create Bill` Error:- ``` ValueError: Compute method failed to assign purchase.order.line(19, ).display_name ``` The above error occurs because of a computing method in which a filter is used to access the `KE` company record. But when the user is not in `KE` company it returns None. Here, the `display_name` is a readonly and non-stored field. Which leads to the above traceback. https://github.com/odoo/enterprise/blob/7a9157e059fd70831eb3174863a797abdb99ad53/l10n_ke_edi_oscu_stock/models/purchase.py#L71-L73 After applying this commit, We can resolve the above issue by giving the POl name when it is not `KE` company. sentry-5726618591 Forward-Port-Of: odoo/enterprise#69101 Forward-Port-Of: odoo/enterprise#68693
Currently, a traceback occurs when the user creates a product with a barcode. To reproduce this issue: 1) Install `stock`, `barcode lookup` 2) Give an `API` key in settings for `barcodelookup` 3) Now create a new product variant by scanning the barcode of a product or enter the barcode manually in stock. Note:- API key for testing:- `wjgkytojaghoiyzu9n2f6vc6wgysp9` Barcode for testing:- `8901207035715` Error:- ``` TypeError: unsupported operand type(s) for +=: 'bool' and
Original PR description
Currently, a traceback occurs when the user creates a product with a barcode. To reproduce this issue: 1) Install `stock`, `barcode lookup` 2) Give an `API` key in settings for `barcodelookup` 3) Now create a new product variant by scanning the barcode of a product or enter the barcode manually in stock. Note:- API key for testing:- `wjgkytojaghoiyzu9n2f6vc6wgysp9` Barcode for testing:- `8901207035715` Error:- ``` TypeError: unsupported operand type(s) for +=: 'bool' and 'Markup' ``` Initially, there will be no product description while creating a new product. So it leads to a traceback when `+=` is used between the markup and description https://github.com/odoo/enterprise/blob/67ecb18497ee3f1ade6cc81738db3df08f94ba2f/product_barcodelookup/models/product_template.py#L189-L190 sentry-5744282512 Forward-Port-Of: odoo/enterprise#69065
**Current behavior:** When a kit bom product move line is broken down into move lines for its component products, changes written to the move line (not on the move) will not carry over to the new move nor move lines. **Expected behavior:** The change should be observed beyond the decomposition. **Steps to reproduce:** 1. Create a new internal transfer in barcode 2. Add a product with some bom via form, also edit the destination location in the form to be something non-
Original PR description
**Current behavior:** When a kit bom product move line is broken down into move lines for its component products, changes written to the move line (not on the move) will not carry over to the new…
**Current behavior:**
When a kit bom product move line is broken down into move lines
for its component products, changes written to the move line
(not on the move) will not carry over to the new move nor move
lines.
**Expected behavior:**
The change should be observed beyond the decomposition.
**Steps to reproduce:**
1. Create a new internal transfer in barcode
2. Add a product with some bom via form, also edit the
destination location in the form to be something
non-default.
3. Save the form, validate the transfer
4. See that the broken down move lines don't keep the changed
destination location
**Cause of the issue:**
When the kit bom moves are exploded, the location information of
its move lines is not taken into account at any point- and thus
it's lost.
**Fix:**
For kit bom products, use a move line's location information
during creation of a move as opposed to the picking. Only link a
new move line for a kit bom product to an existing move if (in
addition to the product) the location source and destination
values match.
opw-4016702
Forward-Port-Of: odoo/enterprise#68855
Forward-Port-Of: odoo/enterprise#66746Purpose this PR: This PR aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task:3818666 Forward-Port-Of: odoo/enterprise#68077
Original PR description
Purpose this PR: This PR aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task:3818666 Forward-Port-Of: odoo/enterprise#68077