Tuesday, December 5, 2023
28 changes · 17.0
Enhancements to existing features
The restaurant point of sale order button now shows category counts in a clearer format. This makes it easier for staff to quickly understand order contents by category during service, improving usability with minimal workflow change.
Original PR description
Change the category count display in the order button. From:  To: 
Resolved issues and error corrections
Users can now open the Bill of Materials overview for consumable products without encountering an error. This prevents an interruption in manufacturing workflows when reviewing BoM details for products that do not track available quantities in the same way as stocked items.
Original PR description
Steps to reproduce the bug:
- Create a consumable product:
- Create a BoM
- Attempt to access the BoM overview
Problem:
An error is triggered:
"Caused by: TypeError: value.toFixed is not a function"
This error occurs when attempting to format the float value of the
available quantity for a consumable product, where the function is
called with `value: False`:
https://github.com/odoo/odoo/blob/054ca0a19aaf297f420a1b478b93ae26f1b943b8/addons/web/static/src/core/utils/numbers.js#L192
opw-[3622251](https://www.odoo.com/web#id=3622251&view_type=form&model=project.task)Miscellaneous changes
-16.0 ----- step to produce : --------- - go to project - click on any project in the Kanban view - click on the quick create button - notice caret at assignees dropdown issue: ----- - at the assignees dropdown the caret position is at the far right and not aligned with the discard/trash button Cause: ------ - changes which happened in task-2944742 added left margin for user_ids field , which then moved the position of caret. Solution: ----- - changed css to just apply th
Original PR description
-16.0 ----- step to produce : --------- - go to project - click on any project in the Kanban view - click on the quick create button - notice caret at assignees dropdown issue: ----- - at the assignees dropdown the caret position is at the far right and not aligned with the discard/trash button Cause: ------ - changes which happened in task-2944742 added left margin for user_ids field , which then moved the position of caret. Solution: ----- - changed css to just apply the margin at bottom right for M2M avatar at kanban and stopped it from affecting user_ids field in quick create task. task-3506482 Forward-Port-Of: odoo/odoo#144842 Forward-Port-Of: odoo/odoo#141191
This fixes a timing issue that could interrupt creating a voice message in chat. Users should see more consistent behavior when recording or sending voice messages, reducing occasional failures or flakiness.
Original PR description
runbot-46626
This fix makes an automated eLearning course publishing test wait until PDF content has fully loaded before checking it. It reduces random test failures, helping keep the website slides module's quality checks stable without changing user-facing features.
Original PR description
In v17.0, the test TestUiPublisher.test_course_publisher_elearning_manager of website_slides fails randomly at the step: "eLearning: check uploaded pdf presence and perform comparison" with the…
In v17.0, the test TestUiPublisher.test_course_publisher_elearning_manager of website_slides fails randomly at the step: "eLearning: check uploaded pdf presence and perform comparison" with the error: "Cannot read properties of null (reading 'getAttribute')"
How to reproduce it ?
Locally, TestUiPublisher.test_course_publisher_elearning_manager of website_slides runs without errors but when executing it in the browser we get the same error as the runbot systematically:
– Install website_slides
– Go to shell mode and execute the setup of the test – (Backup DB if you want to run the test multiple time) – Launch in normal mode and connect with demo user – Go to URL: /web?debug=assets%2Ctests
– Type “odoo.startTour('course_publisher_standard');” in the console – An error happens at step “eLearning: check uploaded pdf presence and perform comparison”: Cannot read properties of null (reading 'getAttribute') (to avoid to wait too long, you can shorten the test by keeping mostly “addPdfToSection”)
The problem occurs because the rendering of the iframe o_wslides_iframe_viewer is not always completed when the check is triggered. We solve this problem by waiting for the rendering to finish before performing the test (using "await contains"). For safety, we do the same for another check as this might cause a similar problem in the future.
Although the test has been introduced in 16.2 (see odoo/odoo#117293) but the error happens only in 17.0 (tested only in 16.4 the way described above), we publish only the correction in 17.0 and further to avoid different correction in various version.
Task-3623736This fixes an error that occurred when users selected more than one trigger field in an automation rule. The change ensures extra field information is only calculated when it is actually needed, preventing crashes and making automation setup more reliable.
Original PR description
**Before this commit:** If you select more than one trigger field on base.automation: ``` File "/home/odoo/src/odoo/17.0/addons/base_automation/models/base_automation.py", line 302, in…
**Before this commit:**
If you select more than one trigger field on base.automation:
```
File "/home/odoo/src/odoo/17.0/addons/base_automation/models/base_automation.py", line 302, in _compute_trg_field_ref__model_and_display_names relation = automation.trigger_field_ids.relation
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1146, in __get__ record.ensure_one()
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 5819, in ensure_one raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: ir.model.fields(<NewId origin=3241>, <NewId origin=3238>)
```
**After this commit:**
`trg_field_ref_model_name` and `trg_field_ref_display_name` are only used for the `base_automation_trigger_reference` widget, which is only used when `trigger in ['on_stage_set', 'on_tag_set']`. We only need to compute them in this case, which will be OK since they use only one trigger field.
opw-3607314
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes minor point of sale issues that could occur when no order line was selected. It also improves receipt printing support for certain local requirements by including the price before discount.
Original PR description
This PR fixes small issues when there is not selectedLine in some cases. We also add the price_without_discount for the printing because of some localisation issues. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The control panel navigation arrows now stretch to match the full height of their container. This fixes a small visual inconsistency and makes the interface look more polished and aligned for users.
Original PR description
This commit allows the navigation inside the Control Panel to fill all the container height. Prior to this commit, the navigation arrows inside the control panel were not taking the whole height of the container, which would cause a weird visual render where everything would have exactly the same height except these elements. To fix the issue, we adapt some of the flex properties used in the layout, ensuring everything is well aligned. task-3580216
Guest visitors on public WhatsApp pages now have their last seen message saved correctly. This prevents the new message marker from reappearing unnecessarily and reduces repeated background updates when guests reopen the page.
Original PR description
Since 17.0, the new message separator is displayed for guests. The set_last_seen_message rpc is also triggered in order to save this information on the server side. However, the _channel_seen method does not handle guests as it should. As a consequence, the new message separator is always displayed and the rpc call is always done when a guest loads the public page. This PR enable guest support for this feature. task-3603603 community: https://github.com/odoo/odoo/pull/142546
When we create public holidays, we can create global ones that will apply to all 'Working Hours' of the company. When you create such a public holiday, it is displayed as a an unusual day for all employees of all companies that have a contract. The issue comes from the the fact that we use a sudo to get the contract of the employees and then we call '_get_unusual_day' on the Working Hours of the contract in sudo. So when we catch the global ones (wihtout Working Hours) it takes them from a
Original PR description
When we create public holidays, we can create global ones that will apply to all 'Working Hours' of the company. When you create such a public holiday, it is displayed as a an unusual day for all employees of all companies that have a contract. The issue comes from the the fact that we use a sudo to get the contract of the employees and then we call '_get_unusual_day' on the Working Hours of the contract in sudo. So when we catch the global ones (wihtout Working Hours) it takes them from all companies as we are in sudo and it won't apply the record rule. 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#144122
When a user creates a journal entry in accounting and the company is empty or not selected in that journal entry, an error is generated. step to reproduce - - install the `Invoicing` & `Inventory`. - open the `Invoicing`. - create New. - open `other info` note page > company (compnay_id) must be empty. - the error will be generated. sentry traceback- ```KeyError: <NewId origin=15> File "odoo/api.py", line 965, in get cache_value = field_cache[record._ids[0]] CacheMiss: '
Original PR description
When a user creates a journal entry in accounting and the company is empty or not selected in that journal entry, an error is generated. step to reproduce - - install the `Invoicing` & `Inventory`. -…
When a user creates a journal entry in accounting and the company is empty or
not selected in that journal entry, an error is generated.
step to reproduce -
- install the `Invoicing` & `Inventory`.
- open the `Invoicing`.
- create New.
- open `other info` note page > company (compnay_id) must be empty.
- the error will be generated.
sentry traceback-
```KeyError: <NewId origin=15>
File "odoo/api.py", line 965, in get
cache_value = field_cache[record._ids[0]]
CacheMiss: 'account.move(<NewId origin=15>,).tax_lock_date_message'
File "odoo/fields.py", line 1160, in __get__
value = env.cache.get(record, self)
File "odoo/api.py", line 972, in get
raise CacheMiss(record, field)
ValueError: not enough values to unpack (expected 1, got 0)
File "odoo/models.py", line 5457, in ensure_one
_id, = self._ids
ValueError: Expected singleton: res.company()
File "odoo/http.py", line 2139, in __call__
response = request._serve_db()
File "odoo/http.py", line 1715, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1742, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1943, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 191, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 717, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 30, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 26, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 466, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "addons/account/models/account_move.py", line 2564, in onchange
return super().onchange(values, field_name, field_onchange)
File "odoo/models.py", line 6781, in onchange
todo = [
File "odoo/models.py", line 6784, in <listcomp>
if name not in done and snapshot0.has_changed(name)
File "odoo/models.py", line 6584, in has_changed
return self[name] != record[name]
File "odoo/models.py", line 6211, in __getitem__
return self._fields[key].__get__(self, type(self))
File "odoo/fields.py", line 1211, in __get__
self.compute_value(recs)
File "odoo/fields.py", line 1389, in compute_value
records._compute_field_value(self)
File "addons/mail/models/mail_thread.py", line 395, in _compute_field_value
return super()._compute_field_value(field)
File "odoo/models.py", line 4553, in _compute_field_value
fields.determine(field.compute, self)
File "odoo/fields.py", line 101, in determine
return needle(*args)
File "addons/account/models/account_move.py", line 1421, in _compute_tax_lock_date_message
move.tax_lock_date_message = move._get_lock_date_message(accounting_date, affects_tax_report)
File "addons/account/models/account_move.py", line 4307, in _get_lock_date_message
lock_dates = self._get_violated_lock_dates(invoice_date, has_tax)
File "addons/account/models/account_move.py", line 4298, in _get_violated_lock_dates
return self.company_id._get_violated_lock_dates(invoice_date, has_tax)
File "addons/account/models/company.py", line 358, in _get_violated_lock_dates
self.ensure_one()
File "odoo/models.py", line 5460, in ensure_one
raise ValueError("Expected singleton: %s" % self)
```
If the user attempts to remove the company after this commit, they get a
validation error.
sentry-4558397052
Forward-Port-Of: odoo/odoo#144775
Forward-Port-Of: odoo/odoo#139328Current behavior before PR: After clicking one button and then clicking another, the link label didn't update on the link tools. Desired behavior after PR is merged: The link label now updates when clicking from one button to another. task-3514717 Forward-Port-Of: odoo/odoo#138770
Original PR description
Current behavior before PR: After clicking one button and then clicking another, the link label didn't update on the link tools. Desired behavior after PR is merged: The link label now updates when clicking from one button to another. task-3514717 Forward-Port-Of: odoo/odoo#138770
Before this commit ================ Before only error message was displayed, but not the partner's name for which it was causing error After this commit =============== After changes the partner's name is displayed along with the error message task-3293271 Forward-Port-Of: odoo/odoo#120209
Original PR description
Before this commit ================ Before only error message was displayed, but not the partner's name for which it was causing error After this commit =============== After changes the partner's name is displayed along with the error message task-3293271 Forward-Port-Of: odoo/odoo#120209
Before this commit, when restarting the synchronization, recurrence outliers were blocking the synchronization restarting because they were being considered as complete recurrences, although they must be treated as single events. Additionaly, when resetting the Outlook account, choosing to delete events in Odoo should not be allowed since recurrence outliers must be treated as single events. After this commit, this issue is now solved by adding the 'dont_notify' param in the context to skip t
Original PR description
Before this commit, when restarting the synchronization, recurrence outliers were blocking the synchronization restarting because they were being considered as complete recurrences, although they must be treated as single events. Additionaly, when resetting the Outlook account, choosing to delete events in Odoo should not be allowed since recurrence outliers must be treated as single events. After this commit, this issue is now solved by adding the 'dont_notify' param in the context to skip the validation of single events when restarting the sync. Additionaly, when resetting the Outlook account, the forbiddance of deleting events in Odoo is not a blocking point anymore. Task-id: 3617978 Forward-Port-Of: odoo/odoo#144320
## Issue When using the command palette to assign an user to a task, a "spinning wheel" animation may show up even when everything seems to have been loaded. ## Steps to reproduce - Install Project - For testing, add a `time.sleep(5)` in the `_name_search` of `'res.users'` to simulate a slow `name_search` (instead of populating). - Open your browser's networking tab. - Open a form view of a task, press Ctrl+K, Alt+I - Start typing an user name - Notice that all `name_search` requests a
Original PR description
## Issue When using the command palette to assign an user to a task, a "spinning wheel" animation may show up even when everything seems to have been loaded. ## Steps to reproduce - Install Project -…
## Issue When using the command palette to assign an user to a task, a "spinning wheel" animation may show up even when everything seems to have been loaded. ## Steps to reproduce - Install Project - For testing, add a `time.sleep(5)` in the `_name_search` of `'res.users'` to simulate a slow `name_search` (instead of populating). - Open your browser's networking tab. - Open a form view of a task, press Ctrl+K, Alt+I - Start typing an user name - Notice that all `name_search` requests are being processed, even if only the results of the last one are used. You may also notice the loading animation on the client. ## Cause When using the cmd palette, when typing an user name, we are sending RPC requests to the `name_search` of the `'res.users'` model. The issue is that the requests are not aborted when it is superseded by a new search value. This can lead to issues in a large database where short search strings matches too many records, therefor is generally slow. This can confuse the end user, as a "spinning wheel" can show up, but the result are already present (because a subsequent request gave back results faster than the previous request, which is often the case because a more elaborate search value matches less records, therefor is faster for the DB to process). This use case also hogs workers uselessly for results that are going to be ignored. ## Fix Store the last running RPC and abort it when making a subsequent call to it with new search values and the request hadn't complete. ## Affected versions 16.0 up to master = saas-17.1 ## Reference task-3532458 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144798 Forward-Port-Of: odoo/odoo#144617
Before this commit, when the link dialog was opened in order to edit an existing link, the label shown in the preview section was the link's URL instead of its label. This happened because `_adaptPreview` (called by `start` -> `_setUrl` -> `_onURLInput`) was called before the label input field was set (and an empty value defaults to the link's URL). task-3563608 Forward-Port-Of: odoo/odoo#140733
Original PR description
Before this commit, when the link dialog was opened in order to edit an existing link, the label shown in the preview section was the link's URL instead of its label. This happened because `_adaptPreview` (called by `start` -> `_setUrl` -> `_onURLInput`) was called before the label input field was set (and an empty value defaults to the link's URL). task-3563608 Forward-Port-Of: odoo/odoo#140733
**Current behavior before PR:** - When the table ui menu is visible then scrolling will make table ui menu scroll. - When table ui menu is visible and you try to select and delete table then table got delete but table ui menu is still visible. **Desired behavior after PR is merged:** - Now when you try to scroll when table ui menu borders are visible then it gets hidden. - When table ui menu is visible and you try to select and delete table then table got delete and table ui
Original PR description
**Current behavior before PR:** - When the table ui menu is visible then scrolling will make table ui menu scroll. - When table ui menu is visible and you try to select and delete table then table got delete but table ui menu is still visible. **Desired behavior after PR is merged:** - Now when you try to scroll when table ui menu borders are visible then it gets hidden. - When table ui menu is visible and you try to select and delete table then table got delete and table ui menu also gets hidden. task-3429097 Co-authored-by: Deependra Solanki (deso) deso@odoo.com --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#128966
The `noCheck` param of the `_computeSelectorFunctions` function should permit to ignore the (not)editable environment. However, since [this first commit] the `o_editable_media` class alter the behavior despite the `noCheck` param which is not what we want. Even worse, [this second commit] check the `o_not_editable` class and the contenteditable attribute despite the `noCheck` param. This commit fixes that by restoring the original behavior of the `noCheck` param. --- In the past, it
Original PR description
The `noCheck` param of the `_computeSelectorFunctions` function should permit to ignore the (not)editable environment. However, since [this first commit] the `o_editable_media` class alter the…
The `noCheck` param of the `_computeSelectorFunctions` function should permit to ignore the (not)editable environment. However, since [this first commit] the `o_editable_media` class alter the behavior despite the `noCheck` param which is not what we want. Even worse, [this second commit] check the `o_not_editable` class and the contenteditable attribute despite the `noCheck` param. This commit fixes that by restoring the original behavior of the `noCheck` param. --- In the past, it was possible to drop elements in non-editable areas. Commit [1] fixed the issue but then commit [2] added a solution to be able to edit a media element that is in a `o_not_editable` environment. Unfortunately, the solution makes it possible to drop elements next to the `o_editable_media` elements ignoring the editable context (ignoring the first fix). Steps to reproduce the issue: - Enter website edit mode - Drop a Team block in a page => The user is able to drop a "Text highlight" block next to the team member pictures. This commit - reverts the commit [1] because in the meantime, the commit [3] fixed the issue. - fixes the Team block issue. - fixes the filterFunc for the drop-in. - adds a test to ensure the issue doesn't come back. opw-3536227 [1]: https://github.com/odoo/odoo/commit/67924648676b37898aedd86bc32868299aee542c [2]: https://github.com/odoo/odoo/commit/580f1b77ce0b96b7efbf83a0ccdf6979bbf0e904 [3]: https://github.com/odoo/odoo/commit/ae7452f18dbd6ed56dbf883ae8495382b336aa78 [this first commit]: https://github.com/odoo/odoo/commit/580f1b77ce0b96b7efbf83a0ccdf6979bbf0e904 [this second commit]: https://github.com/odoo/odoo/commit/56e75ed063b0ae98b9824c0ba00633e529701242 Forward-Port-Of: odoo/odoo#144025 Forward-Port-Of: odoo/odoo#141962
Same idea as https://github.com/odoo/enterprise/pull/49291, the clipboard on safari needs to be treated asynchronously. Task: 3571908 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#142969
Original PR description
Same idea as https://github.com/odoo/enterprise/pull/49291, the clipboard on safari needs to be treated asynchronously. Task: 3571908 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#142969
## Steps to reproduce: 1. Create a BoM with a component of 1 quantity 2. Create a manufacturing order with this BoM 3. Set the quantity to produce to 5 and confirm 4. Set the producing quantity to 3.1 5. Set the quantity done for the raw material to 3.09 6. Mark the MO as done and create a backorder 7. Click 'Unreserve' on the backorder 8. 'It is not possible to unreserve more products of ...' ## Before this commit: `_compute_quantity` is called with the default rounding method, roun
Original PR description
## Steps to reproduce: 1. Create a BoM with a component of 1 quantity 2. Create a manufacturing order with this BoM 3. Set the quantity to produce to 5 and confirm 4. Set the producing quantity to 3.1 5. Set the quantity done for the raw material to 3.09 6. Mark the MO as done and create a backorder 7. Click 'Unreserve' on the backorder 8. 'It is not possible to unreserve more products of ...' ## Before this commit: `_compute_quantity` is called with the default rounding method, rounding quantity UP, which introduces reservation inconsistencies. ## After this commit: `_compute_quantity` rounds with the HALF-UP method, preventing rounding errors. Also, use the correct UoM in float comparisons. opw-3601737 Forward-Port-Of: odoo/odoo#144176
The field is editable in the list view but not in kanban view (mobile) Use the same condition for both view opw-3576279 Forward-Port-Of: odoo/odoo#143380
Original PR description
The field is editable in the list view but not in kanban view (mobile) Use the same condition for both view opw-3576279 Forward-Port-Of: odoo/odoo#143380
When trying to prepare account move line, we are unexpectedly browsing a record instead of the record's ID. This causes `psycopg2.ProgrammingError: can't adapt type 'stock.valuation.layer'` Step to reproduce: 1. Set up product - storable - Average cost - Automated Inventory Valuation - set a standard price e.g $27 2. Create a purchase order for 1 unit in another currency E.g Eur 3. Confirm the purchase order and validate the transfer. 4. Go on the transfer and cre
Original PR description
When trying to prepare account move line, we are unexpectedly browsing a record instead of the record's ID. This causes
`psycopg2.ProgrammingError: can't adapt type 'stock.valuation.layer'`
Step to reproduce:
1. Set up product
- storable
- Average cost
- Automated Inventory Valuation
- set a standard price e.g $27
2. Create a purchase order for 1 unit in another currency E.g Eur
3. Confirm the purchase order and validate the transfer.
4. Go on the transfer and create a return. Change the return quantity to be more than what received E.g 100
5. Process the return.
6. Go back to the purchase order and create a vendor bill
7. Now try to create a new purchase order and receive the item.
Fix:
pass in `vacuum_svl.id` instead of just `vacuum_svl` into `_prepare_account_move_line`
opw-3555146
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#139531### Steps - Create a ticket with a customer ( it will send the email) - Answer to the mail with Outlook Desktop( a multiple lines break) - Look at the response in the discuss frame. ### Issue In the frame there is much more lines break than in the original mail Cause: The format of outlook desktop mail before sanitizing looks like this ``` <div class="WordSection1"> <p class="MsoNormal">Test<o:p></o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal"><o:p> 
Original PR description
### Steps - Create a ticket with a customer ( it will send the email) - Answer to the mail with Outlook Desktop( a multiple lines break) - Look at the response in the discuss frame. ### Issue In the frame there is much more lines break than in the original mail Cause: The format of outlook desktop mail before sanitizing looks like this ``` <div class="WordSection1"> <p class="MsoNormal">Test<o:p></o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">Two break lines<o:p></o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <div> ``` So when parsing it transforms the ``<o:p></o:p>`` in ``<p></p>`` which adds more lines break when displaying. ### Solution Remove empty ``<o:...>`` and ``</o:...>`` which are specific to outlook desktop before sanitizing. opw-3089550 Forward-Port-Of: odoo/odoo#144770 Forward-Port-Of: odoo/odoo#140425
Controller /groups/<model(mail.group):group> is already in the sitemap, so it is useless to list all messages. It will explode the sitemap, for pages that don't need to be really indexed. What we want is the thread, not one page by message. And since no domain was set on domainConverter, the most of urls are just 404. e.g. groupA with msg1/msg2 and groupB by with msg3/msg4 will generate: groupA/msg1 groupA/msg2 groupA/msg3 groupA/msg4 groupB/msg1 groupB/msg2
Original PR description
Controller /groups/<model(mail.group):group> is already in the sitemap, so it is useless to list all messages. It will explode the sitemap, for pages that don't need to be really indexed. What we want is the thread, not one page by message.
And since no domain was set on domainConverter, the most of urls are just 404. e.g. groupA with msg1/msg2 and groupB by with msg3/msg4 will generate:
groupA/msg1
groupA/msg2
groupA/msg3
groupA/msg4
groupB/msg1
groupB/msg2
groupB/msg3
groupB/msg4
instead of
groupA/msg1
groupA/msg2
groupB/msg3
groupB/msg4
If we really wanted to index this route, then the domainConverter would have to be:
```py
'''/groups/<model("mail.group"):group>/<model("mail.group.message", "[('mail_group_id', '=', group.id)]"):message>''',
```
On our production, it removes around 90K entries in the sitemap ~40%
Forward-Port-Of: odoo/odoo#144511Reproduction: 1. Install note 2. Open an existing note and open it again in another tab 3. When you click in one tab, the cursor position in the other one is always one step behind Fix: separate the logic between collaboration and appliedCustomSelection and revert the calling of getCurrentCollaborativeSelection to the place after _computeHistorySelection Task-3221119 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo
Original PR description
Reproduction: 1. Install note 2. Open an existing note and open it again in another tab 3. When you click in one tab, the cursor position in the other one is always one step behind Fix: separate the logic between collaboration and appliedCustomSelection and revert the calling of getCurrentCollaborativeSelection to the place after _computeHistorySelection Task-3221119 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#131561
Steps to reproduce: - Open Sales App - Go to any quotation - Go to the products lines and change the name of the product to be long - Save the product and go back to the quotation - Now click on Other information, and then click again in Order Lines. Note this only happens in Safari, the behavior for other browsers like Chrome or Firefox is correct. The problem is that word-break property it seems to not be supported properly by safari. In this case we can use the word-wrap property in
Original PR description
Steps to reproduce: - Open Sales App - Go to any quotation - Go to the products lines and change the name of the product to be long - Save the product and go back to the quotation - Now click on Other information, and then click again in Order Lines. Note this only happens in Safari, the behavior for other browsers like Chrome or Firefox is correct. The problem is that word-break property it seems to not be supported properly by safari. In this case we can use the word-wrap property instead, with the same value break-word. ## Before:  ## After:  opw-3513128 Forward-Port-Of: odoo/odoo#142744
Steps to reproduce: ------------------- - create a promotion program with the type "Discount code"; - add a rule to trigger the promotion with the code "12345"; - add two rewards; - go to ecommerce and create a cart; - apply the promo code. Issue: ------ It is not possible to claim a reward. Cause: ------ When we apply the code "12345", we call the `pricelist` method, which will try to apply the code. If it's not a coupon and it's not nominative, we create a loyalty card (a coup
Original PR description
Steps to reproduce: ------------------- - create a promotion program with the type "Discount code"; - add a rule to trigger the promotion with the code "12345"; - add two rewards; - go to ecommerce…
Steps to reproduce: ------------------- - create a promotion program with the type "Discount code"; - add a rule to trigger the promotion with the code "12345"; - add two rewards; - go to ecommerce and create a cart; - apply the promo code. Issue: ------ It is not possible to claim a reward. Cause: ------ When we apply the code "12345", we call the `pricelist` method, which will try to apply the code. If it's not a coupon and it's not nominative, we create a loyalty card (a coupon) with a default code (for example: "044d-3364-42d0"). This previously created loyalty card is linked to the current sale order, which is only fair since we don't want to be able to apply it a second time. The two rewards are linked to the same coupon and therefore have the same code (which is right because we can apply only one of these rewards). This problem doesn't occur with a single reward, because when only one reward is detected, we automatically apply it when we call the `pricelist` method. In the case of two rewards, it is possible to select the reward. This will trigger the `claim_reward` method. In this method, if we use a coupon with a code (which is the case here, "044d-3364-42d0"), we call the `pricelist` method with this code. This will trigger an error, as the code is already in use with the loyalty card linked to the sale order. Solution: --------- When claiming a reward generated by a program of the `promo_code` type, i.e. in the case of more than a rewards, don't call the `pricelist` method (which triggers an error due to the code) but `_apply_reward`. This will apply the reward to the sale order. A redirect will be use which will remove all "claimable and showable rewards" from this program. If we want to re-trigger it via code "12345", this will no longer be possible. Note: ----- Modification of the view to distinguish between coupons and "Discount Code" programs. The current display suggests that rewards are coupons (with the same code) that we use, whereas they are rewards that we can claim. Furthermore, there's no description of the rewards. opw-3520137 Forward-Port-Of: odoo/odoo#143925 Forward-Port-Of: odoo/odoo#138906
### Steps to reproduce: 1. In the general settings, add the Arabic(العربية) language 2. Install the POS (point of sales) module 3. Go to the administrator's profile and change Preferences > Languages to Arabic(العربية) 4. Open a new shop/pos session 5. Add any product 6. Click on payment(دفعة) button 7. Choose the cash option under the payment method (طريقة الدفع) 8. Select a client (العميل) 9. Click on validate (تصديق) 10. Notice how the items format is incorrect, the quantity
Original PR description
### Steps to reproduce: 1. In the general settings, add the Arabic(العربية) language 2. Install the POS (point of sales) module 3. Go to the administrator's profile and change Preferences > Languages to Arabic(العربية) 4. Open a new shop/pos session 5. Add any product 6. Click on payment(دفعة) button 7. Choose the cash option under the payment method (طريقة الدفع) 8. Select a client (العميل) 9. Click on validate (تصديق) 10. Notice how the items format is incorrect, the quantity and price flipped and unreadable. ### Investigation: - when switching to **Arabic** (an right to left language), the direction of the order line (price and quantity) is `ltr` so the price and the quantity were flipped opw-3580386 Forward-Port-Of: odoo/odoo#144505 Forward-Port-Of: odoo/odoo#141662