Friday, June 21, 2024
34 changes · saas-17.3
Resolved issues and error corrections
This fixes an issue where a warning tooltip appeared whenever users hovered over draggable content blocks in the website editor. The message now appears only when a block truly cannot be used, reducing confusion while editing pages.
Original PR description
Since [1], a tooltip indicating "This block cannot be dropped anywhere on this page." appears each time you hover a draggable snippet. This commit addresses the issue by only showing this tooltip in the right circumstances, when a snippet is not draggable (disabled or installable...). [1]: https://github.com/odoo/odoo/commit/91293fe4a8125f65cd7e5f487aacbc62c35c0f74#diff-c971e01f28cfbdec366b6a712c516e3427887fde8a39674e5bb3b5a056cedad0R178 task-3893159
This fix ensures WhatsApp conversation entries display the proper contact photo by using the existing contact identity logic. Users get a more consistent and recognizable WhatsApp sidebar experience, reducing confusion when identifying customers.
Original PR description
Since Persona model properly determines `avatarUrl` it makes sense to invoke its method, that way we make sure that proper partner avatar is fetched. X-original-commit: 706259bc1177b22ee66c70062d8cb8f750bf0f02 fixes original pr of the task-3908710
This update completes a previous cleanup in the Belgian reporting module and fixes errors that could occur when identifying partners needing VAT listing warnings. It helps ensure Belgian VAT reporting checks work reliably when the related warning flow is used.
Original PR description
Currently there are errors in `_get_warning_partners`: E.g. `_get_turnover_query` is expected to return 3 values but it only returns 2 now (due to a refactoring; see below). In commit eeaa8d3b31d8efccd42b8705ba387527a39dfb57 some parts of l10n_be_reports were refactored. Some parts were forgotten during a rebase. (The changes were introduced after the refactoring PR was created but before it was merged). This commit finishes the refactoring (and in the process removes the errors). The problematic function is currently not called: This is fixed in https://github.com/odoo/enterprise/pull/64313 on 17.2 Error was found during: https://github.com/odoo/enterprise/pull/61962
Miscellaneous changes
Hongkong was removed from tzdata in ubuntu Noble, `Asia/Honk_Kong` must be used instead. Forward-Port-Of: odoo/odoo#170217 Forward-Port-Of: odoo/odoo#170146
Original PR description
Hongkong was removed from tzdata in ubuntu Noble, `Asia/Honk_Kong` must be used instead. Forward-Port-Of: odoo/odoo#170217 Forward-Port-Of: odoo/odoo#170146
Currently the top line of a combo product is always showing a 0$ price. Steps to reproduce: ------------------- * Open a POS Shop session * Add a combo product, confirm selection choices > Observation: The first order line representing the combo product will show a price of 0$ Why the fix: ------------ In saas-17.3 the price is not shown on the combo parent line anymore to avoid any confusion. Discussed with the PO and he asked to put this in 17.0 as well if possible. Here is the
Original PR description
Currently the top line of a combo product is always showing a 0$ price. Steps to reproduce: ------------------- * Open a POS Shop session * Add a combo product, confirm selection choices > Observation: The first order line representing the combo product will show a price of 0$ Why the fix: ------------ In saas-17.3 the price is not shown on the combo parent line anymore to avoid any confusion. Discussed with the PO and he asked to put this in 17.0 as well if possible. Here is the commit that did the change in saas-17.3: https://github.com/odoo/odoo/commit/72267340663e47581d42f46deded6830c72fbda3 Slight change as in saas-17.3 `combo_line_ids` is always a list, empty or not and in 17.0 if you have a simple product, `combo_line_ids` will be `undefined`. opw-3942339 Forward-Port-Of: odoo/odoo#170206 Forward-Port-Of: odoo/odoo#169587
(note for reviewer: I reset my branch on 15.0) The `werkzeug.proxy_fix.orig` is set when running in --proxy-mode, it holds the original value of various headers before the ProxyFix class changed them according to the `X-Forwarded-` headers. It is a dictionnary with the following entries: orig_remote_addr = environ_get("REMOTE_ADDR") orig_wsgi_url_scheme = environ_get("wsgi.url_scheme") orig_http_host = environ_get("HTTP_HOST") "werkzeug.proxy_fix.orig": { "RE
Original PR description
(note for reviewer: I reset my branch on 15.0) The `werkzeug.proxy_fix.orig` is set when running in --proxy-mode, it holds the original value of various headers before the ProxyFix class changed them…
(note for reviewer: I reset my branch on 15.0)
The `werkzeug.proxy_fix.orig` is set when running in --proxy-mode, it holds the original value of various headers before the ProxyFix class changed them according to the `X-Forwarded-` headers.
It is a dictionnary with the following entries:
orig_remote_addr = environ_get("REMOTE_ADDR")
orig_wsgi_url_scheme = environ_get("wsgi.url_scheme")
orig_http_host = environ_get("HTTP_HOST")
"werkzeug.proxy_fix.orig": {
"REMOTE_ADDR": orig_remote_addr,
"wsgi.url_scheme": orig_wsgi_url_scheme,
"HTTP_HOST": orig_http_host,
"SERVER_NAME": environ_get("SERVER_NAME"),
"SERVER_PORT": environ_get("SERVER_PORT"),
"SCRIPT_NAME": environ_get("SCRIPT_NAME"),
}
All those sub-entries are already allow-listed by the Odoo's HTTPRequest class.
Accessing those values is handy when debugging the --proxy-mode, it allows to see at a glance if the proxy-mode was effective for this request: the `werkzeug.proxy_fix.orig` entry is present; or not: the entry is absent.
Forward-Port-Of: odoo/odoo#169566
Forward-Port-Of: odoo/odoo#168841Steps to reproduce: ------------------- - Install `Employee Contracts` module - Go to `Employees` and open any employee with a contract - Click on `Work Information` tab - Set `Working Hours` to nothing and save - Activate debug mode - Click again on `Work Information` tab Issue: ------ Error : `Invalid props for component 'ContractWarningTooltip'`. Cause: ------ In debug mode, we activate the validation of the props, and since there are not declared on the widget componen
Original PR description
Steps to reproduce: ------------------- - Install `Employee Contracts` module - Go to `Employees` and open any employee with a contract - Click on `Work Information` tab - Set `Working Hours` to nothing and save - Activate debug mode - Click again on `Work Information` tab Issue: ------ Error : `Invalid props for component 'ContractWarningTooltip'`. Cause: ------ In debug mode, we activate the validation of the props, and since there are not declared on the widget component, it is raising an error. Solution: --------- Set the default props (`standardWidgetProps`) on the widget component. opw-3972488 Forward-Port-Of: odoo/odoo#170255
### Steps to reproduce: - Create a storable product P with a BOM with two raw lines: - 1 unit x COMP 1 - 1 unit x COMP 2 - Create and confirm a manufacturing order for 1 unit of P - Click on the list icon of the stock move of COMP 1 and close the x2many dialog tab with cancel - Change the qty_producing of the MO to 1 and then click anywhere on the form of the MO to trigger the associated onchange ### Cause of the Issue: Clicking on the list icon of the stock.move will trigger the
Original PR description
### Steps to reproduce: - Create a storable product P with a BOM with two raw lines: - 1 unit x COMP 1 - 1 unit x COMP 2 - Create and confirm a manufacturing order for 1 unit of P - Click on the list…
### Steps to reproduce: - Create a storable product P with a BOM with two raw lines: - 1 unit x COMP 1 - 1 unit x COMP 2 - Create and confirm a manufacturing order for 1 unit of P - Click on the list icon of the stock move of COMP 1 and close the x2many dialog tab with cancel - Change the qty_producing of the MO to 1 and then click anywhere on the form of the MO to trigger the associated onchange ### Cause of the Issue: Clicking on the list icon of the stock.move will trigger the `extendRecord` method: https://github.com/odoo/odoo/blob/f8182fb625eb3e20c85388d4c342553af4fe7ab9/addons/web/static/src/model/relational_model/static_list.js#L195-L198 This trigger will then add the `move_line_ids` to the fields and active fields of the stock.move of COMP 1. Closing the x2many dialog and changing the `qty_producing` of the mo will then trigger this onchange call: https://github.com/odoo/odoo/blob/f8182fb625eb3e20c85388d4c342553af4fe7ab9/addons/mrp/models/mrp_production.py#L806-L807 This one will update the stock move values of both components. However, the stock move associated to COMP 2 was not extended and the `move_line_ids` field that record will be accessed to determine its invisible attribute: https://github.com/odoo/odoo/blob/f8182fb625eb3e20c85388d4c342553af4fe7ab9/addons/web/static/src/model/relational_model/static_list.js#L546-L547 Since the result is undefined a client error is thrown. opw-3923341 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167217
When the arguments for the creation of the SpreadsheetPivotTable are computed, an array was created for each subgroups (due to `concat`). This allows to reduce by +/- 62% the time spent in the creation of the arguments. It was done by using `push` instead of `concat`. Note that `splice` has been evaluated but it was sightly slower than `push`. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confir
Original PR description
When the arguments for the creation of the SpreadsheetPivotTable are computed, an array was created for each subgroups (due to `concat`). This allows to reduce by +/- 62% the time spent in the creation of the arguments. It was done by using `push` instead of `concat`. Note that `splice` has been evaluated but it was sightly slower than `push`. 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#170253 Forward-Port-Of: odoo/odoo#170159
When unlocking a picking and adding a new line, the 'picked' field would be False for both the new stock.move and stock.move.line. The main issue it creates is that no stock.valuation.layer would be created on stock_account. https://github.com/odoo/odoo/assets/29302288/f11b7122-dd64-40f3-a0c3-1de6f442c9b7 OPW-3980565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170191 Forward-Port-Of: odoo/odoo#169816
Original PR description
When unlocking a picking and adding a new line, the 'picked' field would be False for both the new stock.move and stock.move.line. The main issue it creates is that no stock.valuation.layer would be created on stock_account. https://github.com/odoo/odoo/assets/29302288/f11b7122-dd64-40f3-a0c3-1de6f442c9b7 OPW-3980565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170191 Forward-Port-Of: odoo/odoo#169816
**Steps to reproduce:** - Install Sale and Project modules - Create a project with 1 or 2 stages - Create more than 1 task in this project - Assign those tasks to a Sale order - Go to this sale order and click on tasks smart button **Current behavior before PR:** When clicking on the task smart button in a sale order you will see lots of stages that are not associated with the shown tasks' project. This is happening because the value assigned to default_project_id in the context is
Original PR description
**Steps to reproduce:** - Install Sale and Project modules - Create a project with 1 or 2 stages - Create more than 1 task in this project - Assign those tasks to a Sale order - Go to this sale order and click on tasks smart button **Current behavior before PR:** When clicking on the task smart button in a sale order you will see lots of stages that are not associated with the shown tasks' project. This is happening because the value assigned to default_project_id in the context is False. https://github.com/odoo/odoo/blob/saas-16.4/addons/sale_project/models/sale_order.py#L166 **Desired behavior after PR is merged:** We are now just showing the stages associated with the shown tasks' project by assigning those tasks' project id to the default_project_id value in context. opw-3929012 Forward-Port-Of: odoo/odoo#169866 Forward-Port-Of: odoo/odoo#168035
### Steps to reproduce (on mobile mode): - Go to Expenses app - Create a new expense - Select 'Company' for the 'Paid By' field - Action > Create Report - Click on the field 'Payment Method' - The view displayed does not show the journals, so there can be several 'Manual' for example ### Cause: There are no kanban view for account.payment.method.line and the default one only shows the name and not the journal. ### Solution: Create a new kanban view for account.payment.method.line t
Original PR description
### Steps to reproduce (on mobile mode): - Go to Expenses app - Create a new expense - Select 'Company' for the 'Paid By' field - Action > Create Report - Click on the field 'Payment Method' - The view displayed does not show the journals, so there can be several 'Manual' for example ### Cause: There are no kanban view for account.payment.method.line and the default one only shows the name and not the journal. ### Solution: Create a new kanban view for account.payment.method.line that displays the journal. opw-3896011 Forward-Port-Of: odoo/odoo#167797
The is_explicit attribute was useful to prevent saving a session when the session_id was coming from an untrusted source (e.g. a client forged http header). We removed the feature to set explicit headers, the attribute is gone, we forgot to adapt this one. Forward-Port-Of: odoo/odoo#169185
Original PR description
The is_explicit attribute was useful to prevent saving a session when the session_id was coming from an untrusted source (e.g. a client forged http header). We removed the feature to set explicit headers, the attribute is gone, we forgot to adapt this one. Forward-Port-Of: odoo/odoo#169185
Issue: ====== Clicking enter in a banner inside a list breaks the layout in chrome browser. Steps to reproduce the issue: ============================= - Open chrome browser - Go to to-do - Create a list and add 1 item - Click enter (Second element of the list) and add a banner in the item - Click enter - Doesn't work as expected Origin of the issue: ==================== This is a browser issue, chrome in this specific case doesn't work properly, all the events until `textInput
Original PR description
Issue: ====== Clicking enter in a banner inside a list breaks the layout in chrome browser. Steps to reproduce the issue: ============================= - Open chrome browser - Go to to-do - Create a…
Issue:
======
Clicking enter in a banner inside a list breaks the layout in chrome browser.
Steps to reproduce the issue:
=============================
- Open chrome browser
- Go to to-do
- Create a list and add 1 item
- Click enter (Second element of the list) and add a banner in the item
- Click enter
- Doesn't work as expected
Origin of the issue:
====================
This is a browser issue, chrome in this specific case doesn't work properly, all the events until `textInput` are called when clicking `enter` but the last event is never triggerged which is the `input` event. The specific case can be reproduced with this:
```
<div contenteditable="true">
<ul>
<div contenteditable="false">
<div contenteditable="true">
<p>
text[]
</p>
</div>
</div>
</ul
</div>
```
Solution:
==========
We manually trigger the `input` event in this specific case.
Issue:
======
List inside a banner under a list doesn't align correctly
steps to reproduce the issue:
=============================
- Go to do
- Add a list and first item
- Add a banner
- Add a list inside the banner
- It's not correctly centered
Origin of the issue:
====================
Since the list inside the banner is considered nested list under the top
list, the `margin-bottom` is removed.
Solution:
=========
Reassign the style again when we are inside the banner.
task-3857296
Forward-Port-Of: odoo/odoo#162204The live chat uses cookies to save data about the ongoing conversation, such as the thread name. When this information contains non-ASCII characters, the behavior of the cookie is not consistent across browsers. Safari does not store it properly, and trying to parse it later on results in a crash. Until version 17 ([1]), the fix relied on encoding the data using the `encodeURIComponent` method. However, cookie size is limited to 4096 bytes, and this limit can be reached. Starting with v
Original PR description
The live chat uses cookies to save data about the ongoing conversation, such as the thread name. When this information contains non-ASCII characters, the behavior of the cookie is not consistent across browsers. Safari does not store it properly, and trying to parse it later on results in a crash. Until version 17 ([1]), the fix relied on encoding the data using the `encodeURIComponent` method. However, cookie size is limited to 4096 bytes, and this limit can be reached. Starting with version 17.3, the live chat does not use cookies anymore ([2]). This PR backports this behavior to fix the issue. opw-3968341 [1]: https://github.com/odoo/odoo/pull/168524 [2]: https://github.com/odoo/odoo/pull/167495 Forward-Port-Of: odoo/odoo#169905 Forward-Port-Of: odoo/odoo#169395
Activate a second lang (ex French) and set it to the demo user Set "Cash Discount Tax Reduction" to "Always" Create an invoice with tax Set Payment term to "2/7 Net 30" [1] Go to "journal items" tab Early payment discount lines are set correctly Now with the demo user create a credit note for the invoice Issue: Additional journal item is created, which cancels out the tax refund. This occurs because in https://github.com/odoo-dev/odoo/commit/5a256af35e5d612efed9ed8af1cf23fd62bd83f4
Original PR description
Activate a second lang (ex French) and set it to the demo user Set "Cash Discount Tax Reduction" to "Always" Create an invoice with tax Set Payment term to "2/7 Net 30" [1] Go to "journal items" tab Early payment discount lines are set correctly Now with the demo user create a credit note for the invoice Issue: Additional journal item is created, which cancels out the tax refund. This occurs because in https://github.com/odoo-dev/odoo/commit/5a256af35e5d612efed9ed8af1cf23fd62bd83f4 we addressed a duplicated key in the `existing` dict with a workaround: we add a translated 'Discount' term to the line name and if we detect it later at tax key creation we change the display_type. Unfortunately this works only if the two operations are performed with the same lang context. [1] Payment terms: 30 Days, 2% Early Payment Discount under 7 days opw-3922267 Forward-Port-Of: odoo/odoo#170058 Forward-Port-Of: odoo/odoo#169881
Commit [1] introduced a way for an editable list view to open the record inside a form view in the current window (adding itself to the breadcrumb) when clicked. It's done by adding a `open_form_view` attribute on the tree node, which then adds automatically a "View" button/action on each tree lines. But there was an unseen issue where when that x2m (tree) field was set as readonly, the button would not be shown, preventing the navigation. [1]: https://github.com/odoo/odoo/commit/258e6a
Original PR description
Commit [1] introduced a way for an editable list view to open the record inside a form view in the current window (adding itself to the breadcrumb) when clicked. It's done by adding a `open_form_view` attribute on the tree node, which then adds automatically a "View" button/action on each tree lines. But there was an unseen issue where when that x2m (tree) field was set as readonly, the button would not be shown, preventing the navigation. [1]: https://github.com/odoo/odoo/commit/258e6a019a21042bf4f6cf70fcce386d37afd50c task-3973116 Forward-Port-Of: odoo/odoo#170106
Have a list view grouped by 2 fields (e.g. Contacts: Salesperson > name). Open a group which contains more groups than the limit (set the groups_limit attribute on the arch if necessary). Next to the name of the group, the total number of records belonging to that group is displayed (e.g. Mitchel Admin (32)). In the group header row, the pager allows to browser the inner **groups**, so the total displayed there is the total number of inner groups in that group (e.g. 1-10 / 31). From that poi
Original PR description
Have a list view grouped by 2 fields (e.g. Contacts: Salesperson > name). Open a group which contains more groups than the limit (set the groups_limit attribute on the arch if necessary). Next to the…
Have a list view grouped by 2 fields (e.g. Contacts: Salesperson > name). Open a group which contains more groups than the limit (set the groups_limit attribute on the arch if necessary). Next to the name of the group, the total number of records belonging to that group is displayed (e.g. Mitchel Admin (32)). In the group header row, the pager allows to browser the inner **groups**, so the total displayed there is the total number of inner groups in that group (e.g. 1-10 / 31). From that point, clicking on a column header to sort by a given field produces a reload, and the group pager is updated with the wrong total: it now displays the number of records, not the number of groups (1-10 / 32 in the example). This commit fixes that issue. The test also hihglighted another issue: when reloaded, we sometimes have to keep former groups that became empty and that weren't returned by the last call to web_read_group (e.g. we drag and dropped the last record from a group to another group). We only do that if search query parameters didn't change. However, we forgot to take the orderBy into account, so when sorting groups, groups that were no longer on the current page were still displayed, with count 0. This commit also fixes that issue. 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#170099
When an image is set to a cover from the website builder, this commit will automatically convert it to webp. task-3761728 Forward-Port-Of: odoo/odoo#169949 Forward-Port-Of: odoo/odoo#156554
Original PR description
When an image is set to a cover from the website builder, this commit will automatically convert it to webp. task-3761728 Forward-Port-Of: odoo/odoo#169949 Forward-Port-Of: odoo/odoo#156554
Previously, the validation error message contained HTML content. This PR converts the error message into plain text. Task-3989829 Forward-Port-Of: odoo/odoo#169733
Original PR description
Previously, the validation error message contained HTML content. This PR converts the error message into plain text. Task-3989829 Forward-Port-Of: odoo/odoo#169733
Improve runtime of `stock.forecasted_product_product._get_report_lines` by reducing total query count, as well as some other minor optimizations. Reduce query count of `_get_report_lines` by: 1.) Introducing and utilizing two new `stock.move` methods, `_rollup_move_dests_fetch` and `_rollup_move_origs_fetch`. (More details below) 2.) Share _prefetch_ids between linked moves. By grouping their prefetching together we will ensure that fewer unnessesary queries will be made. Without doing this
Original PR description
Improve runtime of `stock.forecasted_product_product._get_report_lines` by reducing total query count, as well as some other minor optimizations. Reduce query count of `_get_report_lines` by: 1.)…
Improve runtime of `stock.forecasted_product_product._get_report_lines` by reducing total query count, as well as some other minor optimizations. Reduce query count of `_get_report_lines` by: 1.) Introducing and utilizing two new `stock.move` methods, `_rollup_move_dests_fetch` and `_rollup_move_origs_fetch`. (More details below) 2.) Share _prefetch_ids between linked moves. By grouping their prefetching together we will ensure that fewer unnessesary queries will be made. Without doing this, then for N linked moves there would be at least N queries for each linked move during all the calls to `_get_out_move_reserved_data`. With prefetching we are at least making N/1000 queries, which is much better. Ultimately, it would be most optimal to use `.read` to make only one query up front - but this would likely require a total rework of much of the code in `stock.forecasted_product_product` (as well as modules which inherit from this). Prefetching is much simpler for now, and the gains are good enough to warrant doing it. 3.) Call `fetch` to get the `state` and `quantity` fields from all sibling moves. These could instead be added into the consolidated prefetch_ids. Maybe that is more preferable, but I think `fetch` here is OK because we only need those two fields from the sibling moves. Other minor optimizations include: 1.) Use sets instead of recordsets where it would make sense to do so. Because, when the `in` operator is used, it is more efficient to use set's `in` (O(1)) vs recordset's `in` (O(N)). 2.) Use `._ids` instead of `.ids` where we can get away with it. In places where we are have freshly searched recordsets, there is no possibility for any NewIds to be present. So it should be safe to use `._ids` here, which avoids some extra constant time work that `.ids` would impose. `_rollup_move_x_fetch` (x is dests or origs): These methods are intended to be used to reduce the total number of queries made in situations where you have N moves and you need to call `_rollup_move_x` on all of them. If you do this, for each move you call rollup on, you'd make O(len(P)) queries where P is the longest "path" formed in the tree of moves. Since you do this N times, you'd end up overall with O(N*len(P)) queries. If you call `_rollup_move_x_fetch` on a recordset containing all N moves, it loads all of the moves into the cache that would have to be loaded if you call `_rollup_move_x` on all of them individually. The number of queries `_rollup_move_x_fetch` makes for N records is only O(len(P)), because it is able to traverse the move tree in a breadth first manner for all nodes, loading as many as is possible at each step. Since len(P) is likely to be small for any given database (citation needed), you could effectively consider it constant O(1). Even in the worst case, where all the moves only form a single long path, len(P) will be at most N. Once you then call `_rollup_move_x` on each individual move, because all the moves are already loaded into the cache it will make 0 queries. This leaves us with the following conclusion: `_rollup_move_x` alone is ~O(N) queries, and `_rollup_move_x` with `_rollup_move_x_fetch` beforehand is ~O(1) queries. In the worst case described where len(P)=N, it will degrade to O(N), which would not be any different than before. Benchmarks: In the customer's database locally, (after re-adding `components_availability` and `components_availability_state` to their view, which was removed previously as a work-around): Log line stats for loading the manufacturing order list view: | | # queries | SQL time | Odoo time | total time | |-------------------------|--------------------|------------------|-----------------|-------------------| | before commit | 149128 | 23.736 s | 46.842 s | 70.578 s | | after commit | 144 | 0.914 s | 11.335 s | 12.249 s | | | | | | | | % improvement | ~915x fewer | ~26x faster | ~4x faster | ~5.7x faster | Before and after commit pretty much all of the Odoo time of the request is spent in `_get_report_lines`, so I don't think it's necessary to provide benchmarks seperately for this function. Help Ticket # to see also which exhibit this issue: 3818495 3918816 3920584 3935316 opw-3769280 Forward-Port-Of: odoo/odoo#167806
Before commit: To reproduce the error: A device may send non-JSON data to the IoT controller, or the CDN might return an error in a non-JSON format. We just get a very non-explicit error: "Expecting value: line 1 column 1 (char 0)". After commit: We add a catch for non-JSON data and log the error along with the incorrect data to have more information. opw-3876631 Forward-Port-Of: odoo/odoo#169938
Original PR description
Before commit: To reproduce the error: A device may send non-JSON data to the IoT controller, or the CDN might return an error in a non-JSON format. We just get a very non-explicit error: "Expecting value: line 1 column 1 (char 0)". After commit: We add a catch for non-JSON data and log the error along with the incorrect data to have more information. opw-3876631 Forward-Port-Of: odoo/odoo#169938
Incorporate Andrea Manenti (maneandrea) as Vauxoo's contributor. I confirm I have signed the CLA and read the PR guidelines at http://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170040
Original PR description
Incorporate Andrea Manenti (maneandrea) as Vauxoo's contributor. I confirm I have signed the CLA and read the PR guidelines at http://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170040
opw-3858298 Forward-Port-Of: odoo/odoo#169975
Original PR description
opw-3858298 Forward-Port-Of: odoo/odoo#169975
### Steps to reproduce the issue: 1. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 2. Click on "Follow up" 3. Open the template in the Content Template field 4. Empty the To (Partners) field in this template 5. Save and close 6. Close the Follow Up and reopen it 5. There is no address in the field ### Explanation: With previous fix, we removed the `default_get` value but did not add a default one in the compute. ### Suggested fix: The default v
Original PR description
### Steps to reproduce the issue: 1. Go to _Accounting > Customers > Follow-up Reports_ select one of the reports 2. Click on "Follow up" 3. Open the template in the Content Template field 4. Empty the To (Partners) field in this template 5. Save and close 6. Close the Follow Up and reopen it 5. There is no address in the field ### Explanation: With previous fix, we removed the `default_get` value but did not add a default one in the compute. ### Suggested fix: The default value will be the same as the one previously in `default_get`. The purpose is to restore the previous workflow and then add the template's values. opw-3878125 Forward-Port-Of: odoo/enterprise#65038 Forward-Port-Of: odoo/enterprise#64902
Resolve issue when having a positive equity capital in the chosen report year and having a negative equity capital in the latest comparison period. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#64748
Original PR description
Resolve issue when having a positive equity capital in the chosen report year and having a negative equity capital in the latest comparison period. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#64748
This commit fixes an issue where the retweeted message would only display a part of the retweeted message while twitter displays it in full. This is a limitation of the Twitter API which only sends a limited part of the tweet. To fix this, we are setting the message value to the text of the referenced tweet. task-3653108 Forward-Port-Of: odoo/enterprise#59579 Forward-Port-Of: odoo/enterprise#55642
Original PR description
This commit fixes an issue where the retweeted message would only display a part of the retweeted message while twitter displays it in full. This is a limitation of the Twitter API which only sends a limited part of the tweet. To fix this, we are setting the message value to the text of the referenced tweet. task-3653108 Forward-Port-Of: odoo/enterprise#59579 Forward-Port-Of: odoo/enterprise#55642
Versions -------- - 15.0+ Steps ----- 1. Sync with Google Calendar; 2. create a recurrent all day event in google calendar; 3. make sure it shows as "busy"; 4. make an appointment via website on that day. Issue ----- You are allowed to make an appointment on slots that overlap the synced event. Cause ----- Recurrent day events synced via Google Calendar have their start & end date equal to each other, so the event's "end date" could be 24 hours before the actual end. Commi
Original PR description
Versions -------- - 15.0+ Steps ----- 1. Sync with Google Calendar; 2. create a recurrent all day event in google calendar; 3. make sure it shows as "busy"; 4. make an appointment via website on that…
Versions -------- - 15.0+ Steps ----- 1. Sync with Google Calendar; 2. create a recurrent all day event in google calendar; 3. make sure it shows as "busy"; 4. make an appointment via website on that day. Issue ----- You are allowed to make an appointment on slots that overlap the synced event. Cause ----- Recurrent day events synced via Google Calendar have their start & end date equal to each other, so the event's "end date" could be 24 hours before the actual end. Commit ad4219876cee4f4b996a7cc72fd176b51be3a063 added an the `_slot_availability_prepare_values_meetings` method, optimized to not include conditions on `start_date` and `allday`. Instead, it filters event by date ranges. In our scenario, an `allday` event with start & end dates set to something like `2022-02-14 00:00:00`, may get excluded from the search when this is also the value of the starting point of the search, due to `stop` not being strictly greater than the starting point. Solution -------- Do an inclusive range search instead of an exclusive one. opw-3793009 Forward-Port-Of: odoo/enterprise#65023 Forward-Port-Of: odoo/enterprise#63761
This PR update the Demo Campaign Double Opt-in's Trigger Value to 0 Hour, so that subscribers of a newsletter get a close-to instant confirmation instead of an hour later. Task-3976448 Forward-Port-Of: odoo/enterprise#64998
Original PR description
This PR update the Demo Campaign Double Opt-in's Trigger Value to 0 Hour, so that subscribers of a newsletter get a close-to instant confirmation instead of an hour later. Task-3976448 Forward-Port-Of: odoo/enterprise#64998
Added support for currency_rate from the world oldest central bank, Sveriges Riksbank. Forward-Port-Of: odoo/enterprise#64344
Original PR description
Added support for currency_rate from the world oldest central bank, Sveriges Riksbank. Forward-Port-Of: odoo/enterprise#64344
Issue: ====== Sign items are in english in sign Steps to reproduce the issue: ============================= - Create a user with Finnish language (or any other) - Create a sign request and add a date sign item - Send it to the Finnish customer - Open the link - The date doesn't fill automatically and the placeholders are all in english Origin of the issue: ==================== We don't use the language of the partner when fetching the sign items. The date field doesn't fill autom
Original PR description
Issue:
======
Sign items are in english in sign
Steps to reproduce the issue:
=============================
- Create a user with Finnish language (or any other)
- Create a sign request and add a date sign item
- Send it to the Finnish customer
- Open the link
- The date doesn't fill automatically and the placeholders are all in english
Origin of the issue:
====================
We don't use the language of the partner when fetching the sign items. The date field doesn't fill automatically is a consequence of this because we check `type.name === _t("Date")` but we have `type.name` in english and not the lang of the partner so we don't go into the condition to add the automatic fill for the date field here [1].
[1]: https://github.com/odoo/enterprise/blob/15.0/sign/static/src/js/sign_common.js#L1646
opw-3871779
Forward-Port-Of: odoo/enterprise#64950
Forward-Port-Of: odoo/enterprise#61744Forward-Port-Of: odoo/enterprise#64930 Forward-Port-Of: odoo/enterprise#62136
Original PR description
Forward-Port-Of: odoo/enterprise#64930 Forward-Port-Of: odoo/enterprise#62136
# How to reproduce - Create product: P1, storable | tracked by lot | barcode set - Create Receipt for 2 units of P1 - In barcode App: - Scan product "P1" - Scan lot "lot1" - Scan lot "lot2" - Select line with "lot1" - Scan dest location "2601892" (Stock/Shelf1 in runbot) => New line created for P1 with quantity 0 https://github.com/odoo/enterprise/assets/29302288/2892a5dc-43e7-4437-9eb7-c079d1b2f807 The selected line is always done first. Usually the selected line
Original PR description
# How to reproduce - Create product: P1, storable | tracked by lot | barcode set - Create Receipt for 2 units of P1 - In barcode App: - Scan product "P1" - Scan lot "lot1" - Scan lot "lot2" - Select…
# How to reproduce
- Create product: P1, storable | tracked by lot | barcode set
- Create Receipt for 2 units of P1
- In barcode App:
- Scan product "P1"
- Scan lot "lot1"
- Scan lot "lot2"
- Select line with "lot1"
- Scan dest location "2601892" (Stock/Shelf1 in runbot)
=> New line created for P1 with quantity 0
https://github.com/odoo/enterprise/assets/29302288/2892a5dc-43e7-4437-9eb7-c079d1b2f807
The selected line is always done first.
Usually the selected line is the last one without reserved quantity, it is not split, and we steal the reserved quantity of the sibling.
However, if the line with incomplete reserved quantity is done first, then it is split. When the next line is done, it steals quantity from the created line, leaving it with reserved_uom_qty = 0 and qty_done = 0.
---
To fix this issue, we assign the reserved quantity from the sibling on all lines before changing the dest location and doing a split.
OPW-3942171
Forward-Port-Of: odoo/enterprise#64592- When clicking on an account that hasn't been mapped, the help message shown in the tree view contained HTML code (tags explicitly shown). - We fix that by directly executing the action returned by the server, which then gets the proper markup and properly interprets the returned HTML code. task: 3715833 Forward-Port-Of: odoo/enterprise#65026 Forward-Port-Of: odoo/enterprise#63376
Original PR description
- When clicking on an account that hasn't been mapped, the help message shown in the tree view contained HTML code (tags explicitly shown). - We fix that by directly executing the action returned by the server, which then gets the proper markup and properly interprets the returned HTML code. task: 3715833 Forward-Port-Of: odoo/enterprise#65026 Forward-Port-Of: odoo/enterprise#63376