Merge pull request #21618 from scmmishra/sync-dashboards

diff --git a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
index c3e2f7d..5decccb 100644
--- a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
+++ b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
@@ -6,7 +6,7 @@
 from frappe import _
 from frappe.utils import add_to_date, date_diff, getdate, nowdate, get_last_day, formatdate, get_link_to_form
 from erpnext.accounts.report.general_ledger.general_ledger import execute
-from frappe.core.page.dashboard.dashboard import cache_source, get_from_date_from_timespan
+from frappe.utils.dashboard import cache_source, get_from_date_from_timespan
 from frappe.desk.doctype.dashboard_chart.dashboard_chart import get_period_ending
 
 from frappe.utils.nestedset import get_descendants_of
diff --git a/erpnext/setup/setup_wizard/data/dashboard_charts.py b/erpnext/accounts/dashboard_fixtures.py
similarity index 66%
rename from erpnext/setup/setup_wizard/data/dashboard_charts.py
rename to erpnext/accounts/dashboard_fixtures.py
index b182dfc..30eb5e3 100644
--- a/erpnext/setup/setup_wizard/data/dashboard_charts.py
+++ b/erpnext/accounts/dashboard_fixtures.py
@@ -1,43 +1,40 @@
-from __future__ import unicode_literals
-from frappe import _
+# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
 import frappe
 import json
 
-def get_company_for_dashboards():
-	company = frappe.defaults.get_defaults().company
-	if company:
-		return company
-	else:
-		company_list = frappe.get_list("Company")
-		if company_list:
-			return company_list[0].name
-	return None
 
-def get_default_dashboards():
+def get_data():
+	return frappe._dict({
+		"dashboards": get_dashboards(),
+		"charts": get_charts(),
+	})
+
+def get_dashboards():
+	return [{
+		"name": "Accounts",
+		"dashboard_name": "Accounts",
+		"charts": [
+			{ "chart": "Outgoing Bills (Sales Invoice)" },
+			{ "chart": "Incoming Bills (Purchase Invoice)" },
+			{ "chart": "Bank Balance" },
+			{ "chart": "Income" },
+			{ "chart": "Expenses" }
+		]
+	}]
+
+def get_charts():
 	company = frappe.get_doc("Company", get_company_for_dashboards())
 	income_account = company.default_income_account or get_account("Income Account", company.name)
 	expense_account = company.default_expense_account or get_account("Expense Account", company.name)
 	bank_account = company.default_bank_account or get_account("Bank", company.name)
 
-	return {
-		"Dashboards": [
-			{
-				"doctype": "Dashboard",
-				"dashboard_name": "Accounts",
-				"charts": [
-					{ "chart": "Outgoing Bills (Sales Invoice)" },
-					{ "chart": "Incoming Bills (Purchase Invoice)" },
-					{ "chart": "Bank Balance" },
-					{ "chart": "Income" },
-					{ "chart": "Expenses" },
-					{ "chart": "Patient Appointments" }
-				]
-			}
-		],
-		"Charts": [
+	return [
 			{
 				"doctype": "Dashboard Chart",
 				"time_interval": "Quarterly",
+				"name": "Income",
 				"chart_name": "Income",
 				"timespan": "Last Year",
 				"color": None,
@@ -46,12 +43,12 @@
 				"chart_type": "Custom",
 				"timeseries": 1,
 				"owner": "Administrator",
-				"type": "Line",
-				"width": "Half"
+				"type": "Line"
 			},
 			{
 				"doctype": "Dashboard Chart",
 				"time_interval": "Quarterly",
+				"name": "Expenses",
 				"chart_name": "Expenses",
 				"timespan": "Last Year",
 				"color": None,
@@ -60,12 +57,12 @@
 				"chart_type": "Custom",
 				"timeseries": 1,
 				"owner": "Administrator",
-				"type": "Line",
-				"width": "Half"
+				"type": "Line"
 			},
 			{
 				"doctype": "Dashboard Chart",
 				"time_interval": "Quarterly",
+				"name": "Bank Balance",
 				"chart_name": "Bank Balance",
 				"timespan": "Last Year",
 				"color": "#ffb868",
@@ -74,12 +71,12 @@
 				"chart_type": "Custom",
 				"timeseries": 1,
 				"owner": "Administrator",
-				"type": "Line",
-				"width": "Half"
+				"type": "Line"
 			},
 			{
 				"doctype": "Dashboard Chart",
 				"time_interval": "Monthly",
+				"name": "Incoming Bills (Purchase Invoice)",
 				"chart_name": "Incoming Bills (Purchase Invoice)",
 				"timespan": "Last Year",
 				"color": "#a83333",
@@ -90,12 +87,12 @@
 				"based_on": "posting_date",
 				"owner": "Administrator",
 				"document_type": "Purchase Invoice",
-				"type": "Bar",
-				"width": "Half"
+				"type": "Bar"
 			},
 			{
 				"doctype": "Dashboard Chart",
 				"time_interval": "Monthly",
+				"name": "Outgoing Bills (Sales Invoice)",
 				"chart_name": "Outgoing Bills (Sales Invoice)",
 				"timespan": "Last Year",
 				"color": "#7b933d",
@@ -106,28 +103,17 @@
 				"based_on": "posting_date",
 				"owner": "Administrator",
 				"document_type": "Sales Invoice",
-				"type": "Bar",
-				"width": "Half"
-			},
-			{
-				"doctype": "Dashboard Chart",
-				"time_interval": "Daily",
-				"chart_name": "Patient Appointments",
-				"timespan": "Last Month",
-				"color": "#77ecca",
-				"filters_json": json.dumps({}),
-				"chart_type": "Count",
-				"timeseries": 1,
-				"based_on": "appointment_datetime",
-				"owner": "Administrator",
-				"document_type": "Patient Appointment",
-				"type": "Line",
-				"width": "Half"
+				"type": "Bar"
 			}
 		]
-	}
 
-def get_account(account_type, company):
-	accounts = frappe.get_list("Account", filters={"account_type": account_type, "company": company})
-	if accounts:
-		return accounts[0].name
+
+def get_company_for_dashboards():
+	company = frappe.defaults.get_defaults().company
+	if company:
+		return company
+	else:
+		company_list = frappe.get_list("Company")
+		if company_list:
+			return company_list[0].name
+	return None
\ No newline at end of file
diff --git a/erpnext/healthcare/dashboard_fixtures.py b/erpnext/healthcare/dashboard_fixtures.py
new file mode 100644
index 0000000..fc3d62f
--- /dev/null
+++ b/erpnext/healthcare/dashboard_fixtures.py
@@ -0,0 +1,41 @@
+# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+import frappe
+import json
+
+
+def get_data():
+	return frappe._dict({
+		"dashboards": get_dashboards(),
+		"charts": get_charts(),
+	})
+
+def get_dashboards():
+	return [{
+		"name": "Healthcare",
+		"dashboard_name": "Healthcare",
+		"charts": [
+			{ "chart": "Patient Appointments" }
+		]
+	}]
+
+def get_charts():
+	return [
+			{
+				"doctype": "Dashboard Chart",
+				"time_interval": "Daily",
+				"name": "Patient Appointments",
+				"chart_name": "Patient Appointments",
+				"timespan": "Last Month",
+				"color": "#77ecca",
+				"filters_json": json.dumps({}),
+				"chart_type": "Count",
+				"timeseries": 1,
+				"based_on": "appointment_datetime",
+				"owner": "Administrator",
+				"document_type": "Patient Appointment",
+				"type": "Line",
+				"width": "Half"
+			}
+		]
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 5255933..3f90d36 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -631,7 +631,6 @@
 execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart_source')
 execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart')
 execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart_field')
-erpnext.patches.v12_0.add_default_dashboards # 2020-04-05
 erpnext.patches.v12_0.remove_bank_remittance_custom_fields
 erpnext.patches.v12_0.generate_leave_ledger_entries
 execute:frappe.delete_doc_if_exists("Report", "Loan Repayment")
diff --git a/erpnext/patches/v12_0/add_default_dashboards.py b/erpnext/patches/v12_0/add_default_dashboards.py
deleted file mode 100644
index 2a91e1b..0000000
--- a/erpnext/patches/v12_0/add_default_dashboards.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-import frappe
-from erpnext.setup.setup_wizard.operations.install_fixtures import add_dashboards
-
-def execute():
-	frappe.reload_doc("desk", "doctype", "number_card_link")
-	frappe.reload_doc("healthcare", "doctype", "patient_appointment")
-	add_dashboards()
diff --git a/erpnext/setup/setup_wizard/operations/install_fixtures.py b/erpnext/setup/setup_wizard/operations/install_fixtures.py
index 3be6f44..8bb0a05 100644
--- a/erpnext/setup/setup_wizard/operations/install_fixtures.py
+++ b/erpnext/setup/setup_wizard/operations/install_fixtures.py
@@ -485,8 +485,6 @@
 				# bank account same as a CoA entry
 				pass
 
-	add_dashboards()
-
 	# Now, with fixtures out of the way, onto concrete stuff
 	records = [
 
@@ -504,27 +502,6 @@
 
 	make_records(records)
 
-def add_dashboards():
-	from erpnext.setup.setup_wizard.data.dashboard_charts import get_company_for_dashboards
-
-	if not get_company_for_dashboards():
-		return
-
-	from erpnext.setup.setup_wizard.data.dashboard_charts import get_default_dashboards
-	from frappe.modules.import_file import import_file_by_path
-
-	dashboard_data = get_default_dashboards()
-
-	# create account balance timeline before creating dashbaord charts
-	doctype = "dashboard_chart_source"
-	docname = "account_balance_timeline"
-	folder = os.path.dirname(frappe.get_module("erpnext.accounts").__file__)
-	doc_path = os.path.join(folder, doctype, docname, docname) + ".json"
-	import_file_by_path(doc_path, force=0, for_sync=True)
-
-	make_records(dashboard_data["Charts"])
-	make_records(dashboard_data["Dashboards"])
-
 
 def get_fy_details(fy_start_date, fy_end_date):
 	start_year = getdate(fy_start_date).year