From 3c865c37a7296ef481b1c71f4edeaff38f8f055a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Fri, 21 Feb 2025 14:49:39 +0530 Subject: [PATCH] fix: set type based on onlyRequired flag --- crm/api/doc.py | 5 ++++- frontend/src/components/FieldLayoutEditor.vue | 5 +++++ frontend/src/components/Modals/QuickEntryModal.vue | 13 ++++++++++--- frontend/src/pages/Lead.vue | 1 + 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/crm/api/doc.py b/crm/api/doc.py index a8627584..8caf0d04 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -537,7 +537,7 @@ def get_records_based_on_order(doctype, rows, filters, page_length, order): @frappe.whitelist() -def get_fields_meta(doctype, restricted_fieldtypes=None, as_array=False): +def get_fields_meta(doctype, restricted_fieldtypes=None, as_array=False, only_required=False): not_allowed_fieldtypes = [ "Tab Break", "Section Break", @@ -572,6 +572,9 @@ def get_fields_meta(doctype, restricted_fieldtypes=None, as_array=False): if not restricted_fieldtypes or field.get("fieldtype") not in restricted_fieldtypes: fields.append(field) + if only_required: + fields = [field for field in fields if field.get("reqd")] + if as_array: return fields diff --git a/frontend/src/components/FieldLayoutEditor.vue b/frontend/src/components/FieldLayoutEditor.vue index 5dcff8e5..8804b920 100644 --- a/frontend/src/components/FieldLayoutEditor.vue +++ b/frontend/src/components/FieldLayoutEditor.vue @@ -226,6 +226,10 @@ import { ref, computed, watch } from 'vue' const props = defineProps({ tabs: Object, doctype: String, + onlyRequired: { + type: Boolean, + default: false, + }, }) const tabIndex = ref(0) @@ -249,6 +253,7 @@ const params = computed(() => { doctype: props.doctype, restricted_fieldtypes: restrictedFieldTypes, as_array: true, + only_required: props.onlyRequired, } }) diff --git a/frontend/src/components/Modals/QuickEntryModal.vue b/frontend/src/components/Modals/QuickEntryModal.vue index ec237520..7c3af8a8 100644 --- a/frontend/src/components/Modals/QuickEntryModal.vue +++ b/frontend/src/components/Modals/QuickEntryModal.vue @@ -35,6 +35,7 @@ v-if="!preview" :tabs="tabs.data" :doctype="_doctype" + :onlyRequired="onlyRequired" /> @@ -55,6 +56,10 @@ const props = defineProps({ type: String, default: 'CRM Lead', }, + onlyRequired: { + type: Boolean, + default: false, + }, }) const show = defineModel() @@ -64,12 +69,13 @@ const dirty = ref(false) const preview = ref(false) function getParams() { - return { doctype: _doctype.value, type: 'Quick Entry' } + let type = props.onlyRequired ? 'Required Fields' : 'Quick Entry' + return { doctype: _doctype.value, type } } const tabs = createResource({ url: 'crm.fcrm.doctype.crm_fields_layout.crm_fields_layout.get_fields_layout', - cache: ['QuickEntryModal', _doctype.value], + cache: ['QuickEntryModal', _doctype.value, props.onlyRequired], params: getParams(), onSuccess(data) { tabs.originalData = JSON.parse(JSON.stringify(data)) @@ -106,11 +112,12 @@ function saveChanges() { }) }) loading.value = true + let type = props.onlyRequired ? 'Required Fields' : 'Quick Entry' call( 'crm.fcrm.doctype.crm_fields_layout.crm_fields_layout.save_fields_layout', { doctype: _doctype.value, - type: 'Quick Entry', + type: type, layout: JSON.stringify(_tabs), }, ).then(() => { diff --git a/frontend/src/pages/Lead.vue b/frontend/src/pages/Lead.vue index 5361b41c..040b8834 100644 --- a/frontend/src/pages/Lead.vue +++ b/frontend/src/pages/Lead.vue @@ -285,6 +285,7 @@ v-if="showQuickEntryModal" v-model="showQuickEntryModal" doctype="CRM Deal" + :onlyRequired="true" />