| # 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 |
| |
| |
| def get_data(): |
| data = frappe._dict({ |
| "dashboards": [], |
| "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", |
| "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): |
| 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 [ |
| { |
| "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, |
| "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" |
| }, |
| { |
| "doctype": "Dashboard Chart", |
| "time_interval": "Monthly", |
| "name": "Incoming Bills (Purchase Invoice)", |
| "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" |
| }, |
| { |
| "doctype": "Dashboard Chart", |
| "time_interval": "Monthly", |
| "name": "Outgoing Bills (Sales Invoice)", |
| "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" |
| } |
| ] |
| |
| 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 |