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"
/>