From 35a27101c1a9c4e6e7642b7a6835040fdbcbd0dc Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Mon, 12 May 2025 11:18:47 +0530 Subject: [PATCH] fix: error if section is removed and saved --- .../doctype/crm_fields_layout/crm_fields_layout.py | 4 +++- frontend/src/components/FieldLayoutEditor.vue | 12 ++++++------ frontend/src/pages/Lead.vue | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/crm/fcrm/doctype/crm_fields_layout/crm_fields_layout.py b/crm/fcrm/doctype/crm_fields_layout/crm_fields_layout.py index f6aaae7e..1fd85824 100644 --- a/crm/fcrm/doctype/crm_fields_layout/crm_fields_layout.py +++ b/crm/fcrm/doctype/crm_fields_layout/crm_fields_layout.py @@ -27,7 +27,9 @@ def get_fields_layout(doctype: str, type: str, parent_doctype: str | None = None if not tabs and type != "Required Fields": tabs = get_default_layout(doctype) - has_tabs = tabs[0].get("sections") if tabs and tabs[0] else False + has_tabs = False + if isinstance(tabs, list) and len(tabs) > 0 and isinstance(tabs[0], dict): + has_tabs = any("sections" in tab for tab in tabs) if not has_tabs: tabs = [{"name": "first_tab", "sections": tabs}] diff --git a/frontend/src/components/FieldLayoutEditor.vue b/frontend/src/components/FieldLayoutEditor.vue index 8804b920..df8287db 100644 --- a/frontend/src/components/FieldLayoutEditor.vue +++ b/frontend/src/components/FieldLayoutEditor.vue @@ -277,13 +277,13 @@ const fields = createResource({ ] let existingFields = [] - for (let tab of props.tabs) { - for (let section of tab.sections) { - for (let column of section.columns) { + props.tabs?.forEach((tab) => { + tab.sections?.forEach((section) => { + section.columns?.forEach((column) => { existingFields = existingFields.concat(column.fields) - } - } - } + }) + }) + }) return data.filter((field) => { return ( diff --git a/frontend/src/pages/Lead.vue b/frontend/src/pages/Lead.vue index 43ca246a..8e68756e 100644 --- a/frontend/src/pages/Lead.vue +++ b/frontend/src/pages/Lead.vue @@ -706,10 +706,10 @@ const dealTabs = createResource({ auto: true, transform: (_tabs) => { let hasFields = false - let parsedTabs = _tabs.forEach((tab) => { - tab.sections.forEach((section) => { - section.columns.forEach((column) => { - column.fields.forEach((field) => { + let parsedTabs = _tabs?.forEach((tab) => { + tab.sections?.forEach((section) => { + section.columns?.forEach((column) => { + column.fields?.forEach((field) => { hasFields = true if (field.fieldname == 'status') { field.fieldtype = 'Select'