blob: dafacaada41b6e597e3767ec929939466bb17ae9 [file] [log] [blame]
Anurag Mishra36aea712020-05-13 10:47:36 +05301# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
2# License: GNU General Public License v3. See license.txt
3
4import frappe
5import erpnext
6import json
7
8def get_data():
9 return frappe._dict({
10 "dashboards": get_dashboards(),
11 "charts": get_charts(),
12 "number_cards": get_number_cards(),
13 })
14
15def get_dashboards():
16 dashboards = []
17 dashboards.append(get_human_resource_dashboard())
18 return dashboards
19
20def get_human_resource_dashboard():
21 return {
22 "name": "Human Resource",
23 "dashboard_name": "Human Resource",
24 "is_default": 1,
25 "charts": [
26 { "chart": "Gender Diversity Ratio", "width": "Half"},
27 { "chart": "Employee Count", "width": "Half"},
28 { "chart": "Outgoing Salary", "width": "Full"},
29 { "chart": "Attendance Count", "width": "Full"}
30 ],
31 "cards": [
32 {"card": "Total Employees"},
33 {"card": "New Joinees"},
34 {'card': "Job Applicants"},
35 {'card': "Employees Left"}
36 ]
37 }
38
39def get_recruitment_dashboard():
40 pass
41 # return {
42 # "name": "Human Resource",
43 # "dashboard_name": "Human Resource",
44 # "is_default": 1,
45 # "charts": [
46 # ],
47 # "cards": [
48 # ]
49 # }
50
51
52def get_charts():
53 company = erpnext.get_default_company()
54
55 if not company:
56 company = frappe.db.get_value("Company", {"is_group": 0}, "name")
57
58 dashboard_charts = [
59 get_dashboards_chart_doc('Gender Diversity Ratio', "Group By", "Donut",document_type = "Employee", group_by_type="Count", group_by_based_on="gender", filters_json = json.dumps([["Employee","status","=","Active"]]), time_interval = "Monthly")
60 ]
61
62 dashboard_charts.append(
63 get_dashboards_chart_doc('Outgoing salary', "Sum", "Line",document_type = "Salary Slip", group_by_type="Count", based_on="end_date", value_based_on = "rounded_total", time_interval = "Monthly", timeseries = 1 , filters_json = json.dumps([["Salary Slip","docstatus","=","1"]]))
64 )
65
66 custom_options = '''{"type": "bar", "axisOptions": {"shortenYAxisNumbers": 1}, "tooltipOptions": {}, "barOptions":{"stacked": 1}}'''
67 filters_json = json.dumps({"month":"May","year":"2020","company":company})
68
69 dashboard_charts.append(
70 get_dashboards_chart_doc('Attendance Count', "Report", "Bar",report_name = "Monthly Attendance Sheet", is_custom =1,group_by_type="Count", timeseries = 1 , filters_json = filters_json, custom_options=custom_options)
71 )
72
73 custom_options = """{"type": "donut", "axisOptions": {"shortenYAxisNumbers": 1}}"""
74 filters_json = json.dumps({"company":company ,"parameter":"Department"})
75
76 dashboard_charts.append(
77 get_dashboards_chart_doc('Employee Count', "Report", "Donut",report_name = "Employee Analytics", is_custom =1, group_by_type="Count", timeseries = 1 , filters_json = filters_json, custom_options=custom_options)
78 )
79
80
81
82
83def get_number_cards():
84 number_cards = []
85
86 number_cards = [
87 get_number_cards_doc("Employee", "Total Employees", filters_json = json.dumps([
88 ["Employee","status","=","Active"]
89 ])
90 )
91 ]
92 number_cards.append(
93 get_number_cards_doc("Employee", "New Joinees", filters_json = json.dumps([
94 ["Employee","date_of_joining","Previous","6 months"],
95 ["Employee","status","=","Active"]
96 ]),
97 stats_time_interval = "Daily")
98 )
99 number_cards.append(
100 get_number_cards_doc("Employee", "Employees Left", filters_json = json.dumps([
101 ["Employee","status","=","Left"]
102 ])
103 )
104 )
105 number_cards.append(
106 get_number_cards_doc("Job Applicant", "Job Applicants", filters_json = json.dumps([
107 ["Job Applicant","status","!=","Rejected"]
108 ])
109 )
110 )
111
112 return number_cards
113
114
115def get_number_cards_doc(document_type, label, **args):
116 args = frappe._dict(args)
117
118 return {
119 "doctype": "Number Card",
120 "document_type": document_type,
121 "function": args.func or "Count",
122 "is_public": args.is_public or 1,
123 "label": label,
124 "name": args.name or label,
125 "show_percentage_stats": args.show_percentage_stats or 1,
126 "stats_time_interval": args.stats_time_interval or 'Monthly',
127 "filters_json": args.filters_json or '[]',
128 }
129
130def get_dashboards_chart_doc(name, chart_type, graph_type, **args):
131
132 args = frappe._dict(args)
133
134 return {
135 "name": name,
136 "chart_name": args.chart_name or name,
137 "chart_type": chart_type,
138 "document_type": args.document_type or None,
139 "report_name": args.report_name or None,
140 "is_custom": args.is_custom or 0,
141 "group_by_type": args.group_by_type or None,
142 "group_by_based_on": args.group_by_based_on or None,
143 "based_on": args.based_on or None,
144 "value_based_on": args.value_based_on or None,
145 "number_of_groups": args.number_of_groups or 0,
146 "is_public": args.is_public or 1,
147 "timespan": args.timespan or "Last Year",
148 "time_interval": args.time_interval or "Yearly",
149 "timeseries": args.timeseries or 0,
150 "filters_json": args.filters_json or '[]',
151 "type": graph_type,
152 "custom_options": args.custom_options or '',
153 "doctype": "Dashboard Chart",
154 }