# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors # License: GNU General Public License v3. See license.txt import json import frappe from frappe import _ from frappe.utils import get_date_str, nowdate from erpnext.accounts.dashboard_fixtures import _get_fiscal_year from erpnext.buying.dashboard_fixtures import get_company_for_dashboards def get_data(): fiscal_year = _get_fiscal_year(nowdate()) if not fiscal_year: return frappe._dict() year_start_date = get_date_str(fiscal_year.get("year_start_date")) year_end_date = get_date_str(fiscal_year.get("year_end_date")) return frappe._dict( { "dashboards": get_dashboards(), "charts": get_charts(fiscal_year, year_start_date, year_end_date), "number_cards": get_number_cards(fiscal_year, year_start_date, year_end_date), } ) def get_dashboards(): return [ { "name": "Asset", "dashboard_name": "Asset", "charts": [ {"chart": "Asset Value Analytics", "width": "Full"}, {"chart": "Category-wise Asset Value", "width": "Half"}, {"chart": "Location-wise Asset Value", "width": "Half"}, ], "cards": [ {"card": "Total Assets"}, {"card": "New Assets (This Year)"}, {"card": "Asset Value"}, ], } ] def get_charts(fiscal_year, year_start_date, year_end_date): company = get_company_for_dashboards() return [ { "name": "Asset Value Analytics", "chart_name": _("Asset Value Analytics"), "chart_type": "Report", "report_name": "Fixed Asset Register", "is_custom": 1, "group_by_type": "Count", "number_of_groups": 0, "is_public": 0, "timespan": "Last Year", "time_interval": "Yearly", "timeseries": 0, "filters_json": json.dumps( { "company": company, "status": "In Location", "filter_based_on": "Fiscal Year", "from_fiscal_year": fiscal_year.get("name"), "to_fiscal_year": fiscal_year.get("name"), "period_start_date": year_start_date, "period_end_date": year_end_date, "date_based_on": "Purchase Date", "group_by": "--Select a group--", } ), "type": "Bar", "custom_options": json.dumps( { "type": "bar", "barOptions": {"stacked": 1}, "axisOptions": {"shortenYAxisNumbers": 1}, "tooltipOptions": {}, } ), "doctype": "Dashboard Chart", "y_axis": [], }, { "name": "Category-wise Asset Value", "chart_name": _("Category-wise Asset Value"), "chart_type": "Report", "report_name": "Fixed Asset Register", "x_field": "asset_category", "timeseries": 0, "filters_json": json.dumps( { "company": company, "status": "In Location", "group_by": "Asset Category", "is_existing_asset": 0, } ), "type": "Donut", "doctype": "Dashboard Chart", "y_axis": [ { "parent": "Category-wise Asset Value", "parentfield": "y_axis", "parenttype": "Dashboard Chart", "y_field": "asset_value", "doctype": "Dashboard Chart Field", } ], "custom_options": json.dumps( {"type": "donut", "height": 300, "axisOptions": {"shortenYAxisNumbers": 1}} ), }, { "name": "Location-wise Asset Value", "chart_name": "Location-wise Asset Value", "chart_type": "Report", "report_name": "Fixed Asset Register", "x_field": "location", "timeseries": 0, "filters_json": json.dumps( {"company": company, "status": "In Location", "group_by": "Location", "is_existing_asset": 0} ), "type": "Donut", "doctype": "Dashboard Chart", "y_axis": [ { "parent": "Location-wise Asset Value", "parentfield": "y_axis", "parenttype": "Dashboard Chart", "y_field": "asset_value", "doctype": "Dashboard Chart Field", } ], "custom_options": json.dumps( {"type": "donut", "height": 300, "axisOptions": {"shortenYAxisNumbers": 1}} ), }, ] def get_number_cards(fiscal_year, year_start_date, year_end_date): return [ { "name": "Total Assets", "label": _("Total Assets"), "function": "Count", "document_type": "Asset", "is_public": 1, "show_percentage_stats": 1, "stats_time_interval": "Monthly", "filters_json": "[]", "doctype": "Number Card", }, { "name": "New Assets (This Year)", "label": _("New Assets (This Year)"), "function": "Count", "document_type": "Asset", "is_public": 1, "show_percentage_stats": 1, "stats_time_interval": "Monthly", "filters_json": json.dumps( [["Asset", "creation", "between", [year_start_date, year_end_date]]] ), "doctype": "Number Card", }, { "name": "Asset Value", "label": _("Asset Value"), "function": "Sum", "aggregate_function_based_on": "value_after_depreciation", "document_type": "Asset", "is_public": 1, "show_percentage_stats": 1, "stats_time_interval": "Monthly", "filters_json": "[]", "doctype": "Number Card", }, ]