Daily updates from Odoo
Wednesday, January 22, 2025
42 changes
16 changes
Miscellaneous changes
**Problem**: In rare edge cases, the selection can have no ranges, causing a crash when attempting to `getRangeAt(0)`. **Solution**: Ensure there are ranges in the selection before accessing them. **Steps to Reproduce**: 1. Split the window, with Odoo on one side and any other application on the other. 2. Navigate to a sales order in Odoo. 3. From the sales order, navigate to the partner. 4. Maximize the window. 5. Return to the sales order. 6. Split the window again. 7. Scroll do
Original PR description
**Problem**: In rare edge cases, the selection can have no ranges, causing a crash when attempting to `getRangeAt(0)`. **Solution**: Ensure there are ranges in the selection before accessing them. **Steps to Reproduce**: 1. Split the window, with Odoo on one side and any other application on the other. 2. Navigate to a sales order in Odoo. 3. From the sales order, navigate to the partner. 4. Maximize the window. 5. Return to the sales order. 6. Split the window again. 7. Scroll down. opw-4279813 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194385
Before this commit: =================== - The purchase tour was failing because the tour's JavaScript used an incorrect class selector (targeting 'partner_id'), which prevented it from locating the intended DOM element. Consequently, the sequence of actions was interrupted, causing the tour to break midway. After this commit: =================== - The issue has been resolved by updating the tour to use the correct and unique class selector. This ensures the tour accurately tar
Original PR description
Before this commit: =================== - The purchase tour was failing because the tour's JavaScript used an incorrect class selector (targeting 'partner_id'), which prevented it from locating the intended DOM element. Consequently, the sequence of actions was interrupted, causing the tour to break midway. After this commit: =================== - The issue has been resolved by updating the tour to use the correct and unique class selector. This ensures the tour accurately targets the intended element, allowing it to proceed without interruptions. As a result, the purchase tour runs successfully and achieves its intended purpose. TaskId: 4268662 Forward-Port-Of: odoo/odoo#193536 Forward-Port-Of: odoo/odoo#184735
For my friends at tech support Exceptions in RPC are handled and a Response is returned directly. It is a different behaviour than jsonrpc where the exception is raised and the dispatcher wraps it is a Response after logging the exception. The xmlrpc code should also raise an exception so that it can be handled in http.py. Adding here a way to detect if a Response was already generated for an exception in the exception handler of HTTP. Related: #193208 Forward-Port-Of: odoo/odoo#193659 Fo
Original PR description
For my friends at tech support Exceptions in RPC are handled and a Response is returned directly. It is a different behaviour than jsonrpc where the exception is raised and the dispatcher wraps it is a Response after logging the exception. The xmlrpc code should also raise an exception so that it can be handled in http.py. Adding here a way to detect if a Response was already generated for an exception in the exception handler of HTTP. Related: #193208 Forward-Port-Of: odoo/odoo#193659 Forward-Port-Of: odoo/odoo#193421
Steps to reproduce: ----- - Create a MO - Duplicate it - Change the scheduled date - Confirm Issue: --- This [changes](https://github.com/odoo/odoo/commit/7c808beaf36853b4d9171ef0981d1ec9c4b73a44), is trying to timedelta between str and datetime leading to an error. Fix: --- To fix this the date_start is set as a datetime and removing the conversion later in the code. opw-4489618 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
Steps to reproduce: ----- - Create a MO - Duplicate it - Change the scheduled date - Confirm Issue: --- This [changes](https://github.com/odoo/odoo/commit/7c808beaf36853b4d9171ef0981d1ec9c4b73a44), is trying to timedelta between str and datetime leading to an error. Fix: --- To fix this the date_start is set as a datetime and removing the conversion later in the code. opw-4489618 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194376
Currently, it is not possible to inherit the company selector widget. To modify the behavior of the widget, developers need to create a new one instead of inheriting it, which is not ideal. This commit introduces changes that allow inheriting the company selector widget and also makes it easier to replace or extend the CompanySelector class within the SwitchCompanyMenu. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#1
Original PR description
Currently, it is not possible to inherit the company selector widget. To modify the behavior of the widget, developers need to create a new one instead of inheriting it, which is not ideal. This commit introduces changes that allow inheriting the company selector widget and also makes it easier to replace or extend the CompanySelector class within the SwitchCompanyMenu. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#175094
Description of the issue this PR addresses: Pressing enter in the `s_popup` snippet after making it visible via the right panel would hide the popup. This occurred because the mutation observer detected changes which shows the modal and rolled them back during the `insertLineBreak` operation. This commit ensures that those mutations are not observed. task-4255083 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193989
Original PR description
Description of the issue this PR addresses: Pressing enter in the `s_popup` snippet after making it visible via the right panel would hide the popup. This occurred because the mutation observer detected changes which shows the modal and rolled them back during the `insertLineBreak` operation. This commit ensures that those mutations are not observed. task-4255083 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193989 Forward-Port-Of: odoo/odoo#191810
When the pos was loading only a part of the products, the request should follow those rules order: - product is a favorite - product is a service - product had stock moves soon - product update But this request didn't take into account consumables products and if there was no stock move, the value was null and postgres consider null values first when ordering desc. Now with that changes, the order is correctly set based on the rules above. --- I confirm I have signed the CLA and read
Original PR description
When the pos was loading only a part of the products, the request should follow those rules order: - product is a favorite - product is a service - product had stock moves soon - product update But this request didn't take into account consumables products and if there was no stock move, the value was null and postgres consider null values first when ordering desc. Now with that changes, the order is correctly set based on the rules above. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#129227 Forward-Port-Of: odoo/odoo#124223
Steps order in the tests was causing an underterministic behavior when the test was run on the runbot. We change the order of the steps to try to make the test more deterministic and consistent. Runbot Error: 57047 Forward-Port-Of: odoo/odoo#172522 Forward-Port-Of: odoo/odoo#172402
Original PR description
Steps order in the tests was causing an underterministic behavior when the test was run on the runbot. We change the order of the steps to try to make the test more deterministic and consistent. Runbot Error: 57047 Forward-Port-Of: odoo/odoo#172522 Forward-Port-Of: odoo/odoo#172402
Description of the issue/feature this PR addresses: Current behavior before PR: The "Old unit price" text in the POS products screen is not showing properly when the l10n_fr_pos_cert is installed. Desired behavior after PR is merged: The "Old unit price" text will be showing up properly using simular code to what is on https://github.com/odoo/odoo/blob/a0ab0ce39bf4cba5e90eae109bcd006b39e31c6c/addons/l10n_fr_pos_cert/static/src/xml/OrderReceipt.xml#L14 --- I confirm I have si
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: The "Old unit price" text in the POS products screen is not showing properly when the l10n_fr_pos_cert is installed. Desired behavior after PR is merged: The "Old unit price" text will be showing up properly using simular code to what is on https://github.com/odoo/odoo/blob/a0ab0ce39bf4cba5e90eae109bcd006b39e31c6c/addons/l10n_fr_pos_cert/static/src/xml/OrderReceipt.xml#L14 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#184840
In order to have the european certification, we need to show 3 decimal places of the weight. To achieve this, we are now removing the rounding based on product's unit and the unit itself in the shown value. This should be okay since we are changing the way we send payload to the consumer of the ScaleScreen -- basically, we are sending the full unrounded value. Forward-Port-Of: odoo/odoo#183209
Original PR description
In order to have the european certification, we need to show 3 decimal places of the weight. To achieve this, we are now removing the rounding based on product's unit and the unit itself in the shown value. This should be okay since we are changing the way we send payload to the consumer of the ScaleScreen -- basically, we are sending the full unrounded value. Forward-Port-Of: odoo/odoo#183209
### Issue: The current descriptions and naming of the `Date` fields (`date_begin`, `date_end`) and the `Timezone` field (`date_tz`) can be confusing in the form view of the event model. Specifically: The timezone used for converting the form dates to the database is determined by the context and not by the `Timezone` field present on the form. However, this `Timezone` field determines the timezone used for displaying the event's date/time on the website. This change tries to clarify the si
Original PR description
### Issue: The current descriptions and naming of the `Date` fields (`date_begin`, `date_end`) and the `Timezone` field (`date_tz`) can be confusing in the form view of the event model. Specifically: The timezone used for converting the form dates to the database is determined by the context and not by the `Timezone` field present on the form. However, this `Timezone` field determines the timezone used for displaying the event's date/time on the website. This change tries to clarify the situation. opw-4323142 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193587 Forward-Port-Of: odoo/odoo#190867
Description of the issue/feature this PR addresses: The method action_add_from_catalog in purchase_stock replaces the product's kanban view with a purchase-specific one. This method directly replaces the first view in the list, which could be wrong if another module changes the default view of the catalog. This commit updates the method to replace only the kanban view, ensuring that other view types are preserved correctly. --- I confirm I have signed the CLA and read the PR guidelines
Original PR description
Description of the issue/feature this PR addresses: The method action_add_from_catalog in purchase_stock replaces the product's kanban view with a purchase-specific one. This method directly replaces the first view in the list, which could be wrong if another module changes the default view of the catalog. This commit updates the method to replace only the kanban view, ensuring that other view types are preserved correctly. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#175438
-This commit remove custom properties 'nodestroy' to avoid warning like this: `odoo.addons.web.controllers.utils: Action 'Customer Invoice' contains custom properties 'nodestroy'`. Passing them via the `params` or `context` properties is recommended instead 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:
Original PR description
-This commit remove custom properties 'nodestroy' to avoid warning like this: `odoo.addons.web.controllers.utils: Action 'Customer Invoice' contains custom properties 'nodestroy'`. Passing them via the `params` or `context` properties is recommended instead 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#161814
Steps to reproduce: - Add a "Call To Action" block on the homepage > Save it as a custom snippet. - Add a new page > Drop the saved custom block on it > Drop Also another "Title" block. - Translate the custom block in the new page > At this point, the translation is fine. - Go to "Edit" mode > Edit the other block ("Title") > Save. - The translations for the custom "Call To Action" is lost. Starting from [1], the translation of custom snippets was supported and when dropping a save
Original PR description
Steps to reproduce: - Add a "Call To Action" block on the homepage > Save it as a custom snippet. - Add a new page > Drop the saved custom block on it > Drop Also another "Title" block. - Translate…
Steps to reproduce:
- Add a "Call To Action" block on the homepage > Save it as a custom
snippet.
- Add a new page > Drop the saved custom block on it > Drop Also
another "Title" block.
- Translate the custom block in the new page > At this point, the
translation is fine.
- Go to "Edit" mode > Edit the other block ("Title") > Save.
- The translations for the custom "Call To Action" is lost.
Starting from [1], the translation of custom snippets was supported and
when dropping a saved custom snippet in a page/view, the snippet will
copy its translation from the saved view (see:
`_copy_custom_snippet_translations()`). This code will always update the
terms in the translation dictionary, even when the page has its custom
translation for them.
The goal of this commit is to fix this behavior by only allowing the
update of a term translation when the page has no custom translation
for it.
[1]: https://github.com/odoo/odoo/commit/d3426b7714012e833caae10281cfb8433223299a
opw-3930862
opw-4141290
Forward-Port-Of: odoo/odoo#194234
Forward-Port-Of: odoo/odoo#177960Description 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#194426 Forward-Port-Of: odoo/odoo#192048
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194426 Forward-Port-Of: odoo/odoo#192048
Issue --> Using the 'product.product.name' field in loyalty.reward.discount_product_domain that is not added via the `_loader_params_product_product` loader causes an error in the matchCondition function https://github.com/odoo/odoo/blob/9b0f528aa02743372934df8e64d1cc0ad74903b6/addons/web/static/src/core/domain.js#L331 where variable fieldValue is undefined if the field is not available. Solution --> Adding the `name` field search parameters in the `_loader_params_product_product` simi
Original PR description
Issue --> Using the 'product.product.name' field in loyalty.reward.discount_product_domain that is not added via the `_loader_params_product_product` loader causes an error in the matchCondition function https://github.com/odoo/odoo/blob/9b0f528aa02743372934df8e64d1cc0ad74903b6/addons/web/static/src/core/domain.js#L331 where variable fieldValue is undefined if the field is not available. Solution --> Adding the `name` field search parameters in the `_loader_params_product_product` similar to https://github.com/odoo/odoo/pull/186804 opw-4410460 Forward-Port-Of: odoo/odoo#194637
10 changes
Code cleanup and technical improvements
Work schedule fields previously tied to Payroll are now available from the shared resource model, so other apps can use them without requiring Payroll to be installed. This makes staffing and time-related features easier to reuse across modules while keeping behavior consistent.
Original PR description
Different modules could use the fields defined in hr_payroll/resource_calendar. However, these modules shouldn't require the payroll app to be installed in order to be able to use those fields. Hence the fields hours_per_week, full_time_required_hours, is_fulltime, work_time_rate over are moved to the base resource model. task-4448549
Miscellaneous changes
…ique FITID To replicate the issue: 1. Install the brazilian localization (enterprise) 2. In the accounting app dashboard, click Import Statement 3. Upload an .OFX file with duplicate FIDID 4. A validation error appears and the upload is not done Cause: The bank statement import assumes the FIDID is a unique identifier for the transactions in the .OFX file. A sql constraint is set in place to ensure this uniqueness. However, some Brazilian banks may generate files with transactions wi
Original PR description
…ique FITID To replicate the issue: 1. Install the brazilian localization (enterprise) 2. In the accounting app dashboard, click Import Statement 3. Upload an .OFX file with duplicate FIDID 4. A…
…ique FITID To replicate the issue: 1. Install the brazilian localization (enterprise) 2. In the accounting app dashboard, click Import Statement 3. Upload an .OFX file with duplicate FIDID 4. A validation error appears and the upload is not done Cause: The bank statement import assumes the FIDID is a unique identifier for the transactions in the .OFX file. A sql constraint is set in place to ensure this uniqueness. However, some Brazilian banks may generate files with transactions with the same FITID. An example is when PIX transfers have the same FITID as the fee charged for the PIX, which appears as another bank statement line with the same FITID. Fix: The function _parse_bank_statement_file is altered to call a function that fills the vals_line dictionary with the transaction's values. This function is then overwritten in l10n_br_reports to not include the FITID (unique_import_id) for journals of Brazilian companies. opw-4317681 Forward-Port-Of: odoo/enterprise#77381 Forward-Port-Of: odoo/enterprise#76556
Without this change it's impossible to remove the user groups from internal users, because they're being re-added upon the module updates. The reason is because there's a mechanism in place that synchronizes the newly added groups to the default user, so they're automatically added to all internal users ([ref](https://github.com/odoo/odoo/blob/6b5a839428b06e09d90631e9824a9b594ff8f4f5/odoo/addons/base/models/res_users.py#L621-L626)). For this reason and by convention, groups added t
Original PR description
Without this change it's impossible to remove the user groups from internal users, because they're being re-added upon the module updates.
The reason is because there's a mechanism in place that synchronizes the newly added groups to the default user, so they're automatically added to all internal users ([ref](https://github.com/odoo/odoo/blob/6b5a839428b06e09d90631e9824a9b594ff8f4f5/odoo/addons/base/models/res_users.py#L621-L626)).
For this reason and by convention, groups added to the default user should be non-updateable, so system administrators can remove them if they wanted to.
Related to: https://github.com/odoo/enterprise/commit/621824fb3fe1b5b895d1a37a15d45e903bc7dc6f
--
ping @tde-banana-odoo @tivisse
Forward-Port-Of: odoo/enterprise#77361
Forward-Port-Of: odoo/enterprise#55024Before this commit, selecting an order from the order list and attempting to load it would result in an error. opw-4251717 X-original-commit: 2cd72396d9f96cd7770154c56355ec864e0926e9 Forward-Port-Of: odoo/enterprise#77330 Forward-Port-Of: odoo/enterprise#77097
Original PR description
Before this commit, selecting an order from the order list and attempting to load it would result in an error. opw-4251717 X-original-commit: 2cd72396d9f96cd7770154c56355ec864e0926e9 Forward-Port-Of: odoo/enterprise#77330 Forward-Port-Of: odoo/enterprise#77097
* Import orders from multiple accounts and shops * Match products based on their internal reference (`item_id` or `model_id` in Shopee) * Support both Fulfillment by Shopee (FBS) and Fulfillment by Merchant (FBM): * FBS: import the completed orders * FBM: fetch the delivery information from Shopee, track and synchronize the stock level to Shopee task-3623720 Forward-Port-Of: odoo/enterprise#77342 Forward-Port-Of: odoo/enterprise#71610
Original PR description
* Import orders from multiple accounts and shops * Match products based on their internal reference (`item_id` or `model_id` in Shopee) * Support both Fulfillment by Shopee (FBS) and Fulfillment by Merchant (FBM): * FBS: import the completed orders * FBM: fetch the delivery information from Shopee, track and synchronize the stock level to Shopee task-3623720 Forward-Port-Of: odoo/enterprise#77342 Forward-Port-Of: odoo/enterprise#71610
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/enterprise#58348
Original PR description
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/enterprise#58348
pos*: pos_blackbox_be, pos_iot, pos_restaurant_preparation_display In this commit, we adapt the point of sale modules to be compliant with the belgian restaurant certification. A summary of the changes since last version: - QR ordering: QR code ordering is available without online payment. Just a simple ordering configuration. - Price can be changed: The price of a product can be changed in the cart. Forward-Port-Of: odoo/enterprise#72209
Original PR description
pos*: pos_blackbox_be, pos_iot, pos_restaurant_preparation_display In this commit, we adapt the point of sale modules to be compliant with the belgian restaurant certification. A summary of the changes since last version: - QR ordering: QR code ordering is available without online payment. Just a simple ordering configuration. - Price can be changed: The price of a product can be changed in the cart. Forward-Port-Of: odoo/enterprise#72209
Re-exported because: - To take into account PRs that were merged after the freeze - A couple pot files were missing/empty (i.e. empty = deleted) - Just in case there was anything out of date Forward-Port-Of: odoo/enterprise#77431
Original PR description
Re-exported because: - To take into account PRs that were merged after the freeze - A couple pot files were missing/empty (i.e. empty = deleted) - Just in case there was anything out of date Forward-Port-Of: odoo/enterprise#77431
Steps to reproduce: --- 1) Go to a Subscription with a Project 2) Add a section and/or note line 3) Navigate Project smart button -> Dashboards -> Subscription dropdown 4) Notice the order lines Issue: ---- In the subscription the sections and notes are taken into account this is due to the fact that all the line are retrieved and not only the "billable". Fix: --- Adding a condition on the display type of the line. opw-4394767 Forward-Port-Of: odoo/enterprise#77176
Original PR description
Steps to reproduce: --- 1) Go to a Subscription with a Project 2) Add a section and/or note line 3) Navigate Project smart button -> Dashboards -> Subscription dropdown 4) Notice the order lines Issue: ---- In the subscription the sections and notes are taken into account this is due to the fact that all the line are retrieved and not only the "billable". Fix: --- Adding a condition on the display type of the line. opw-4394767 Forward-Port-Of: odoo/enterprise#77176
## Description - when applying sort by for a non-stored field in a list view, it leads to traceback. - when fetching data, when attempting to convert it into an SQL query, now throws error after this [commit](https://github.com/odoo/odoo/commit/fb0569eeba0a8909a067f2ad90b80edbe8d2d915), form this [line](https://github.com/odoo/odoo/blame/de47ec932742ef82b315990cbac8787f82aa91d5/odoo/models.py#L2846) - This pr ensures that only stored fields are available for sorting in the list view editor,
Original PR description
## Description - when applying sort by for a non-stored field in a list view, it leads to traceback. - when fetching data, when attempting to convert it into an SQL query, now throws error after this…
## Description
- when applying sort by for a non-stored field in a list view, it leads to traceback.
- when fetching data, when attempting to convert it into an SQL query, now throws error after this [commit](https://github.com/odoo/odoo/commit/fb0569eeba0a8909a067f2ad90b80edbe8d2d915), form this [line](https://github.com/odoo/odoo/blame/de47ec932742ef82b315990cbac8787f82aa91d5/odoo/models.py#L2846)
- This pr ensures that only stored fields are available for sorting in the list view editor, preventing such issues.
## steps to reproduce
- Start a db ( version 17.2 or greater)
- install studio and contacts app
- open studio editor for contact app's list view.
- Add display_name in list and set `sort by` attribute with `display_name` field.
## Traceback
```py
File "/home/odoo/odoo/codebase/odoo/saas-17.2/addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/odoo/codebase/odoo/saas-17.2/odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "/home/odoo/odoo/codebase/odoo/saas-17.2/addons/web/models/models.py", line 46, in web_search_read
records = self.search_fetch(domain, specification.keys(), offset=offset, limit=limit, order=order)
File "/home/odoo/odoo/codebase/odoo/saas-17.2/odoo/models.py", line 1626, in search_fetch
query = self._search(domain, offset=offset, limit=limit, order=order or self._order)
File "/home/odoo/odoo/codebase/odoo/saas-17.2/odoo/models.py", line 5454, in _search
query.order = self._order_to_sql(order, query)
File "/home/odoo/odoo/codebase/odoo/saas-17.2/odoo/models.py", line 5266, in _order_to_sql
term = self._order_field_to_sql(alias, field_name, sql_direction, sql_nulls, query)
File "/home/odoo/odoo/codebase/odoo/saas-17.2/odoo/models.py", line 5324, in _order_field_to_sql
sql_field = self._field_to_sql(alias, field_name, query)
File "/home/odoo/odoo/codebase/odoo/saas-17.2/odoo/models.py", line 2846, in _field_to_sql
raise ValueError(f"Cannot convert field {field} to SQL")
ValueError: Cannot convert field res.partner.display_name to SQL
```
Forward-Port-Of: odoo/enterprise#77467
Forward-Port-Of: odoo/enterprise#7635116 changes
Enhancements to existing features
This update adjusts the UrbanPiper Point of Sale product list so product ordering continues to work correctly after a related view change. It helps keep product lists organized and consistent for users managing items through the POS integration.
Original PR description
Following this commit: ==== - Inherit id reference has been updated due to changes of view mode in product list view to primary. task-4423837
Resolved issues and error corrections
This fix prevents tooltips from appearing immediately when users tap buttons on small screens, especially where they could cover dropdown menus. Tooltips now require a longer press on touch devices and close when the button is clicked, making mobile navigation less frustrating.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where guests visiting the support page could not see the live chat operator's profile picture. The live chat avatar request now includes the needed access token, restoring the expected visual experience for website visitors.
Original PR description
Follow up of https://github.com/odoo/odoo/pull/187799 The livechat override needs to be adapted as well to provide the token. - Login with Mitchell Admin to a database with im_livechat installed - Open support page as guest - The operator picture is missing opw-4489740
This change makes an automated test for document error handling run consistently by preventing timing conflicts during the test. It helps reduce false failures in the development process without changing the product experience for users.
Original PR description
This commit solves the undeterministic behavior of the multiple tracebacks test by making sure no race condition can happen when triggering the errors.
The Documents app now correctly highlights the Info and Tags button when its related panel is open. This gives users clearer visual feedback and reduces confusion when managing document details and tags.
Original PR description
Steps to reproduce:
1. click the 'info & Tags' button from 'action' on the left side.
2. 'i' tag icon button on the right side. 3. The button is not getting 'active' dynamically.
Technical Reason:
"{'active': this.documentsState.isChatterVisible" in the documents_control_panel was not updating based on chatterState.visible in documents_kanban_renderer. This ensures the button's "active" class behaves as expected
After this Commit:
The Button will get 'active' according to the 'info&Tags' button.
Task-4427575Miscellaneous changes
Refund order in spain require a refund reason. Steps to reproduce: ------------------- * Install l10n_es_pos_tbai module * Open PoS * Make an order and try to refund it > Observation: You get an error message saying that you need to add a refund reason opw-4282586 Forward-Port-Of: odoo/odoo#192538 Forward-Port-Of: odoo/odoo#191205
Original PR description
Refund order in spain require a refund reason. Steps to reproduce: ------------------- * Install l10n_es_pos_tbai module * Open PoS * Make an order and try to refund it > Observation: You get an error message saying that you need to add a refund reason opw-4282586 Forward-Port-Of: odoo/odoo#192538 Forward-Port-Of: odoo/odoo#191205
The event listeners are never removed when the component is unmounted which means to global `env.bus` always keeps a reference to this component and everything that goes with it, including its (child)env. In version 18.0, the spreadsheet client action instantiates its own `BurgerMenu` component and also adds the spreadsheet `model` in the action child env (which can be expensive memory-wise) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forw
Original PR description
The event listeners are never removed when the component is unmounted which means to global `env.bus` always keeps a reference to this component and everything that goes with it, including its (child)env. In version 18.0, the spreadsheet client action instantiates its own `BurgerMenu` component and also adds the spreadsheet `model` in the action child env (which can be expensive memory-wise) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194587 Forward-Port-Of: odoo/odoo#194485
Steps to reproduce: ----- - Create a MO - Duplicate it - Change the scheduled date - Confirm Issue: --- This [changes](https://github.com/odoo/odoo/commit/7c808beaf36853b4d9171ef0981d1ec9c4b73a44), is trying to timedelta between str and datetime leading to an error. Fix: --- To fix this the date_start is set as a datetime and removing the conversion later in the code. opw-4489618 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
Steps to reproduce: ----- - Create a MO - Duplicate it - Change the scheduled date - Confirm Issue: --- This [changes](https://github.com/odoo/odoo/commit/7c808beaf36853b4d9171ef0981d1ec9c4b73a44), is trying to timedelta between str and datetime leading to an error. Fix: --- To fix this the date_start is set as a datetime and removing the conversion later in the code. opw-4489618 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194376
Steps to reproduce: [l10n_dk] - create and confirm a sale order - create an expense for a new employee and use a product set with reinvoice at cost and a tax with multiple repartition lines - confirm and process the expense - post journal entries Issue: Missing required fields on accountable sale order line. Cause: We want to reinvoice the tax line that no product on it opw-4378714 Forward-Port-Of: odoo/odoo#193853 Forward-Port-Of: odoo/odoo#191163
Original PR description
Steps to reproduce: [l10n_dk] - create and confirm a sale order - create an expense for a new employee and use a product set with reinvoice at cost and a tax with multiple repartition lines - confirm and process the expense - post journal entries Issue: Missing required fields on accountable sale order line. Cause: We want to reinvoice the tax line that no product on it opw-4378714 Forward-Port-Of: odoo/odoo#193853 Forward-Port-Of: odoo/odoo#191163
Minimal Configuration: - Create an account (49999 Great Account) that has a default tax (15%) - Settings > Accounting: define "Separate discount accounts on invoices" > Customer invoices with an account (e.g. 443000 Cash Discount Loss) Steps to reproduce: - Create an invoice with an invoice line that has "Great Account", a discount (10%) and a price (100) and a tax (15%) - Confirm -> amount = 108.9 - Duplicate the invoice (in the ticket: Create a Credit Note) Issue: => The credit not
Original PR description
Minimal Configuration: - Create an account (49999 Great Account) that has a default tax (15%) - Settings > Accounting: define "Separate discount accounts on invoices" > Customer invoices with an…
Minimal Configuration: - Create an account (49999 Great Account) that has a default tax (15%) - Settings > Accounting: define "Separate discount accounts on invoices" > Customer invoices with an account (e.g. 443000 Cash Discount Loss) Steps to reproduce: - Create an invoice with an invoice line that has "Great Account", a discount (10%) and a price (100) and a tax (15%) - Confirm -> amount = 108.9 - Duplicate the invoice (in the ticket: Create a Credit Note) Issue: => The credit note is not of the same amount = 106.80. That is, MINUS discount * tax_amount <-> 108.90 MINUS 10% * 21= 106.80 Cause: When there is a "Separate discount accounts on invoices" that is set, discount line appear on the journal items of the document; moves between the default account for such transaction to the chosen move in the settings. When iterating through those discount lines, the condition was not strict enough to filter them out and would put a tax on them (as my dear colleague Andrea said: the bomb has been planted) Therefore, when creating a credit/duplicating, we copy the data wrongly (but in a correct a way for a standard flow) which gives incoherent results opw-4166601 Forward-Port-Of: odoo/odoo#187565
**Problem**: In rare edge cases, the selection can have no ranges, causing a crash when attempting to `getRangeAt(0)`. **Solution**: Ensure there are ranges in the selection before accessing them. **Steps to Reproduce**: 1. Split the window, with Odoo on one side and any other application on the other. 2. Navigate to a sales order in Odoo. 3. From the sales order, navigate to the partner. 4. Maximize the window. 5. Return to the sales order. 6. Split the window again. 7. Scroll do
Original PR description
**Problem**: In rare edge cases, the selection can have no ranges, causing a crash when attempting to `getRangeAt(0)`. **Solution**: Ensure there are ranges in the selection before accessing them. **Steps to Reproduce**: 1. Split the window, with Odoo on one side and any other application on the other. 2. Navigate to a sales order in Odoo. 3. From the sales order, navigate to the partner. 4. Maximize the window. 5. Return to the sales order. 6. Split the window again. 7. Scroll down. opw-4279813 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194385
### Steps to reproduce: - Create a Vendor Bill in a foreign currency, leave "Payment Reference" blank - In the Accounting Dashboard click on the three dots of the "Bank" block and click on "Operations" - Create a new transaction - Under "Foreign currency" select the one from the bill - Under "Amount in currency" select the one from the bill - Under "Amount" select a different amount - Click "Match" on the right - Select the bill in the entries list - Under the line "Foreign Change Gain"
Original PR description
### Steps to reproduce: - Create a Vendor Bill in a foreign currency, leave "Payment Reference" blank - In the Accounting Dashboard click on the three dots of the "Bank" block and click on "Operations" - Create a new transaction - Under "Foreign currency" select the one from the bill - Under "Amount in currency" select the one from the bill - Under "Amount" select a different amount - Click "Match" on the right - Select the bill in the entries list - Under the line "Foreign Change Gain" is "Exchange Difference: False"  ### Cause: The payment reference is supposed to be displayed here but it is equal to `False` so "False" is displayed. ### Solution: Fallback on empty string if `new_aml.name` is `False`. opw-4485887 Forward-Port-Of: odoo/enterprise#77508 Forward-Port-Of: odoo/enterprise#77354
Forward-Port-Of: odoo/enterprise#77482 Forward-Port-Of: odoo/enterprise#76540
Original PR description
Forward-Port-Of: odoo/enterprise#77482 Forward-Port-Of: odoo/enterprise#76540
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/enterprise#66519 Forward-Port-Of: odoo/enterprise#58348
Original PR description
The confirmation page wasn't displayed and the order wasn't sent to the preparation display when confirming an order with a total of 0. Now the confirmation page is displayed and the order is send to the preparation display when the order is confirmed regardless of the total amount. Forward-Port-Of: odoo/enterprise#66519 Forward-Port-Of: odoo/enterprise#58348
Following [this commit], the pot file was not updated. We're re-exporting it and meanwhile fixing a small typo. [this commit]: https://github.com/odoo/enterprise/commit/507f8a3df18320f7e899630dfb10da769cf20876
Original PR description
Following [this commit], the pot file was not updated. We're re-exporting it and meanwhile fixing a small typo. [this commit]: https://github.com/odoo/enterprise/commit/507f8a3df18320f7e899630dfb10da769cf20876
Forward-Port-Of: odoo/enterprise#77503
Original PR description
Forward-Port-Of: odoo/enterprise#77503