175 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| import frappe
 | |
| import json
 | |
| from frappe import _
 | |
| from frappe.utils import nowdate
 | |
| from erpnext.accounts.utils import get_fiscal_year
 | |
| 
 | |
| def get_data():
 | |
| 	return frappe._dict({
 | |
| 		"dashboards": get_dashboards(),
 | |
| 		"charts": get_charts(),
 | |
| 		"number_cards": get_number_cards(),
 | |
| 	})
 | |
| 
 | |
| 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
 | |
| 
 | |
| company = frappe.get_doc("Company", get_company_for_dashboards())
 | |
| fiscal_year = get_fiscal_year(nowdate(), as_dict=1)
 | |
| fiscal_year_name = fiscal_year.get("name")
 | |
| start_date = str(fiscal_year.get("year_start_date"))
 | |
| end_date = str(fiscal_year.get("year_end_date"))
 | |
| 
 | |
| def get_dashboards():
 | |
| 	return [{
 | |
| 		"name": "Stock",
 | |
| 		"dashboard_name": "Stock",
 | |
| 		"charts": [
 | |
| 			{ "chart": "Warehouse wise Stock Value", "width": "Full"},
 | |
| 			{ "chart": "Purchase Receipt Trends", "width": "Half"},
 | |
| 			{ "chart": "Delivery Trends", "width": "Half"},
 | |
| 			{ "chart": "Oldest Items", "width": "Half"},
 | |
| 			{ "chart": "Item Shortage Summary", "width": "Half"}
 | |
| 		],
 | |
| 		"cards": [
 | |
| 			{ "card": "Total Active Items"},
 | |
| 			{ "card": "Total Warehouses"},
 | |
| 			{ "card": "Total Stock Value"}
 | |
| 		]
 | |
| 	}]
 | |
| 
 | |
| def get_charts():
 | |
| 	return [
 | |
| 		{
 | |
| 			"doctype": "Dashboard Chart",
 | |
| 			"name": "Purchase Receipt Trends",
 | |
| 			"time_interval": "Monthly",
 | |
| 			"chart_name": _("Purchase Receipt Trends"),
 | |
| 			"timespan": "Last Year",
 | |
| 			"color": "#7b933d",
 | |
| 			"value_based_on": "base_net_total",
 | |
| 			"filters_json": json.dumps([["Purchase Receipt", "docstatus", "=", 1]]),
 | |
| 			"chart_type": "Sum",
 | |
| 			"timeseries": 1,
 | |
| 			"based_on": "posting_date",
 | |
| 			"owner": "Administrator",
 | |
| 			"document_type": "Purchase Receipt",
 | |
| 			"type": "Bar",
 | |
| 			"width": "Half",
 | |
| 			"is_public": 1
 | |
| 		},
 | |
| 		{
 | |
| 			"doctype": "Dashboard Chart",
 | |
| 			"name": "Delivery Trends",
 | |
| 			"time_interval": "Monthly",
 | |
| 			"chart_name": _("Delivery Trends"),
 | |
| 			"timespan": "Last Year",
 | |
| 			"color": "#7b933d",
 | |
| 			"value_based_on": "base_net_total",
 | |
| 			"filters_json": json.dumps([["Delivery Note", "docstatus", "=", 1]]),
 | |
| 			"chart_type": "Sum",
 | |
| 			"timeseries": 1,
 | |
| 			"based_on": "posting_date",
 | |
| 			"owner": "Administrator",
 | |
| 			"document_type": "Delivery Note",
 | |
| 			"type": "Bar",
 | |
| 			"width": "Half",
 | |
| 			"is_public": 1
 | |
| 		},
 | |
| 		{
 | |
| 			"name": "Warehouse wise Stock Value",
 | |
| 			"chart_name": _("Warehouse wise Stock Value"),
 | |
| 			"chart_type": "Custom",
 | |
| 			"doctype": "Dashboard Chart",
 | |
| 			"filters_json": json.dumps({}),
 | |
| 			"is_custom": 0,
 | |
| 			"is_public": 1,
 | |
| 			"owner": "Administrator",
 | |
| 			"source": "Warehouse wise Stock Value",
 | |
| 			"type": "Bar"
 | |
| 		},
 | |
| 		{
 | |
| 			"name": "Oldest Items",
 | |
| 			"chart_name": _("Oldest Items"),
 | |
| 			"chart_type": "Report",
 | |
| 			"custom_options": json.dumps({
 | |
| 				"colors": ["#5e64ff"]
 | |
| 				}),
 | |
| 			"doctype": "Dashboard Chart",
 | |
| 			"filters_json": json.dumps({
 | |
| 				"company": company.name,
 | |
| 				"to_date": nowdate(),
 | |
| 				"show_warehouse_wise_stock": 0
 | |
| 			}),
 | |
| 			"is_custom": 1,
 | |
| 			"is_public": 1,
 | |
| 			"owner": "Administrator",
 | |
| 			"report_name": "Stock Ageing",
 | |
| 			"type": "Bar"
 | |
| 		},
 | |
| 		{
 | |
| 			"name": "Item Shortage Summary",
 | |
| 			"chart_name": _("Item Shortage Summary"),
 | |
| 			"chart_type": "Report",
 | |
| 			"doctype": "Dashboard Chart",
 | |
| 			"filters_json": json.dumps({
 | |
| 				"company": company.name
 | |
| 			}),
 | |
| 			"is_custom": 1,
 | |
| 			"is_public": 1,
 | |
| 			"owner": "Administrator",
 | |
| 			"report_name": "Item Shortage Report",
 | |
| 			"type": "Bar"
 | |
| 		}
 | |
| 	]
 | |
| 
 | |
| def get_number_cards():
 | |
| 	return [
 | |
| 		{
 | |
| 			"name": "Total Active Items",
 | |
| 			"label": _("Total Active Items"),
 | |
| 			"function": "Count",
 | |
| 			"doctype": "Number Card",
 | |
| 			"document_type": "Item",
 | |
| 			"filters_json": json.dumps([["Item", "disabled", "=", 0]]),
 | |
| 			"is_public": 1,
 | |
| 			"owner": "Administrator",
 | |
| 			"show_percentage_stats": 1,
 | |
| 			"stats_time_interval": "Monthly"
 | |
| 		},
 | |
| 		{
 | |
| 			"name": "Total Warehouses",
 | |
| 			"label": _("Total Warehouses"),
 | |
| 			"function": "Count",
 | |
| 			"doctype": "Number Card",
 | |
| 			"document_type": "Warehouse",
 | |
| 			"filters_json": json.dumps([["Warehouse", "disabled", "=", 0]]),
 | |
| 			"is_public": 1,
 | |
| 			"owner": "Administrator",
 | |
| 			"show_percentage_stats": 1,
 | |
| 			"stats_time_interval": "Monthly"
 | |
| 		},
 | |
| 		{
 | |
| 			"name": "Total Stock Value",
 | |
| 			"label": _("Total Stock Value"),
 | |
| 			"function": "Sum",
 | |
| 			"aggregate_function_based_on": "stock_value",
 | |
| 			"doctype": "Number Card",
 | |
| 			"document_type": "Bin",
 | |
| 			"filters_json": json.dumps([]),
 | |
| 			"is_public": 1,
 | |
| 			"owner": "Administrator",
 | |
| 			"show_percentage_stats": 1,
 | |
| 			"stats_time_interval": "Daily"
 | |
| 		}
 | |
| 	] |