diff --git a/frappe/desk/doctype/number_card/number_card.js b/frappe/desk/doctype/number_card/number_card.js
index f548388a99..79ddb71187 100644
--- a/frappe/desk/doctype/number_card/number_card.js
+++ b/frappe/desk/doctype/number_card/number_card.js
@@ -27,8 +27,11 @@ frappe.ui.form.on('Number Card', {
frm.trigger('set_method_description');
frm.trigger('render_filters_table');
}
- frm.trigger('create_add_to_dashboard_button');
frm.trigger('set_parent_document_type');
+
+ if (!frm.is_new()) {
+ frm.trigger('create_add_to_dashboard_button');
+ }
},
create_add_to_dashboard_button: function(frm) {
diff --git a/frappe/desk/doctype/number_card/number_card.py b/frappe/desk/doctype/number_card/number_card.py
index 370b187ffe..e1b2b19026 100644
--- a/frappe/desk/doctype/number_card/number_card.py
+++ b/frappe/desk/doctype/number_card/number_card.py
@@ -20,15 +20,24 @@ class NumberCard(Document):
self.name = append_number_if_name_exists("Number Card", self.name)
def validate(self):
- if not self.document_type:
- frappe.throw(_("Document type is required to create a number card"))
+ if self.type == "Document Type":
+ if not (self.document_type and self.function):
+ frappe.throw(_("Document Type and Function are required to create a number card"))
- if (
- self.document_type
- and frappe.get_meta(self.document_type).istable
- and not self.parent_document_type
- ):
- frappe.throw(_("Parent document type is required to create a number card"))
+ if (
+ self.document_type
+ and frappe.get_meta(self.document_type).istable
+ and not self.parent_document_type
+ ):
+ frappe.throw(_("Parent Document Type is required to create a number card"))
+
+ elif self.type == "Report":
+ if not (self.report_name and self.report_field and self.function):
+ frappe.throw(_("Report Name, Report Field and Fucntion are required to create a number card"))
+
+ elif self.type == "Custom":
+ if not self.method:
+ frappe.throw(_("Method is required to create a number card"))
def on_update(self):
if frappe.conf.developer_mode and self.is_standard:
diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py
index 894e82d117..a51fd8b1e3 100644
--- a/frappe/desk/query_report.py
+++ b/frappe/desk/query_report.py
@@ -58,6 +58,8 @@ def get_report_doc(report_name):
def get_report_result(report, filters):
+ res = None
+
if report.report_type == "Query Report":
res = report.execute_query_report(filters)
@@ -84,7 +86,7 @@ def generate_report_result(
res = get_report_result(report, filters) or []
columns, result, message, chart, report_summary, skip_total_row = ljust_list(res, 6)
- columns = [get_column_as_dict(col) for col in columns]
+ columns = [get_column_as_dict(col) for col in (columns or [])]
report_column_names = [col["fieldname"] for col in columns]
# convert to list of dicts
diff --git a/frappe/public/js/frappe/utils/dashboard_utils.js b/frappe/public/js/frappe/utils/dashboard_utils.js
index 85a4048a47..c4b094b216 100644
--- a/frappe/public/js/frappe/utils/dashboard_utils.js
+++ b/frappe/public/js/frappe/utils/dashboard_utils.js
@@ -249,7 +249,7 @@ frappe.dashboard_utils = {
{args: values}
).then(()=> {
let dashboard_route_html =
- `${values.dashboard}`;
+ `${values.dashboard}`;
let message =
__("{0} {1} added to Dashboard {2}", [doctype, values.name, dashboard_route_html]);