Merge branch 'develop' of https://github.com/frappe/erpnext into accounts_dashboard
diff --git a/erpnext/accounts/accounts b/erpnext/accounts/accounts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/accounts/accounts
diff --git a/erpnext/accounts/dashboard_fixtures.py b/erpnext/accounts/dashboard_fixtures.py
index cdd1661..46d1d6a 100644
--- a/erpnext/accounts/dashboard_fixtures.py
+++ b/erpnext/accounts/dashboard_fixtures.py
@@ -1,88 +1,70 @@
 # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
-from erpnext import get_default_company
 
 import frappe
 import json
+from frappe.utils import nowdate, add_months
 
+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_data():
-	data = frappe._dict({
-		"dashboards": [],
-		"charts": []
+	return frappe._dict({
+		"dashboards": get_dashboards(),
+		"charts": get_charts()
 	})
-	company = get_company_for_dashboards()
-	if company:
-		company_doc = frappe.get_doc("Company", company)
-		data.dashboards = get_dashboards()
-		data.charts = get_charts(company_doc)
-	return data
 
 def get_dashboards():
+
 	return [{
-		"name": "Accounts",
+		"name": "Accounts Dashboard",
 		"dashboard_name": "Accounts",
+		"doctype": "Dashboard",
 		"charts": [
-			{ "chart": "Outgoing Bills (Sales Invoice)" },
-			{ "chart": "Incoming Bills (Purchase Invoice)" },
-			{ "chart": "Bank Balance" },
-			{ "chart": "Income" },
-			{ "chart": "Expenses" }
+			{ "chart": "Profit and Loss" , "width": "Full"},
+			{ "chart": "Incoming Bills"},
+			{ "chart": "Outgoing Bills"},
+			{ "chart": "Accounts Receivable Ageing"},
+			{ "chart": "Accounts Payable Ageing"},
+			{ "chart": "Bank Balance", "width": "Full"},
 		]
 	}]
 
-def get_charts(company):
-	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)
+def get_charts():
+	company = frappe.get_doc("Company", get_company_for_dashboards())
 	bank_account = company.default_bank_account or get_account("Bank", company.name)
 
 	return [
 		{
-			"doctype": "Dashboard Chart",
-			"time_interval": "Quarterly",
-			"name": "Income",
-			"chart_name": "Income",
-			"timespan": "Last Year",
-			"color": None,
-			"filters_json": json.dumps({"company": company.name, "account": income_account}),
-			"source": "Account Balance Timeline",
-			"chart_type": "Custom",
-			"timeseries": 1,
+			"doctype": "Dashboard Charts",
+			"name": "Profit and Loss",
 			"owner": "Administrator",
-			"type": "Line"
-		},
-		{
-			"doctype": "Dashboard Chart",
-			"time_interval": "Quarterly",
-			"name": "Expenses",
-			"chart_name": "Expenses",
-			"timespan": "Last Year",
-			"color": None,
-			"filters_json": json.dumps({"company": company.name, "account": expense_account}),
-			"source": "Account Balance Timeline",
-			"chart_type": "Custom",
-			"timeseries": 1,
-			"owner": "Administrator",
-			"type": "Line"
-		},
-		{
-			"doctype": "Dashboard Chart",
-			"time_interval": "Quarterly",
-			"name": "Bank Balance",
-			"chart_name": "Bank Balance",
-			"timespan": "Last Year",
-			"color": "#ffb868",
-			"filters_json": json.dumps({"company": company.name, "account": bank_account}),
-			"source": "Account Balance Timeline",
-			"chart_type": "Custom",
-			"timeseries": 1,
-			"owner": "Administrator",
-			"type": "Line"
+			"report_name": "Profit and Loss Statement",
+			"filters_json": json.dumps({
+				"company": company.name,
+				"filter_based_on": "Date Range",
+				"period_start_date": add_months(nowdate(), -4),
+				"period_end_date": nowdate(),
+				"periodicity": "Monthly",
+				"include_default_book_entries": 1
+				}),
+			"type": "Bar",
+			'timeseries': 0,
+			"chart_type": "Report",
+			"chart_name": "Profit and Loss",
+			"is_custom": 1
 		},
 		{
 			"doctype": "Dashboard Chart",
 			"time_interval": "Monthly",
-			"name": "Incoming Bills (Purchase Invoice)",
+			"name": "Incoming Bills",
 			"chart_name": "Incoming Bills (Purchase Invoice)",
 			"timespan": "Last Year",
 			"color": "#a83333",
@@ -93,12 +75,13 @@
 			"based_on": "posting_date",
 			"owner": "Administrator",
 			"document_type": "Purchase Invoice",
-			"type": "Bar"
+			"type": "Bar",
+			"width": "Half"
 		},
 		{
 			"doctype": "Dashboard Chart",
+			"name": "Outgoing Bills",
 			"time_interval": "Monthly",
-			"name": "Outgoing Bills (Sales Invoice)",
 			"chart_name": "Outgoing Bills (Sales Invoice)",
 			"timespan": "Last Year",
 			"color": "#7b933d",
@@ -109,19 +92,62 @@
 			"based_on": "posting_date",
 			"owner": "Administrator",
 			"document_type": "Sales Invoice",
-			"type": "Bar"
-		}
+			"type": "Bar",
+			"width": "Half"
+		},
+		{
+			"doctype": "Dashboard Charts",
+			"name": "Accounts Receivable Ageing",
+			"owner": "Administrator",
+			"report_name": "Accounts Receivable",
+			"filters_json": json.dumps({
+				"company": company.name,
+				"report_date": nowdate(),
+				"ageing_based_on": "Due Date",
+				"range1": 30,
+				"range2": 60,
+				"range3": 90,
+				"range4": 120
+				}),
+			"type": "Donut",
+			'timeseries': 0,
+			"chart_type": "Report",
+			"chart_name": "Accounts Receivable Ageing",
+			"is_custom": 1
+		},
+		{
+			"doctype": "Dashboard Charts",
+			"name": "Accounts Payable Ageing",
+			"owner": "Administrator",
+			"report_name": "Accounts Payable",
+			"filters_json": json.dumps({
+				"company": company.name,
+				"report_date": nowdate(),
+				"ageing_based_on": "Due Date",
+				"range1": 30,
+				"range2": 60,
+				"range3": 90,
+				"range4": 120
+				}),
+			"type": "Donut",
+			'timeseries': 0,
+			"chart_type": "Report",
+			"chart_name": "Accounts Payable Ageing",
+			"is_custom": 1
+		},
+		{
+			"doctype": "Dashboard Charts",
+			"name": "Bank Balance",
+			"time_interval": "Quarterly",
+			"chart_name": "Bank Balance",
+			"timespan": "Last Year",
+			"filters_json": json.dumps({"company": company.name, "account": bank_account}),
+			"source": "Account Balance Timeline",
+			"chart_type": "Custom",
+			"timeseries": 1,
+			"owner": "Administrator",
+			"type": "Line",
+			"width": "Half"
+		},
+
 	]
-
-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 = get_default_company()
-	if not company:
-		company_list = frappe.get_list("Company")
-		if company_list:
-			company = company_list[0].name
-	return company
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index e9c286f..a0a1b97 100755
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -546,7 +546,7 @@
 			self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4 = 30, 60, 90, 120
 
 		for i, days in enumerate([self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4]):
-			if row.age <= days:
+			if cint(row.age) <= cint(days):
 				index = i
 				break