from __future__ import unicode_literals from frappe import _ 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(): 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" } ] } ], "Charts": [ { "doctype": "Dashboard Chart", "time_interval": "Quarterly", "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, "owner": "Administrator", "type": "Line", "width": "Half" }, { "doctype": "Dashboard Chart", "time_interval": "Quarterly", "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", "width": "Half" }, { "doctype": "Dashboard Chart", "time_interval": "Quarterly", "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", "width": "Half" }, { "doctype": "Dashboard Chart", "time_interval": "Monthly", "chart_name": "Incoming Bills (Purchase Invoice)", "timespan": "Last Year", "color": "#a83333", "value_based_on": "base_grand_total", "filters_json": json.dumps({}), "chart_type": "Sum", "timeseries": 1, "based_on": "posting_date", "owner": "Administrator", "document_type": "Purchase Invoice", "type": "Bar", "width": "Half" }, { "doctype": "Dashboard Chart", "time_interval": "Monthly", "chart_name": "Outgoing Bills (Sales Invoice)", "timespan": "Last Year", "color": "#7b933d", "value_based_on": "base_grand_total", "filters_json": json.dumps({}), "chart_type": "Sum", "timeseries": 1, "based_on": "posting_date", "owner": "Administrator", "document_type": "Sales Invoice", "type": "Bar", "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