Tuesday, April 14, 2020
40 changes · master
Enhancements to existing features
Guided tour tips now behave more reliably when users move around page elements, edit text areas, or need to scroll to continue. This improves onboarding and in-app guidance by reducing confusing tip flicker, missed updates, and unclear next steps.
The Purchase app now includes an onboarding walkthrough that helps new users create their first purchase order. When Inventory is installed, the guidance also continues through the first receipt process, helping users get started faster with fewer setup questions.
Original PR description
Improve onboarding and guide first clicks of users in the purchase application, to create a purchase order. In case Stock module is installed, it will also guide the users through the receipt first clicks process. Task ID 2219988 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes redundant internal settings from CRM, Events, and related website modules. It keeps existing record-copying behavior the same while simplifying maintenance and reducing unnecessary configuration.
Original PR description
PURPOSE Editable stored fields are copy by default if their base field allow it (char, integer, ...).Purpose of this Commit is to remove unnecessary copy=True statement added when using stored editable fields. SPECIFICATIONS All unnecessary copy=True statements are removed from the crm, event and its dependent modules as Editable stored fields are copy by default if their base field allow it (char, integer, etc). PR #49029 Task 2225253 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now includes a reusable popover component for the web interface, making it easier to add contextual pop-up content consistently. This reduces development friction and helps teams build interactive interface elements with tested, shared behavior.
Original PR description
Using bootstrap popover with owl is possible, but with a lot of friction. This commit adds a Popover element to ease developments that require a popover. This component takes 3 props: - position='bottom' (optional): 'top', 'bottom', 'left', 'right' - title (optional) - target: HTMLElement towards which the popover points Adapted from [this gist](https://gist.github.com/elclanrs/bb719c17504e5d9b3ec985def050a041). ### TODO for this PR (in order): 1. [x] validate interface with framework team 2. [x] check if @kebeclibre's use-case can leverage this component as-is or if modifications are necessary 3. [x] add tests once the interface is well defined
Studio now temporarily blocks the screen while a new field is being created, preventing users from making conflicting edits during the wait. This reduces the chance of broken or unintended customizations when field creation takes several seconds.
Original PR description
PURPOSE Studio takes too much time to create fields. It took ~6sec on the runbot to add a text field to the res.partner formview! During this time, the UI is still available. Making it way too easy for the user to mess up his customization. The purpose of this task is to prevent that by 'blocking' the UI while the system is working. This is already happening when renaming a field, let's do the same for field creation. SPEC Block the UI during field creation with Studio. In the same way it is blocked when renaming a field. TASK 2221093
Opening bank statement lines in the reconciliation widget is faster because the system now avoids slow database lookups with very large account lists. This reduces waiting time for accounting users when matching bank transactions, especially on large databases.
Original PR description
The method `get_move_lines_for_bank_statement_line` was taking too much time to be executed. After analysis, the following query was executed in 1,162s on our production ```sql SELECT…
The method `get_move_lines_for_bank_statement_line` was taking too much time to be executed.
After analysis, the following query was executed in 1,162s on our production
```sql
SELECT "account_move_line".id FROM "account_move" as "account_move_line__move_id","account_move_line"
WHERE ("account_move_line"."move_id"="account_move_line__move_id"."id") AND (((((((("account_move_line"."statement_line_id" IS NULL AND ("account_move_line"."account_id" in ({2 ids}))) AND "account_move_line"."payment_id" IS NOT NULL) AND ("account_move_line"."balance" != 0.0)) OR ((("account_move_line"."reconciled" IS NULL or "account_move_line"."reconciled" = false ) AND ("account_move_line"."account_id" in ({278 ids}))) AND ("account_move_line"."balance" != 0.0))) AND ("account_move_line"."account_id" in ({2455 ids}))) AND ("account_move_line"."company_id" = 3)) AND ((("account_move_line__move_id"."state" = 'draft') AND FALSE) OR (("account_move_line__move_id"."state" not in ('draft','cancel')) OR "account_move_line__move_id"."state" IS NULL))) AND ("account_move_line"."date" >= '2020-01-01'))
ORDER BY ("account_move_line".debit - "account_move_line".credit) = -97061.67 DESC,
"account_move_line".date_maturity ASC,
"account_move_line".id ASC
LIMIT 15
```
This query is run twice every time we open a new bank statement line in the bank reconciliation widget.
While this query looks simple enough, there are 2 `IN` filters that take a long time to compute with long lists of ids. This is because the query is built with `Model._where_calc(domain)`.
A solution to speedup this query is to make the query by hand to avoid the id lists made by the ORM.
I my tests (not on the prod), the changes made here made the time go from 2.45s to 0.3s for the same query.The uninstall wizard for Studio now only shows a customization warning when actual Studio customizations exist. This avoids alarming users when removing Studio from a database where no customizations were made.
Original PR description
Currently, when you uninstall web_studio that time customization warning appear in wizard even if there is no customization made in the studio In this commit, We improve that Customization warning should only be displayed if you've actually done at least one customization - if all values are 0, there's no need to display it in the wizard. task - 2232923
Resolved issues and error corrections
This fixes an issue in manufacturing where users could not quickly create a production lot from the produce wizard for components because the company was not set correctly. The change ensures the correct default company is applied, making the production workflow smoother and avoiding a blocking error.
Original PR description
Before this, unable to quick create production lot from produce wizard in components, as default company was not set correctly. Fixes-2234784 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
Code cleanup and technical improvements
The accounting app code and screen definitions were split from very large files into smaller, focused files. This does not introduce new business features, but it should make future accounting updates easier to maintain and reduce development risk over time.
Original PR description
-- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Request for contribution -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#49439
Original PR description
Request for contribution -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#49439
When users switch from a regular list view into Studio's list view editor, any grouping from the original list view is now cleared. This prevents confusing grouped layouts in Studio and makes editing list views more predictable.
Original PR description
PURPOSE when we switch from list view to studio list view, then groupby of list view should not apply in the list view of studio. SPECIFICATIONS remove group by from the studio list view. LINKS PR https://github.com/odoo/enterprise/pull/9828 Task 2235226
This update fixes several issues in the data cleaning process and adds dedicated tests to help prevent future regressions. Businesses benefit from more consistent cleaning suggestions, better handling of formatted content, and improved reliability when company or country details affect displayed values.
Original PR description
Add tests for data_cleaning
This update reorganizes and cleans CRM and Sales Team setup, demo data, menus, and tests to make future sales team membership improvements easier to deliver. It has little direct impact on daily users, but improves maintainability and reduces the risk of issues in upcoming changes.
Original PR description
PURPOSE Prepare enhancements of sales team membership. SPECIFICATIONS Lint crm data and demo, notably about sales team and file organization. Also move crm menu entries declaration in a single file and remove some menu entries not imported anymore. Lint sales_team module. Linting containing * reorder fields according to their use; * order methods according to guidelines (compute, CRUD, actions, tools); * fix some docstrings and typos; * remove unused imports and dead code; * rename files according to guidelines; * move views in their own file for mail.activity and assets; * correctly name data and demo files; * rename some inner methods to ease understanding; Clean sales team tests and extract common test data from crm LINKS Task ID 2086889 (sales team enhancements) Task ID 2234698 (preparation lint) Community PR #49520
Description of the issue/feature this PR addresses: To fix the date to iso format to keep serializable Current behavior before PR: I have this error in the portal ``` File \"/usr/lib/python3.5/json/encoder.py\", line 179, in default raise TypeError(repr(o) + \" is not JSON serializable\") TypeError: datetime.date(2019, 12, 4) is not JSON serializable", "perf_info": "- - -"} ``` -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Fo
Original PR description
Description of the issue/feature this PR addresses:
To fix the date to iso format to keep serializable
Current behavior before PR:
I have this error in the portal
```
File \"/usr/lib/python3.5/json/encoder.py\", line 179, in default
raise TypeError(repr(o) + \" is not JSON serializable\")
TypeError: datetime.date(2019, 12, 4) is not JSON serializable", "perf_info": "- - -"}
```
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#48569
Forward-Port-Of: odoo/odoo#41323Add clementmbr to Akretion corporation CLA. Forward-Port-Of: odoo/odoo#49459
Original PR description
Add clementmbr to Akretion corporation CLA. Forward-Port-Of: odoo/odoo#49459
PURPOSE: currently, in system if any field has many2many_tags_email widget then user can only insert 40 recipients. You're unable to add more than 40 records. SPEC: We have added the condition for "many2many_tags_email" widget in _setSubViewLimit function in form_view to achieve the limit issue. Task : 2091027 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#49226 Forward-Port-Of: odoo/odoo#47492
Original PR description
PURPOSE: currently, in system if any field has many2many_tags_email widget then user can only insert 40 recipients. You're unable to add more than 40 records. SPEC: We have added the condition for "many2many_tags_email" widget in _setSubViewLimit function in form_view to achieve the limit issue. Task : 2091027 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#49226 Forward-Port-Of: odoo/odoo#47492
Ensure that the currency of a line always matches the currency of its order; indeed, with the previous depends, changing the currency of an order (through its pricelist) would not trigger the recompute of the SO line's currency. Was initially fixed in 2dfc0ea8c then reverted at 34e679598 for breaking a test. I'd rather have the fix and adapt the test though, since this breaks excpected relations. Closes #48156 Forward-Port-Of: odoo/odoo#48184 Forward-Port-Of: odoo/odoo#48164
Original PR description
Ensure that the currency of a line always matches the currency of its order; indeed, with the previous depends, changing the currency of an order (through its pricelist) would not trigger the recompute of the SO line's currency. Was initially fixed in 2dfc0ea8c then reverted at 34e679598 for breaking a test. I'd rather have the fix and adapt the test though, since this breaks excpected relations. Closes #48156 Forward-Port-Of: odoo/odoo#48184 Forward-Port-Of: odoo/odoo#48164
External addons (such as the POS) can create entries and end up bypassing the `_check_balanced` in the whole process. We force a check at posting, since at this point there is no reason to have an unbalanced entry anymore. opw-2168096 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#48745
Original PR description
External addons (such as the POS) can create entries and end up bypassing the `_check_balanced` in the whole process. We force a check at posting, since at this point there is no reason to have an unbalanced entry anymore. opw-2168096 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#48745 Forward-Port-Of: odoo/odoo#48484
Some bits of code still use old variable. Forward-Port-Of: odoo/odoo#49462
Original PR description
Some bits of code still use old variable. Forward-Port-Of: odoo/odoo#49462
Standard new_test_user tool allowing to speedup user creation in tests may cause issues if reset password is involved as there is a savepoint done. Mail has an improved helper allowing to avoid that. Forward-Port-Of: odoo/odoo#49485
Original PR description
Standard new_test_user tool allowing to speedup user creation in tests may cause issues if reset password is involved as there is a savepoint done. Mail has an improved helper allowing to avoid that. Forward-Port-Of: odoo/odoo#49485
Minor improvements/fixes: - Prevent overlap of 'o_view_nocontent' (when there are no relevant records) with kpis table in list/kanban views on small screens/windows. - Create separate list views to prevent kpis table appearing in appropriate situations (e.g. action windows showing linkages between purchase orders and other models.) - Override bootstrap styling that was making kpi table wider than the width of the window in list view. Task: 22
Original PR description
Minor improvements/fixes:
- Prevent overlap of 'o_view_nocontent' (when there are no relevant
records) with kpis table in list/kanban views on small screens/windows.
- Create separate list views to prevent kpis table appearing in
appropriate situations (e.g. action windows showing linkages between
purchase orders and other models.)
- Override bootstrap styling that was making kpi table wider than the
width of the window in list view.
Task: 2228175
Forward-Port-Of: odoo/odoo#49051When unbuilding a manufacturing order, there are fields in the default unbuild form that do not make sense to show (i.e. they already correspond to the manufacturing order that is triggering the unbuild). Therefore we make a simplified version of this form that is better suited for a button generated window. This change includes removing the resetting of 'location_id' and 'location_dest_id' when they correspond to the 'company_id' by onchange function since this would overwrite any 'def
Original PR description
When unbuilding a manufacturing order, there are fields in the default unbuild form that do not make sense to show (i.e. they already correspond to the manufacturing order that is triggering the unbuild). Therefore we make a simplified version of this form that is better suited for a button generated window. This change includes removing the resetting of 'location_id' and 'location_dest_id' when they correspond to the 'company_id' by onchange function since this would overwrite any 'default_location_id' and 'location_dest_id' values when calling the view + this seemed like it would be annoying if someone clicks on the same 'company_id' within the dropdown and their location values changed. Task: 2234872 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#49421
Bug === We can not share a text with the "share content popover" widget if the text contains a single quote ('). Task-2223641 Forward-Port-Of: odoo/odoo#49391 Forward-Port-Of: odoo/odoo#48260
Original PR description
Bug
===
We can not share a text with the "share content popover" widget
if the text contains a single quote (').
Task-2223641
Forward-Port-Of: odoo/odoo#49391
Forward-Port-Of: odoo/odoo#48260When computing `quantity_done` in an onchange, `move.id` is a `NewId`, not an `int`. However, the `read_group` call returns regular integers for `move_id`. Consequently, `rec.get(move.id, [])` is an empty list. 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#49322
Original PR description
When computing `quantity_done` in an onchange, `move.id` is a `NewId`, not an `int`. However, the `read_group` call returns regular integers for `move_id`. Consequently, `rec.get(move.id, [])` is an empty list. 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#49322
This commit fixes the kanban view to render components. Before this commit, when rendering a component an error was thrown. Forward-Port-Of: odoo/odoo#49287
Original PR description
This commit fixes the kanban view to render components. Before this commit, when rendering a component an error was thrown. Forward-Port-Of: odoo/odoo#49287
- Create a product P using one component C - The BOM is flexible - Create a MO for 10 units - Product 9 units, but use all components - Post the inventory The MO is considered as done, while it should remain in progress. This happens because the MO state is computed based on the move raw state. In this case, it should compare the quantity produced and the quantity to produce. The material availability is set to `False`. opw-2220855 Forward-Port-Of: odoo/odoo#49482 Forward-Port
Original PR description
- Create a product P using one component C - The BOM is flexible - Create a MO for 10 units - Product 9 units, but use all components - Post the inventory The MO is considered as done, while it should remain in progress. This happens because the MO state is computed based on the move raw state. In this case, it should compare the quantity produced and the quantity to produce. The material availability is set to `False`. opw-2220855 Forward-Port-Of: odoo/odoo#49482 Forward-Port-Of: odoo/odoo#49247
For all the purchase cash basis taxes: The account 445800 must be used as cash_basis_transition_account_id The account 445660 must be used in distribution of the tax Wrong minus_report_line_ids and plus_report_line_ids were set for these taxes opw:2230288 Forward-Port-Of: odoo/odoo#49338
Original PR description
For all the purchase cash basis taxes: The account 445800 must be used as cash_basis_transition_account_id The account 445660 must be used in distribution of the tax Wrong minus_report_line_ids and plus_report_line_ids were set for these taxes opw:2230288 Forward-Port-Of: odoo/odoo#49338
Following https://github.com/odoo/odoo/pull/44393 Delete the qweb template `web.styles_company_report` Recompute company specific style by going into Settings > Configure Document Layout > change stuff and save Print a report, in HTML to get an human readable error (PDF rendering would just ignore the error) Before this commit, there was an error "could not get asset content" This was because the css asset created in db had a value of type string whereas it should have been the same
Original PR description
Following https://github.com/odoo/odoo/pull/44393 Delete the qweb template `web.styles_company_report` Recompute company specific style by going into Settings > Configure Document Layout > change stuff and save Print a report, in HTML to get an human readable error (PDF rendering would just ignore the error) Before this commit, there was an error "could not get asset content" This was because the css asset created in db had a value of type string whereas it should have been the same type as b64decode (which is byte-like) After this commit, there is no error at rendering time closes #49456 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#49502
As vat field is synced between the parent (commercial entity) and the children, we should only check the consistency between the vat number and country code on the parent record. Description of the issue/feature this PR addresses: opw-2232223 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#49428
Original PR description
As vat field is synced between the parent (commercial entity) and the children, we should only check the consistency between the vat number and country code on the parent record. Description of the issue/feature this PR addresses: opw-2232223 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#49428
Install Accounting(account_accountant), Inventory (stock) 1. Create a new user [DEMO] with the next access: - Accounting: Advisor - Administration: Settings 2. With the user [DEMO] , go to Accounting>Configuration>Settings and change any value. 3. Try to save the settings. Access error will occur "Sorry, you are not allowed to modify documents of type 'Picking Type' (stock.picking.type)..." This occur because when stock is installed an override in 'execute' make the backend check for
Original PR description
Install Accounting(account_accountant), Inventory (stock) 1. Create a new user [DEMO] with the next access: - Accounting: Advisor - Administration: Settings 2. With the user [DEMO] , go to Accounting>Configuration>Settings and change any value. 3. Try to save the settings. Access error will occur "Sorry, you are not allowed to modify documents of type 'Picking Type' (stock.picking.type)..." This occur because when stock is installed an override in 'execute' make the backend check for multi locations, packaging or tracking settings and activate show_operation on stock.picking.type causing the access error for unprivileged users Calling the write with sudo solve the issue opw-2233193 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#49536
Since 384dab8fb274425e06543b05c1c29b70a3ad2570, it's impossible to post an invoice when using the Colombian accounting and the Colombian Localization for EDI documents UBL 2.1 module. opw-2235173 Forward-Port-Of: odoo/enterprise#9871
Original PR description
Since 384dab8fb274425e06543b05c1c29b70a3ad2570, it's impossible to post an invoice when using the Colombian accounting and the Colombian Localization for EDI documents UBL 2.1 module. opw-2235173 Forward-Port-Of: odoo/enterprise#9871
It can happen that some informations are not available. We should not crash in such case and use default values instead. opw-2230986 Forward-Port-Of: odoo/enterprise#9866
Original PR description
It can happen that some informations are not available. We should not crash in such case and use default values instead. opw-2230986 Forward-Port-Of: odoo/enterprise#9866
… exists Before this commit, if a predefined package was chosen, the parcel dimensions of the package, even if mentioned, were not sent to easypost. Now, if the predefined package is used, and the parcel dimensions of the package are set, the parcel dimensions are also sent to easypost. opw-2209365 Forward-Port-Of: odoo/enterprise#9865 Forward-Port-Of: odoo/enterprise#9843
Original PR description
… exists Before this commit, if a predefined package was chosen, the parcel dimensions of the package, even if mentioned, were not sent to easypost. Now, if the predefined package is used, and the parcel dimensions of the package are set, the parcel dimensions are also sent to easypost. opw-2209365 Forward-Port-Of: odoo/enterprise#9865 Forward-Port-Of: odoo/enterprise#9843
This line needs to be computed using the whole accounting history. It shouldn't always reflect the amount of the profit & loss. Unaffected results from previous fiscal years should be manually moved to Remanente account, but if it isn't done, they are expected to stay in this line. (For the record, this is pretty much what is done in Belgium as well) Forward-Port-Of: odoo/enterprise#9753 Forward-Port-Of: odoo/enterprise#9719
Original PR description
This line needs to be computed using the whole accounting history. It shouldn't always reflect the amount of the profit & loss. Unaffected results from previous fiscal years should be manually moved to Remanente account, but if it isn't done, they are expected to stay in this line. (For the record, this is pretty much what is done in Belgium as well) Forward-Port-Of: odoo/enterprise#9753 Forward-Port-Of: odoo/enterprise#9719
PURPOSE When a blank report (basic layout without header/footer) is created, there is no page break between records and it looks messy when multiple records are selected for reporting. By this commit, this issue has been solved. LINK task - 2178219 Forward-Port-Of: odoo/enterprise#9363
Original PR description
PURPOSE When a blank report (basic layout without header/footer) is created, there is no page break between records and it looks messy when multiple records are selected for reporting. By this commit, this issue has been solved. LINK task - 2178219 Forward-Port-Of: odoo/enterprise#9363
Fix various errors that made the tests fail. First, a country needs to be defined for the test company, as it is a requirement for taxes. Then, add a further filter for accounts, journals and analytic accounts on the current company, as otherwise it would mix up accounts and journals of other existing companies in the database and the resulting data would be incompatible. Forward-Port-Of: odoo/enterprise#9832
Original PR description
Fix various errors that made the tests fail. First, a country needs to be defined for the test company, as it is a requirement for taxes. Then, add a further filter for accounts, journals and analytic accounts on the current company, as otherwise it would mix up accounts and journals of other existing companies in the database and the resulting data would be incompatible. Forward-Port-Of: odoo/enterprise#9832
There are two test failures as of this commit, one due to an incorrect field name being set in the creation of an invoice, and the other due to the invoicing of products with invoice policies set by default to 'on delivered', but to correctly invoice the amount of the products without validating the delivery, they have to be set to 'on ordered'. Forward-Port-Of: odoo/enterprise#9841
Original PR description
There are two test failures as of this commit, one due to an incorrect field name being set in the creation of an invoice, and the other due to the invoicing of products with invoice policies set by default to 'on delivered', but to correctly invoice the amount of the products without validating the delivery, they have to be set to 'on ordered'. Forward-Port-Of: odoo/enterprise#9841
Forward-Port-Of: odoo/enterprise#9418 Forward-Port-Of: odoo/enterprise#9410
Original PR description
Forward-Port-Of: odoo/enterprise#9418 Forward-Port-Of: odoo/enterprise#9410
during installation there is trackback for button tag is not present in parent view with name 'action_view_invoices'. actually this button is added in parent view but both views have same priority. so both are affected on same time on parent view. because of this reason in which view this button is used as xpath is giving error that, button is not present in view. after this commit this issue is solved. we have decrease the priority of view which has define the button. task-2230174
Original PR description
during installation there is trackback for button tag is not present in parent view with name 'action_view_invoices'. actually this button is added in parent view but both views have same priority. so both are affected on same time on parent view. because of this reason in which view this button is used as xpath is giving error that, button is not present in view. after this commit this issue is solved. we have decrease the priority of view which has define the button. task-2230174 Forward-Port-Of: odoo/enterprise#9651
- Go to Field Service - Open a task without worksheet - Duplicate the browser tab - On tab 1, click on 'Worksheet' - On tab 2, click on 'Worksheet' and save - Save on tab 2 - Go back to the task - Click on 'Worksheet Completed' An error arises because 2 worksheets are linked to the same task, while only one is expected. There is no constraint preventing such a situation, therefore we add one. opw-2230013 Forward-Port-Of: odoo/enterprise#9742 Forward-Port-Of: odoo/enterprise#97
Original PR description
- Go to Field Service - Open a task without worksheet - Duplicate the browser tab - On tab 1, click on 'Worksheet' - On tab 2, click on 'Worksheet' and save - Save on tab 2 - Go back to the task - Click on 'Worksheet Completed' An error arises because 2 worksheets are linked to the same task, while only one is expected. There is no constraint preventing such a situation, therefore we add one. opw-2230013 Forward-Port-Of: odoo/enterprise#9742 Forward-Port-Of: odoo/enterprise#9702