diff --git a/frappe/core/doctype/doctype/doctype.js b/frappe/core/doctype/doctype/doctype.js index 7ebbd2b5b9..5cc4a8ea98 100644 --- a/frappe/core/doctype/doctype/doctype.js +++ b/frappe/core/doctype/doctype/doctype.js @@ -5,7 +5,11 @@ frappe.ui.form.on("DocType", { before_save: function (frm) { let form_builder = frappe.form_builder; if (form_builder?.store) { - form_builder.store.update_fields(); + let fields = form_builder.store.update_fields(); + + if (!fields.length) { + frappe.throw(__("Error occurred while saving the form.")); + } frm.refresh_fields(); } }, diff --git a/frappe/public/js/form_builder/store.js b/frappe/public/js/form_builder/store.js index 91dee966f9..83a65b6fa1 100644 --- a/frappe/public/js/form_builder/store.js +++ b/frappe/public/js/form_builder/store.js @@ -142,6 +142,10 @@ export const useStore = defineStore("form-builder-store", () => { function validate_fields(fields, is_table) { fields = scrub_field_names(fields); + if (!fields.length) { + frappe.throw(__("DocType must have atleast one field")); + } + let not_allowed_in_list_view = ["Attach Image", ...frappe.model.no_value_type]; if (is_table) { not_allowed_in_list_view = not_allowed_in_list_view.filter((f) => f != "Button");