Friday, September 6, 2024
55 changes · saas-17.4
Enhancements to existing features
ESC/Label printers, such as the C4000e, are now recognized as label printers instead of generic office printers. This makes it easier for users and support teams to distinguish printer types when managing connected hardware.
Original PR description
This sets the subtype of ESC/Label printers (e.g. C4000e) so that they can be easily distinguished. Previously, they would show as an 'Office Printer', after this PR they show as a 'Label Printer'. task-4045816 Enterprise PR: https://github.com/odoo/enterprise/pull/67605 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This fixes an issue in the chatter where saving or canceling an edited note required clicking twice. Users can now complete those actions on the first click, making message editing behave as expected.
Original PR description
Problem: Elements inside `CANCEL_OR_SAVE_EDIT_TEXT` are created twice, which interferes with event handling. To fix this, the element is now created in the setup method. Steps to reproduce: - Open the chatter. - Log a note. - Edit the note. - Now, if you click Save or Cancel, both actions will only work on the second click. opw-4119283 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
On the first of september 2024, the official default rate in finland goes from 24.0% to 25.5%. This means that the OSS taxes that were pointing at the old rate need to be updated. --- task-4027773 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179506 Forward-Port-Of: odoo/odoo#177857
Original PR description
On the first of september 2024, the official default rate in finland goes from 24.0% to 25.5%. This means that the OSS taxes that were pointing at the old rate need to be updated. --- task-4027773 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179506 Forward-Port-Of: odoo/odoo#177857
Automatic receipt printing in Point of Sale now shows the correct change due to customers after cash payments. This prevents confusing or incomplete receipts when customers overpay and receive change.
Original PR description
When activating the automatic receipt printing option, the receipt would not show the change amount. Steps to reproduce: ------------------- * Turn on automatic receipt printing * Open PoS, add some product and go to the payment page * Click on cash, and change the amount so that there is some change > Observation: The change doesn't appear on the receipt Why the fix: ------------ When computing the change to display on the receipt, we were using the `get_change` function that was not returning the right value in this context. Instead we will always use the `amount_return` that is correct opw-4141904 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The self-ordering interface now shows clean product names on mobile without internal product reference codes. This avoids confusing customers with back-office identifiers and keeps the ordering experience clearer.
Original PR description
In mobile, the display name of the product was shown with the reference which is something we do not want. This commit fixes that issue by adding the context display_default_code=False in the _load_pos_self_data method of the product model. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The generic tax report now allows very small rounding differences instead of treating every tiny mismatch as an error. This reduces unnecessary blocking alerts while still preserving report reliability for meaningful discrepancies.
Original PR description
https://github.com/odoo/enterprise/pull/61962 introduces consistency check for the generic tax report. The check was a bit too strict (we didn't allow any mistake). This pr relaxes the constraint a bit by allowing an error as long as it's smaller than 0.1% of the base amount. task-4119817
Description of the issue this commit addresses: With the change of the taxes in Finland, the default tax was modified but the way it is decided isn't the same as from 17.0. Because of that, in 17.0 and later versions, the default tax remained 24.0%. --- Desired behavior after this commit is merged: The default tax in the company template is 25.5% --- no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#
Original PR description
Description of the issue this commit addresses: With the change of the taxes in Finland, the default tax was modified but the way it is decided isn't the same as from 17.0. Because of that, in 17.0 and later versions, the default tax remained 24.0%. --- Desired behavior after this commit is merged: The default tax in the company template is 25.5% --- no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179516
We should only see the accounts matching the code prefix, just like done in `_name_search`. It was the expected result before this fix[^1] but the solution was to remove the feature instead of fix the traceback without explanation. [^1]: 8852ff2767eef111807a3f6efc7cc5376656f45f Forward-Port-Of: odoo/odoo#178947
Original PR description
We should only see the accounts matching the code prefix, just like done in `_name_search`. It was the expected result before this fix[^1] but the solution was to remove the feature instead of fix the traceback without explanation. [^1]: 8852ff2767eef111807a3f6efc7cc5376656f45f Forward-Port-Of: odoo/odoo#178947
The issue was that when extracting field names from an address, the current implementation only considered fields and spaces. Adding any additional characters would break the field names, resulting in invalid field names. For example, given the address line "%(zip)s, %(city)s", the current code would return the fields ["zip,", "city"], where the first field name is invalid. We should only consider what is between "%(<field_name>)s". Steps to reproduce: - Go to Contact > Configuration > Cou
Original PR description
The issue was that when extracting field names from an address, the current implementation only considered fields and spaces. Adding any additional characters would break the field names, resulting…
The issue was that when extracting field names from an address, the current implementation only considered fields and spaces. Adding any additional characters would break the field names, resulting in invalid field names. For example, given the address line "%(zip)s, %(city)s", the current code would return the fields ["zip,", "city"], where the first field name is invalid. We should only consider what is between "%(<field_name>)s". Steps to reproduce: - Go to Contact > Configuration > Countries (Developer mode must be enabled). - Search for "United States" and then edit. - In "Layout in Reports", add any characters to the 3rd line where there is the "city" field, and save. - Open any contact (you may need to refresh). - The order of fields is now incorrect and does not match the "Layout in Reports". This fix ensures that only valid field names are extracted from the address line, maintaining the correct order as specified in the "Layout in Reports". opw-3920886 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#176017
Steps to reproduce: - Open the 'Outstanding Receipts' account on any DB - Change its code - Notice how `reconcile` changes to False. Analysis: - Since #94171 (merged in 15.5), there is a dependency chain `code` -> `account_type` -> `reconcile`. - As such, changing the code will cause `reconcile` to be recomputed even if the account type was not changed. - Because the Outstanding Receipts has account type `asset_current`, it's changed back to `reconcile=False` any time `code` is changed.
Original PR description
Steps to reproduce: - Open the 'Outstanding Receipts' account on any DB - Change its code - Notice how `reconcile` changes to False. Analysis: - Since #94171 (merged in 15.5), there is a dependency chain `code` -> `account_type` -> `reconcile`. - As such, changing the code will cause `reconcile` to be recomputed even if the account type was not changed. - Because the Outstanding Receipts has account type `asset_current`, it's changed back to `reconcile=False` any time `code` is changed. Solution: - We don't change `reconcile` if the account_type is an asset or liability type different from `asset_receivable` or `liability_payable`. taskid: 4137941 Forward-Port-Of: odoo/odoo#177880
Create a new Fiscal Position and set Country: Austria Foreign Tax ID: ATU79284409 Click "here" to create the taxes for this country. Traceback will raise "KeyError: 'children_tax_ids'" This occurs because the system tries to load the children tax of a tax group with no child defined opw-4134352 Forward-Port-Of: odoo/odoo#179001
Original PR description
Create a new Fiscal Position and set Country: Austria Foreign Tax ID: ATU79284409 Click "here" to create the taxes for this country. Traceback will raise "KeyError: 'children_tax_ids'" This occurs because the system tries to load the children tax of a tax group with no child defined opw-4134352 Forward-Port-Of: odoo/odoo#179001
When trying to print the receipt on the Odoo app on a mobile device, the background color of the receipt would be different than the background color of the text Steps to reproduce: ------------------- * Open PoS on the Odoo app * Print receipt > Observation: On the preview the receipt looks like this  Why the fix: ------------ By making the background color transparent we
Original PR description
When trying to print the receipt on the Odoo app on a mobile device, the background color of the receipt would be different than the background color of the text Steps to reproduce: ------------------- * Open PoS on the Odoo app * Print receipt > Observation: On the preview the receipt looks like this  Why the fix: ------------ By making the background color transparent we ensure that it will always be the same for the text and the general background color opw-4094591 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178803
We add an alias to reset the IoT Box on a dev branch. Forward-Port-Of: odoo/odoo#179175
Original PR description
We add an alias to reset the IoT Box on a dev branch. Forward-Port-Of: odoo/odoo#179175
### Steps to reproduce: - Install Time-off module - Create new allocation - If there is a default employee set remove it - Select Accrual Allocation - Set start date to a year ago - Set an employee ### Current behavior before PR: The allocation days is not getting computed onchange of employees. This is happening because it is computed only when we trigger _onchange_date_from and employee_id is not one of the fields that triggers this onchange method. ### Desired behavior afte
Original PR description
### Steps to reproduce: - Install Time-off module - Create new allocation - If there is a default employee set remove it - Select Accrual Allocation - Set start date to a year ago - Set an employee ### Current behavior before PR: The allocation days is not getting computed onchange of employees. This is happening because it is computed only when we trigger _onchange_date_from and employee_id is not one of the fields that triggers this onchange method. ### Desired behavior after PR is merged: Since we are checking if we have an employee_id or not in _onchange_date_from we added the employee_id to be one of the fields that triggers the onchange then to recompute the allocation days opw-4100075 Forward-Port-Of: odoo/odoo#179036 Forward-Port-Of: odoo/odoo#176649
On the invoice tree view we have a possible search on multiple field at once. While this is a good feature for the user as it makes a very practical search, for large databases this is not performant at all, as we're searching on multiple fields at once, some of them not being indexed. To allow for more efficient searches, we added some specific search. task: 4154313 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#
Original PR description
On the invoice tree view we have a possible search on multiple field at once. While this is a good feature for the user as it makes a very practical search, for large databases this is not performant at all, as we're searching on multiple fields at once, some of them not being indexed. To allow for more efficient searches, we added some specific search. task: 4154313 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179125
Issue: When trying to resend a mail authored by any other user as an administrator, we are going to receive a "Delivery Failed" error even though the mail has been sent. Steps to reproduce: - Send any email as Demo, so they stay in queue for seding under mails. - Go to mails as admin now and try to send the mail manually. (You can use a meeting for example to send the mail, create a meeting and send the mail to notify this meeting.) Solution: Since the issue is triggered when we try
Original PR description
Issue: When trying to resend a mail authored by any other user as an administrator, we are going to receive a "Delivery Failed" error even though the mail has been sent. Steps to reproduce: - Send any email as Demo, so they stay in queue for seding under mails. - Go to mails as admin now and try to send the mail manually. (You can use a meeting for example to send the mail, create a meeting and send the mail to notify this meeting.) Solution: Since the issue is triggered when we try to write on the message_id, which is a related field we might want to specify it in 'mail.mail' so we ensure that message_id is available directly on the 'mail.mail' model. This, will also apply properly the related_sudo=True that we need in order to work with it as administrator. opw-3963124 Forward-Port-Of: odoo/odoo#177813 Forward-Port-Of: odoo/odoo#173406
This PR contains several fixes involving the "select all" feature in list view. Task~4150362 Forward-Port-Of: odoo/odoo#179287 Forward-Port-Of: odoo/odoo#178772
Original PR description
This PR contains several fixes involving the "select all" feature in list view. Task~4150362 Forward-Port-Of: odoo/odoo#179287 Forward-Port-Of: odoo/odoo#178772
This is no longer necessary with the introduction of: https://github.com/odoo/odoo/pull/144652 Forward-Port-Of: odoo/odoo#179149 Forward-Port-Of: odoo/odoo#145284
Original PR description
This is no longer necessary with the introduction of: https://github.com/odoo/odoo/pull/144652 Forward-Port-Of: odoo/odoo#179149 Forward-Port-Of: odoo/odoo#145284
Issue: ====== Can't add content at the end/start of button Steps to reproduce the issue: ============================= - Use chrome - Install events - Go to website/events/conference for architects (demo data) - Open editor and edit - Put the cursor at the end of the "Get The direction" button - Try to add some text, nothing happens Note: it works in firefox Origin of the issue: ==================== Chrome doesn't support the following case correctly when the selection is at
Original PR description
Issue: ====== Can't add content at the end/start of button Steps to reproduce the issue: ============================= - Use chrome - Install events - Go to website/events/conference for architects…
Issue: ====== Can't add content at the end/start of button Steps to reproduce the issue: ============================= - Use chrome - Install events - Go to website/events/conference for architects (demo data) - Open editor and edit - Put the cursor at the end of the "Get The direction" button - Try to add some text, nothing happens Note: it works in firefox Origin of the issue: ==================== Chrome doesn't support the following case correctly when the selection is at the start or at the end of the text. ``` <div contenteditable="false"> <a contenteditable="true" href="http://www.example.com"> <p> abcde </p> </a> </div> ``` The `p` element inside the `a` was introduced in [1]. Solution: ========= Unwrap the content of the `p` elements inside `a` element the same way we do for `li` elements. opw-3878459 [1]: https://github.com/odoo/odoo/commit/4a890e1f92a665dd53f17ee57b4e7792c33da7db Forward-Port-Of: odoo/odoo#178138 Forward-Port-Of: odoo/odoo#169765
model.default_get should use a list of field names as input but not a field name 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#179162 Forward-Port-Of: odoo/odoo#179092
Original PR description
model.default_get should use a list of field names as input but not a field name 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#179162 Forward-Port-Of: odoo/odoo#179092
You shouldn't be able to archive a journal that is used in a payment method. Steps to reproduce: ------------------- * Open a payment method and archive the journal used in it * Open PoS and make an order using this payment method > Observation: Close the PoS session, you will have an error saying you cannot close the session. Why the fix: ------------ We override the `action_archive` function to make sure no payment method is using the journal being archived. opw-4070620 --- I
Original PR description
You shouldn't be able to archive a journal that is used in a payment method. Steps to reproduce: ------------------- * Open a payment method and archive the journal used in it * Open PoS and make an order using this payment method > Observation: Close the PoS session, you will have an error saying you cannot close the session. Why the fix: ------------ We override the `action_archive` function to make sure no payment method is using the journal being archived. opw-4070620 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177751
Currently an exception was generated when the user processed an instance refund from Razorpay, and we get notes as a list in notification data (see response here [Ref](https://github.com/razorpay/razorpay-python/blob/master/documents/refund.md#create-an-instant-refund)). error: ``` AttributeError: 'list' object has no attribute 'get' File "odoo/http.py", line 2383, in __call__ response = request._serve_db() File "odoo/http.py", line 1913, in _serve_db return self._transac
Original PR description
Currently an exception was generated when the user processed an instance refund from Razorpay, and we get notes as a list in notification data (see response here…
Currently an exception was generated when the user processed an instance refund from
Razorpay, and we get notes as a list in notification data (see response here [Ref](https://github.com/razorpay/razorpay-python/blob/master/documents/refund.md#create-an-instant-refund)).
error:
```
AttributeError: 'list' object has no attribute 'get'
File "odoo/http.py", line 2383, in __call__
response = request._serve_db()
File "odoo/http.py", line 1913, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1976, 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 1943, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2100, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 227, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/payment_razorpay/controllers/main.py", line 41, in razorpay_webhook
tx_sudo = request.env['payment.transaction'].sudo()._get_tx_from_notification_data(
File "addons/payment_razorpay/models/payment_transaction.py", line 328, in _get_tx_from_notification_data
reference = notification_data.get('notes', {}).get('reference')
```
This commit will fix the above issue by preventing getting the dict data if `notes` in notification data is list type.
sentry-5793000218
Forward-Port-Of: odoo/odoo#179135It is necessary to wrap the tab names in _lt to make them translatable into the various languages offered by Odoo. Before these changes, the tab names are always in English. After these changes, when translations are added to the terms, they will appear translated into the selected language. cc @Tecnativa --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177889 Forward-Port-Of: odoo/odoo#177724
Original PR description
It is necessary to wrap the tab names in _lt to make them translatable into the various languages offered by Odoo. Before these changes, the tab names are always in English. After these changes, when translations are added to the terms, they will appear translated into the selected language. cc @Tecnativa --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177889 Forward-Port-Of: odoo/odoo#177724
**Current behavior before PR:** - Pressing Enter after selecting all columns in a row would break the table format. **Desired behavior after PR is merged:** - Now, when the Enter key is pressed, all the contents of the anchor `<td>` will be removed first, and then the Enter process within that `<td>` will be executed. task-3557503 Forward-Port-Of: odoo/odoo#177775 Forward-Port-Of: odoo/odoo#139312
Original PR description
**Current behavior before PR:** - Pressing Enter after selecting all columns in a row would break the table format. **Desired behavior after PR is merged:** - Now, when the Enter key is pressed, all the contents of the anchor `<td>` will be removed first, and then the Enter process within that `<td>` will be executed. task-3557503 Forward-Port-Of: odoo/odoo#177775 Forward-Port-Of: odoo/odoo#139312
Steps to reproduce: ------------------- - Have xlrd >= 2.0 and openpyxl 3.1.2 - Using the `base_import` module, import an XLSX file with dates - Test -> ValueError unconverted data remains: 00:00:00 Cause: ----- Since xlrd 2.0.0 in (#169245), if we have a date in an XLSX file, we nonetheless always get a datetime with a time value of 00:00:00 instead of a date object. This datetime later fails to be converted to a date because of an "unconverted data remains: 00:00:00" error. Fix:
Original PR description
Steps to reproduce: ------------------- - Have xlrd >= 2.0 and openpyxl 3.1.2 - Using the `base_import` module, import an XLSX file with dates - Test -> ValueError unconverted data remains: 00:00:00 Cause: ----- Since xlrd 2.0.0 in (#169245), if we have a date in an XLSX file, we nonetheless always get a datetime with a time value of 00:00:00 instead of a date object. This datetime later fails to be converted to a date because of an "unconverted data remains: 00:00:00" error. Fix: --- Use is_datetime() from openpyxl.styles.numbers to check cell.number_format instead of depending on object type. Forward-Port-Of: odoo/odoo#177782
Steps to reproduce: - Install `payment_stripe` and `website_sale` - Configure express checkout for stripe - Add public/secret keys and - Enable "Apple Pay" in settings (to do this comment out this block) https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/models/payment_provider.py#L234-L237 - Enable "Link" in Stripe and add payment domain to ngrok domain - Go to website in incognito page and open a product - Add it to cart and click on the expres
Original PR description
Steps to reproduce: - Install `payment_stripe` and `website_sale` - Configure express checkout for stripe - Add public/secret keys and - Enable "Apple Pay" in settings (to do this comment out this block) https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/models/payment_provider.py#L234-L237 - Enable "Link" in Stripe and add payment domain to ngrok domain - Go to website in incognito page and open a product - Add it to cart and click on the express checkout button - Complete process to pay - Go to contact linked to sale Issues: Phone is missing, this is because during the creation of the shipping address `res_partner` record we don't have the phone. https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/static/src/js/express_checkout_form.js#L171-L181 opw-4055084 Forward-Port-Of: odoo/odoo#176213
Draft registrations should not receive any periodic email until they confirm they will be attending. This avoids awkward situations where the reminder contains a ticket but their ticket isn't validated yet. reverts part of [1] where we adjusted the sent count to match drafts [1] https://github.com/odoo/odoo/commit/78aea4c0d6d0d60cb355851b28b246be48875e76 task-4104891 Forward-Port-Of: odoo/odoo#179306
Original PR description
Draft registrations should not receive any periodic email until they confirm they will be attending. This avoids awkward situations where the reminder contains a ticket but their ticket isn't validated yet. reverts part of [1] where we adjusted the sent count to match drafts [1] https://github.com/odoo/odoo/commit/78aea4c0d6d0d60cb355851b28b246be48875e76 task-4104891 Forward-Port-Of: odoo/odoo#179306
- Before this commit The ir.asset target field is only displayed when the directive is 'replace', but this field is required for 'after' and 'before' directives too. - After this commit The form view is adapted to fix this issue. Forward-Port-Of: odoo/odoo#178799 Forward-Port-Of: odoo/odoo#178765
Original PR description
- Before this commit The ir.asset target field is only displayed when the directive is 'replace', but this field is required for 'after' and 'before' directives too. - After this commit The form view is adapted to fix this issue. Forward-Port-Of: odoo/odoo#178799 Forward-Port-Of: odoo/odoo#178765
enterprise: https://github.com/odoo/enterprise/pull/68361 Forward-Port-Of: odoo/odoo#179183 Forward-Port-Of: odoo/odoo#176580
Original PR description
enterprise: https://github.com/odoo/enterprise/pull/68361 Forward-Port-Of: odoo/odoo#179183 Forward-Port-Of: odoo/odoo#176580
Send reminder also to the event organizer **Example use case**: - Create an event, set an organizer (Mitchell Admin), and add as attendees Mitchell Admin and another. - Set an email reminder on the event - The event reminder will be received by all attendees (including the organizer) Current behavior before PR - Event organizer does not receive the reminder email @Tecnativa TT48356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-
Original PR description
Send reminder also to the event organizer **Example use case**: - Create an event, set an organizer (Mitchell Admin), and add as attendees Mitchell Admin and another. - Set an email reminder on the event - The event reminder will be received by all attendees (including the organizer) Current behavior before PR - Event organizer does not receive the reminder email @Tecnativa TT48356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170348 Forward-Port-Of: odoo/odoo#160202
- saas-17.1 ### Steps to reproduce: - Install sales timesheet, accounting, and purchase. - Select Analytic Accounting from the accounting setting. - Create a billable project. - Create a purchase order, select a service product, add a project in analytic distribution, and add quantity 10. - While confirming PO, add received quantity 5. - Open project updates, on the right side under the profitability heading. Observe the expected value of cost. - Click on a new button, in the descripti
Original PR description
- saas-17.1 ### Steps to reproduce: - Install sales timesheet, accounting, and purchase. - Select Analytic Accounting from the accounting setting. - Create a billable project. - Create a purchase order, select a service product, add a project in analytic distribution, and add quantity 10. - While confirming PO, add received quantity 5. - Open project updates, on the right side under the profitability heading. Observe the expected value of cost. - Click on a new button, in the description tab, and check the expected value. - There is a wrong value in the form view. ### Issue: Wrong value of costs expected in project update form view. ### Solution: Calculate the value in the same way in the project update right side. task-3996848 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170266
### Steps to reproduce: - Enable workorders in the settings - Create a BOM for a product P with an operation: - OP1: Assembly line 1, duration 10 minutes - Create and confirm an MO for 5 units of P - Set a producing quantity of 2 - Validate the MO and create a back order ### Issues: On each of the operations of the MO: 1) The quantity displayed is 0 2) The expected duration is the expected duration corresponding to the full initial demand e.g. 50 minutes Note: Issues 1 is pre
Original PR description
### Steps to reproduce: - Enable workorders in the settings - Create a BOM for a product P with an operation: - OP1: Assembly line 1, duration 10 minutes - Create and confirm an MO for 5 units of P -…
### Steps to reproduce: - Enable workorders in the settings - Create a BOM for a product P with an operation: - OP1: Assembly line 1, duration 10 minutes - Create and confirm an MO for 5 units of P - Set a producing quantity of 2 - Validate the MO and create a back order ### Issues: On each of the operations of the MO: 1) The quantity displayed is 0 2) The expected duration is the expected duration corresponding to the full initial demand e.g. 50 minutes Note: Issues 1 is present even if the produced qty match the full demand of the MO. ### Cause of the issues: 1) The quantity displayed on the operations is the 'qty_remaining' independantly of the state of the MO. However, once the MO is done, this qty is set to 0 because the product have been produced. 2) The expected duration is a computed field that is not updated once the opeartion is done: https://github.com/odoo/odoo/blob/45154cfdb044aea85ad72bb36348af7b77afd844/addons/mrp/models/mrp_workorder.py#L329-L333 However, finishing the operation will change the state to 'done' before the MO is backordered and the `qty_production` updated. In addition, the `_get_duration_expected` relied solely on the qty_production rather than also relying on the actual 'qty_produced': https://github.com/odoo/odoo/blob/45154cfdb044aea85ad72bb36348af7b77afd844/addons/mrp/models/mrp_workorder.py#L786 ### Fix: 1) Since we can not show different columns for each operation depending on their state, we rely on the state of the MO to determine which qty is the most relevant: the qty_remaining or the qty_produced 2) We update the expected duration depending on the qty_produced in case it was not manually set (which can be determined by comparing its current value with the expected value before the workorder is set as done) opw-3873108 opw-4010550 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178094 Forward-Port-Of: odoo/odoo#171771
When importing a UBL file, we get an error `SyntaxError: prefix 'cac' not found in prefix map` When importing a UBL file Odoo expects the UBL specific namespaces to be in the root element of the file. This is not always the case as these namespaces could exist in every element in the file. When a file is formatted this way, Odoo cannot extract the necessary data from it because it is missing the necessary namespaces. We fix it by using the ubl namespace as nsmap (see https://github.com/o
Original PR description
When importing a UBL file, we get an error `SyntaxError: prefix 'cac' not found in prefix map` When importing a UBL file Odoo expects the UBL specific namespaces to be in the root element of the file. This is not always the case as these namespaces could exist in every element in the file. When a file is formatted this way, Odoo cannot extract the necessary data from it because it is missing the necessary namespaces. We fix it by using the ubl namespace as nsmap (see https://github.com/odoo-dev/odoo/commit/1e24b151c6ad0023769b5a561690cb62bcda1d8a) opw-4142421 Forward-Port-Of: odoo/odoo#178547
Have 1000 drodowns to setup. Setup one of them will trigger the event state-changed and the dropdowns already setuped will react to that event. In the end, DropdownNestingState.handleChange will be called (999 * 1000) / 2 = 499500 that means quadraticaly with the number of dropdowns. Here we avoid to trigger that event when setuping a closed dropdown. This problem was originaly observed in a pivot view with many headers. Forward-Port-Of: odoo/odoo#179367
Original PR description
Have 1000 drodowns to setup. Setup one of them will trigger the event state-changed and the dropdowns already setuped will react to that event. In the end, DropdownNestingState.handleChange will be called (999 * 1000) / 2 = 499500 that means quadraticaly with the number of dropdowns. Here we avoid to trigger that event when setuping a closed dropdown. This problem was originaly observed in a pivot view with many headers. Forward-Port-Of: odoo/odoo#179367
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version. Stack Trace: ``` ValueError: Invalid version '17.0.1.0.0'. Modules should have a version in format `x.y`, `x.y.z`, `saas~17.2.x.y` or `saas~17.2.x.y.z`. File "addons/base_import_module/models/ir_module.py", line 253, in _import_zipfile self.sudo()._import_module(mod_name, path, force=force, with_demo=with_demo) File "addons/base_import_module/models/ir_mo
Original PR description
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version. Stack Trace: ``` ValueError: Invalid version '17.0.1.0.0'. Modules should…
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version.
Stack Trace:
```
ValueError: Invalid version '17.0.1.0.0'. Modules should have a version in format `x.y`, `x.y.z`, `saas~17.2.x.y` or `saas~17.2.x.y.z`.
File "addons/base_import_module/models/ir_module.py", line 253, in _import_zipfile
self.sudo()._import_module(mod_name, path, force=force, with_demo=with_demo)
File "addons/base_import_module/models/ir_module.py", line 81, in _import_module
values['latest_version'] = adapt_version(terp['version'])
File "odoo/modules/module.py", line 423, in adapt_version
raise ValueError(f"Invalid version {base_version!r}. Modules should have a version in format `x.y`, `x.y.z`,"
```
The error was caught on log because at [1] `_logger.exception()` was used, and this log error was not
useful because after the printing, the log `UserError` was raised, which shows the user what's wrong with its custom module.
This commit removes the logger exception because the `UserError` shows
what is wrong with the custom modules.
[1]-https://github.com/odoo/odoo/blob/b95edd874ce904ef231c295790a003992db002e3/addons/base_import_module/models/ir_module.py#L255-L258
sentry-4931285432
Forward-Port-Of: odoo/odoo#179185
Forward-Port-Of: odoo/odoo#160274When exporting GL in datev format, the receivable/payable accounts were not well formatted. Steps: - duplicate the Receivable Account (A) - create a customer C with receivable set as A - create and confirm an invoice for C - go to GL and export datev file -> column konto is account code of A, it should be 1000000 + C.id, according to datev (starting by 1 for customers and 7 for Vendors) Before this commit, we were making the distinction between the customers that had the "original" rece
Original PR description
When exporting GL in datev format, the receivable/payable accounts were not well formatted. Steps: - duplicate the Receivable Account (A) - create a customer C with receivable set as A - create and confirm an invoice for C - go to GL and export datev file -> column konto is account code of A, it should be 1000000 + C.id, according to datev (starting by 1 for customers and 7 for Vendors) Before this commit, we were making the distinction between the customers that had the "original" receivable account and the others, and we were displaying the account code in the second case. It should be the datev format in any case. opw-4117993 Forward-Port-Of: odoo/enterprise#69573
Problem: When a model is selected that the user doesn't have access to, a traceback is shown instead of a clear error message. Steps to reproduce: - Install Data Cleaning. - Go to Data Cleaning > Configuration > Duplication. - In the Model field, select "Account Chart Template". - A traceback occurs. opw-4113923 Forward-Port-Of: odoo/enterprise#68634
Original PR description
Problem: When a model is selected that the user doesn't have access to, a traceback is shown instead of a clear error message. Steps to reproduce: - Install Data Cleaning. - Go to Data Cleaning > Configuration > Duplication. - In the Model field, select "Account Chart Template". - A traceback occurs. opw-4113923 Forward-Port-Of: odoo/enterprise#68634
Steps to reproduce ================== - Open studio - Edit any report - Make some changes - Click on discard - Click on cancel => UncaughtPromiseError Cause of the issue ================== When clicking on cancel, the promise is rejected https://github.com/odoo/odoo/blob/1ffcea337ba463c383483ca53ff57aa6b725b5a2/addons/web_editor/static/src/js/wysiwyg/wysiwyg.js#L1112 Solution ======== Instead of rejecting the promise, resolve it with the confirmation status opw-414
Original PR description
Steps to reproduce ================== - Open studio - Edit any report - Make some changes - Click on discard - Click on cancel => UncaughtPromiseError Cause of the issue ================== When clicking on cancel, the promise is rejected https://github.com/odoo/odoo/blob/1ffcea337ba463c383483ca53ff57aa6b725b5a2/addons/web_editor/static/src/js/wysiwyg/wysiwyg.js#L1112 Solution ======== Instead of rejecting the promise, resolve it with the confirmation status opw-4141192 Forward-Port-Of: odoo/enterprise#69588 Forward-Port-Of: odoo/enterprise#69127
Note that the Swiss payroll modules haven't been translated into any other language than French so far, so that's why only the fr.po is fw-ported. Forward-Port-Of: odoo/enterprise#69630
Original PR description
Note that the Swiss payroll modules haven't been translated into any other language than French so far, so that's why only the fr.po is fw-ported. Forward-Port-Of: odoo/enterprise#69630
Steps to reproduce ================== - Open inventory > Reporting > Valuation - Open studio - Select a column - Click on "Conditionnal" next to "Invisible", "Required" or "Readonly" => crash Cause of the issue ================== Fields declared inside a groupby node are not part of the main model ```xml <groupby name="product_id"> <field name="cost_method" invisible="1" /> <field name="quantity_svl" invisible="1" /> <button name="action_revaluation" icon="fa-
Original PR description
Steps to reproduce
==================
- Open inventory > Reporting > Valuation
- Open studio
- Select a column
- Click on "Conditionnal" next to "Invisible", "Required" or "Readonly"
=> crash
Cause of the issue
==================
Fields declared inside a groupby node are not part of the main model
```xml
<groupby name="product_id">
<field name="cost_method" invisible="1" />
<field name="quantity_svl" invisible="1" />
<button name="action_revaluation" icon="fa-plus" title="Add Manual Valuation" type="object" invisible="cost_method == 'standard' or quantity_svl <= 0" />
</groupby>
```
opw-4147138
Forward-Port-Of: odoo/enterprise#69587
Forward-Port-Of: odoo/enterprise#69369Added `pos_iot` module icon. Forward-Port-Of: odoo/enterprise#69329 Forward-Port-Of: odoo/enterprise#69289
Original PR description
Added `pos_iot` module icon. Forward-Port-Of: odoo/enterprise#69329 Forward-Port-Of: odoo/enterprise#69289
**[FIX] documents: skip spreadsheets while toggling preview in FileViewer** Issue: - preview any document that can be previewed. - toggle the preview to make the FileViewer preview a spreadsheet. - as the spreadsheet lacks a preview, a blank preview is seen when the FileViewer lands on the spreadsheet. Reason: - while preparing the `documentsRecords` there is actually a filter present to filter out only previewable records. please refer --- https://github.com/odoo/enterprise/
Original PR description
**[FIX] documents: skip spreadsheets while toggling preview in FileViewer** Issue: - preview any document that can be previewed. - toggle the preview to make the FileViewer preview a spreadsheet. -…
**[FIX] documents: skip spreadsheets while toggling preview in FileViewer** Issue: - preview any document that can be previewed. - toggle the preview to make the FileViewer preview a spreadsheet. - as the spreadsheet lacks a preview, a blank preview is seen when the FileViewer lands on the spreadsheet. Reason: - while preparing the `documentsRecords` there is actually a filter present to filter out only previewable records. please refer --- https://github.com/odoo/enterprise/blob/17.0/documents/static/src/views/hooks.js#L311 - but for some reason the function `[isRecordPreviewable]` is not passed as a parameter from neither the `DocumentsKanbanController` nor the `DocumentsListController` and as a result, rendered the `.filter()` useless. Fix: - We migrate the `isRecordPreviewable()` method to the `DocumentsSpreadsheetControllerMixin` so that it overrides the newly created `isRecordPreviewable()` method in the `DocumentsKanbanController`, which is then accessed by the `.filter()` mentioned above. Task-4029257 Forward-Port-Of: odoo/enterprise#69035 Forward-Port-Of: odoo/enterprise#66248
Steps to reproduce: ------------------- - create a storable product tracked by serial number; - create a serial number for this product; - add 1 quantity on hand for it; - create a rental order with the product; - add the created serial number in "Reserved lot"; - confirm and pickup; - create an other rental order; - add the product and the same "Reserved lot"; Issue: ------ There is no warning even if the serial number of the product is already out of stock. Solution: --------
Original PR description
Steps to reproduce: ------------------- - create a storable product tracked by serial number; - create a serial number for this product; - add 1 quantity on hand for it; - create a rental order with the product; - add the created serial number in "Reserved lot"; - confirm and pickup; - create an other rental order; - add the product and the same "Reserved lot"; Issue: ------ There is no warning even if the serial number of the product is already out of stock. Solution: --------- Add a check when the `reserved_lot_ids` field is modified using an onchange method. opw-3839116 Forward-Port-Of: odoo/enterprise#69590 Forward-Port-Of: odoo/enterprise#60597
We are currently using websockets for every report action. We will now use longpolling first, then websocket if it fails. It will help reduce the amount of websockets communicating with Odoo. Task: 4106745 Forward-Port-Of: odoo/enterprise#69439 Forward-Port-Of: odoo/enterprise#68325
Original PR description
We are currently using websockets for every report action. We will now use longpolling first, then websocket if it fails. It will help reduce the amount of websockets communicating with Odoo. Task: 4106745 Forward-Port-Of: odoo/enterprise#69439 Forward-Port-Of: odoo/enterprise#68325
**Version**: 17, master **Description of the issue/feature this PR addresses**: It is necessary to restrict the fields lenght that are used to create Renewal Request to argentinean goverment. For example: It is received an error and not downloaded "Renewal Request" file if the company name lenght has more than 64 characters or if the company has a Contact with state name or city name lenght more than 128 characters. **Video showing how to replicate the error**: https://drive.google.
Original PR description
**Version**: 17, master **Description of the issue/feature this PR addresses**: It is necessary to restrict the fields lenght that are used to create Renewal Request to argentinean goverment. For…
**Version**: 17, master **Description of the issue/feature this PR addresses**: It is necessary to restrict the fields lenght that are used to create Renewal Request to argentinean goverment. For example: It is received an error and not downloaded "Renewal Request" file if the company name lenght has more than 64 characters or if the company has a Contact with state name or city name lenght more than 128 characters. **Video showing how to replicate the error**: https://drive.google.com/file/d/1JB39Njjfpf9nJExyixaBLSvcL19Ig49X/view **Steps to reproduce**: 1) Log in with admin on runbot odoo enterprise 17 instance and install l10n_ar_edi (Argentinean Electronic Invoicing) module. 2) Take position on company "Responsable Inscripto". 3) Change company name to a name with lenght more than 64 characters. 4) Go to "Accounting / Configuration / Settings" and click on "Generate Renewal Request" on "Argentinean Localization" section. It will be received this message: _"Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application."_ **Current behavior before PR**: It is received an error and not downloaded "Renewal Request" file if the company name lenght has more than 64 characters or if the company has a Contact with state name or city name lenght more than 128 characters. **Desired behavior after PR is merged**: It is downloaded "Renewal Request" file if the company name lenght has more than 64 characters or if the company has a Contact with state name or city name lenght more than 128 characters. _Ticket Adhoc side_: 78650 _Task latam_: 1246 Forward-Port-Of: odoo/enterprise#68264
Current behaviour: --- When you create a campaign, if you add more activity (56) than the default pager limit (40) The next pager page will be empty (instead of showing the remaining 16 activities) Steps to reproduce: --- 1. Go to Marketing Automation 2. Create a campaign 3. Create more than 40 activities 4. Alternate parents/child when creating 5. The pager will appear, with at least 2 pages 6. Go to the second page 7. Nothing displayed NB: When inputting the number of activitie
Original PR description
Current behaviour: --- When you create a campaign, if you add more activity (56) than the default pager limit (40) The next pager page will be empty (instead of showing the remaining 16 activities)…
Current behaviour: --- When you create a campaign, if you add more activity (56) than the default pager limit (40) The next pager page will be empty (instead of showing the remaining 16 activities) Steps to reproduce: --- 1. Go to Marketing Automation 2. Create a campaign 3. Create more than 40 activities 4. Alternate parents/child when creating 5. The pager will appear, with at least 2 pages 6. Go to the second page 7. Nothing displayed NB: When inputting the number of activities in the pager, everything is rendered fine. Cause of the issue: --- To be displayed, the activities are hierarchised, by finding child and parents (`_getSortedRecordsByHierarchy`) However this system works great when all the records are given. Using a pager, some records are not used in the hierarchy, causing the outputted list to be incomplete. (ie if an activity A is in the first 40 and the child in the last 16, it will not be rendered correctly) Fix: --- Disabling the pager by setting a higher limit opw-4006610 Forward-Port-Of: odoo/enterprise#69154 Forward-Port-Of: odoo/enterprise#67979
Draft registrations should not receive any periodic notification until they confirm they will be attending. This avoids awkward situations where the reminder contains a ticket but their ticket isn't validated yet. task-4104891 Forward-Port-Of: odoo/enterprise#69529
Original PR description
Draft registrations should not receive any periodic notification until they confirm they will be attending. This avoids awkward situations where the reminder contains a ticket but their ticket isn't validated yet. task-4104891 Forward-Port-Of: odoo/enterprise#69529
Steps to reproduce ================== - Install project,web_studio - Go to project - Open studio > Automations - Create a new rule - Click on the top left icon to go back to the home menu - Customizations > Export - Go back to project and delete the newly create automation - Click on the top left icon to go back to the home menu - Import > Upload the generated zip => It fails because a few required fields are missing opw-4073631 Forward-Port-Of: odoo/enterprise#69427
Original PR description
Steps to reproduce ================== - Install project,web_studio - Go to project - Open studio > Automations - Create a new rule - Click on the top left icon to go back to the home menu - Customizations > Export - Go back to project and delete the newly create automation - Click on the top left icon to go back to the home menu - Import > Upload the generated zip => It fails because a few required fields are missing opw-4073631 Forward-Port-Of: odoo/enterprise#69427
Steps to reproduce: - Have a FEC file (see ticket) - Import it on a brand new db Issue: Crash. We try to create account move line with an xml id that does not exist because we didn't create the partner associated to the correct ref The second issue is that we will link the move to the wrong customer since the second one is not created Cause: The first issue is caused because we bypass the creation of the second partner with the same name "PARTNER 01" but different ref "PARTNER02" `
Original PR description
Steps to reproduce: - Have a FEC file (see ticket) - Import it on a brand new db Issue: Crash. We try to create account move line with an xml id that does not exist because we didn't create the partner associated to the correct ref The second issue is that we will link the move to the wrong customer since the second one is not created Cause: The first issue is caused because we bypass the creation of the second partner with the same name "PARTNER 01" but different ref "PARTNER02" `ValueError: External ID not found in the system: l10n_fr_fec_import.89_partner_PARTNER02` The reason is, when creating the move line, we assign the `partner_id` with an xml_id based on the partner_ref https://github.com/odoo/enterprise/blob/ae3820059f6ff46b0dbcd64eabb2aae5caa98e18/l10n_fr_fec_import/wizard/import_wizard.py#L474-L490 Which of course does not exist. opw-3932234 Forward-Port-Of: odoo/enterprise#69303 Forward-Port-Of: odoo/enterprise#69148
Versions: ----------- 15.0 Steps to Reproduce -------------- - Install industry_fsm_sale - Create a new user with these access rights. Project -> user Field Service -> user Timesheets -> User: own timesheets only - Create a new task, and assign it to the created user. - Login as user - Open the task Issue ---------- - The 'New quotation' button is visible even user has no sales access rights. Cause --------- - The user is getting access to the button from the field service g
Original PR description
Versions: ----------- 15.0 Steps to Reproduce -------------- - Install industry_fsm_sale - Create a new user with these access rights. Project -> user Field Service -> user Timesheets -> User: own timesheets only - Create a new task, and assign it to the created user. - Login as user - Open the task Issue ---------- - The 'New quotation' button is visible even user has no sales access rights. Cause --------- - The user is getting access to the button from the field service group. Fix --------- - We remove the group from the button. - We only show 'New Quotation' button if user have sales access rights. task-3827319 Forward-Port-Of: odoo/enterprise#69461 Forward-Port-Of: odoo/enterprise#60536
When validating a payment for a subscription and the sale's setting `sale.automatic_invoice` is enabled, the invoice is send twice to the customer on subscription renewal; first with the normal template then a second time with the subscription specific template. To reproduce: - As Administrator: - Enable the "Automatic Invoice" option in the setting - Install/enable the `demo` payment provider and method - Log-in as `portal` user - Go the /shop and add the `Office Cleaning Service
Original PR description
When validating a payment for a subscription and the sale's setting `sale.automatic_invoice` is enabled, the invoice is send twice to the customer on subscription renewal; first with the normal…
When validating a payment for a subscription and the sale's setting `sale.automatic_invoice` is enabled, the invoice is send twice to the customer on subscription renewal; first with the normal template then a second time with the subscription specific template. To reproduce: - As Administrator: - Enable the "Automatic Invoice" option in the setting - Install/enable the `demo` payment provider and method - Log-in as `portal` user - Go the /shop and add the `Office Cleaning Service (SUB)` to you cart - Pay your order using the `Demo` payment method => The invoice is send once - Go to your subscription (/my/subscriptions) - Click on your new subscription - Scroll to the `Anticipate payment` section and pay for it (again choose the `Demo` payment method) - You get back the the subscription page, click on the last invoice (2nd invoice you created) => Scroll to the history section and see that the invoice is sent twice This commit ensure we're only sending invoice with the subscription specific template on renewal. OPW-3900040 Forward-Port-Of: odoo/enterprise#61838
**Steps to reproduce:** - Install l10n_mx_reports - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Download "COA SAT (XML)" **Issue:** The certificate is not present in the XML. **Solution:** Add the EDI certificate of the company in the "COA SAT (XML)" as it was done in previous versions and as it is also done in the "SAT (XML)". opw-4076158 Forward-Port-Of: odoo/enterprise#69593 Forward-Port-Of: odoo/e
Original PR description
**Steps to reproduce:** - Install l10n_mx_reports - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Download "COA SAT (XML)" **Issue:** The certificate is not present in the XML. **Solution:** Add the EDI certificate of the company in the "COA SAT (XML)" as it was done in previous versions and as it is also done in the "SAT (XML)". opw-4076158 Forward-Port-Of: odoo/enterprise#69593 Forward-Port-Of: odoo/enterprise#68887
… entries Have a studio approvals with minimum 3 rules: - 2 on level 1 - 1 on level 2 Before this commit, if one of level 1 was refused, when approving the other one, the level 2 rule created an activity for the responsible. As we don't want a level to be notified if the lower level is not fully approved, there was a bug. After this commit, we only trigger activity notification on higher level rules if the below level has been fully approved. Forward-Port-Of: odoo/enterprise#69499
Original PR description
… entries Have a studio approvals with minimum 3 rules: - 2 on level 1 - 1 on level 2 Before this commit, if one of level 1 was refused, when approving the other one, the level 2 rule created an activity for the responsible. As we don't want a level to be notified if the lower level is not fully approved, there was a bug. After this commit, we only trigger activity notification on higher level rules if the below level has been fully approved. Forward-Port-Of: odoo/enterprise#69499
Backport of https://github.com/odoo/enterprise/commit/d9b06557baf692f707ff8b75106df6b67c6bc523 opw-3941552 Forward-Port-Of: odoo/enterprise#64455
Original PR description
Backport of https://github.com/odoo/enterprise/commit/d9b06557baf692f707ff8b75106df6b67c6bc523 opw-3941552 Forward-Port-Of: odoo/enterprise#64455
In the community counterpart of this PR, a debounce is added to the addition of bus channels in order to batch them as much as possible. The room module uses the `waitForSubscribe` bus helper but never awaits it which trigger errors in other tests. This PR fixes this issue. backport of https://github.com/odoo/enterprise/pull/68099 community: https://github.com/odoo/odoo/pull/176580 Forward-Port-Of: odoo/enterprise#69441 Forward-Port-Of: odoo/enterprise#68361
Original PR description
In the community counterpart of this PR, a debounce is added to the addition of bus channels in order to batch them as much as possible. The room module uses the `waitForSubscribe` bus helper but never awaits it which trigger errors in other tests. This PR fixes this issue. backport of https://github.com/odoo/enterprise/pull/68099 community: https://github.com/odoo/odoo/pull/176580 Forward-Port-Of: odoo/enterprise#69441 Forward-Port-Of: odoo/enterprise#68361