blob: 9e64f4dc196c2ef0992eecc323e34b26550f635f [file] [log] [blame]
# 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 add_months, nowdate
import erpnext
def get_data():
return frappe._dict(
{
"dashboards": get_dashboards(),
"charts": get_charts(),
"number_cards": get_number_cards(),
}
)
def get_dashboards():
return [
{
"name": "Manufacturing",
"dashboard_name": "Manufacturing",
"charts": [
{"chart": "Produced Quantity", "width": "Half"},
{"chart": "Completed Operation", "width": "Half"},
{"chart": "Work Order Analysis", "width": "Half"},
{"chart": "Quality Inspection Analysis", "width": "Half"},
{"chart": "Pending Work Order", "width": "Half"},
{"chart": "Last Month Downtime Analysis", "width": "Half"},
{"chart": "Work Order Qty Analysis", "width": "Full"},
{"chart": "Job Card Analysis", "width": "Full"},
],
"cards": [
{"card": "Monthly Total Work Order"},
{"card": "Monthly Completed Work Order"},
{"card": "Ongoing Job Card"},
{"card": "Monthly Quality Inspection"},
],
}
]
def get_charts():
company = erpnext.get_default_company()
if not company:
company = frappe.db.get_value("Company", {"is_group": 0}, "name")
return [
{
"doctype": "Dashboard Chart",
"based_on": "modified",
"chart_type": "Sum",
"chart_name": _("Produced Quantity"),
"name": "Produced Quantity",
"document_type": "Work Order",
"filters_json": json.dumps([["Work Order", "docstatus", "=", 1, False]]),
"group_by_type": "Count",
"time_interval": "Monthly",
"timespan": "Last Year",
"owner": "Administrator",
"type": "Line",
"value_based_on": "produced_qty",
"is_public": 1,
"timeseries": 1,
},
{
"doctype": "Dashboard Chart",
"based_on": "creation",
"chart_type": "Sum",
"chart_name": _("Completed Operation"),
"name": "Completed Operation",
"document_type": "Work Order Operation",
"filters_json": json.dumps([["Work Order Operation", "docstatus", "=", 1, False]]),
"group_by_type": "Count",
"time_interval": "Quarterly",
"timespan": "Last Year",
"owner": "Administrator",
"type": "Line",
"value_based_on": "completed_qty",
"is_public": 1,
"timeseries": 1,
},
{
"doctype": "Dashboard Chart",
"time_interval": "Yearly",
"chart_type": "Report",
"chart_name": _("Work Order Analysis"),
"name": "Work Order Analysis",
"timespan": "Last Year",
"report_name": "Work Order Summary",
"owner": "Administrator",
"filters_json": json.dumps({"company": company, "charts_based_on": "Status"}),
"type": "Donut",
"is_public": 1,
"is_custom": 1,
"custom_options": json.dumps({"axisOptions": {"shortenYAxisNumbers": 1}, "height": 300}),
},
{
"doctype": "Dashboard Chart",
"time_interval": "Yearly",
"chart_type": "Report",
"chart_name": _("Quality Inspection Analysis"),
"name": "Quality Inspection Analysis",
"timespan": "Last Year",
"report_name": "Quality Inspection Summary",
"owner": "Administrator",
"filters_json": json.dumps({}),
"type": "Donut",
"is_public": 1,
"is_custom": 1,
"custom_options": json.dumps({"axisOptions": {"shortenYAxisNumbers": 1}, "height": 300}),
},
{
"doctype": "Dashboard Chart",
"time_interval": "Yearly",
"chart_type": "Report",
"chart_name": _("Pending Work Order"),
"name": "Pending Work Order",
"timespan": "Last Year",
"report_name": "Work Order Summary",
"filters_json": json.dumps({"company": company, "charts_based_on": "Age"}),
"owner": "Administrator",
"type": "Donut",
"is_public": 1,
"is_custom": 1,
"custom_options": json.dumps({"axisOptions": {"shortenYAxisNumbers": 1}, "height": 300}),
},
{
"doctype": "Dashboard Chart",
"time_interval": "Yearly",
"chart_type": "Report",
"chart_name": _("Last Month Downtime Analysis"),
"name": "Last Month Downtime Analysis",
"timespan": "Last Year",
"filters_json": json.dumps({}),
"report_name": "Downtime Analysis",
"owner": "Administrator",
"is_public": 1,
"is_custom": 1,
"type": "Bar",
},
{
"doctype": "Dashboard Chart",
"time_interval": "Yearly",
"chart_type": "Report",
"chart_name": _("Work Order Qty Analysis"),
"name": "Work Order Qty Analysis",
"timespan": "Last Year",
"report_name": "Work Order Summary",
"filters_json": json.dumps({"company": company, "charts_based_on": "Quantity"}),
"owner": "Administrator",
"type": "Bar",
"is_public": 1,
"is_custom": 1,
"custom_options": json.dumps({"barOptions": {"stacked": 1}}),
},
{
"doctype": "Dashboard Chart",
"time_interval": "Yearly",
"chart_type": "Report",
"chart_name": _("Job Card Analysis"),
"name": "Job Card Analysis",
"timespan": "Last Year",
"report_name": "Job Card Summary",
"owner": "Administrator",
"is_public": 1,
"is_custom": 1,
"filters_json": json.dumps({"company": company, "docstatus": 1, "range": "Monthly"}),
"custom_options": json.dumps({"barOptions": {"stacked": 1}}),
"type": "Bar",
},
]
def get_number_cards():
start_date = add_months(nowdate(), -1)
end_date = nowdate()
return [
{
"doctype": "Number Card",
"document_type": "Work Order",
"name": "Monthly Total Work Order",
"filters_json": json.dumps(
[
["Work Order", "docstatus", "=", 1],
["Work Order", "creation", "between", [start_date, end_date]],
]
),
"function": "Count",
"is_public": 1,
"label": _("Monthly Total Work Orders"),
"show_percentage_stats": 1,
"stats_time_interval": "Weekly",
},
{
"doctype": "Number Card",
"document_type": "Work Order",
"name": "Monthly Completed Work Order",
"filters_json": json.dumps(
[
["Work Order", "status", "=", "Completed"],
["Work Order", "docstatus", "=", 1],
["Work Order", "creation", "between", [start_date, end_date]],
]
),
"function": "Count",
"is_public": 1,
"label": _("Monthly Completed Work Orders"),
"show_percentage_stats": 1,
"stats_time_interval": "Weekly",
},
{
"doctype": "Number Card",
"document_type": "Job Card",
"name": "Ongoing Job Card",
"filters_json": json.dumps(
[["Job Card", "status", "!=", "Completed"], ["Job Card", "docstatus", "=", 1]]
),
"function": "Count",
"is_public": 1,
"label": _("Ongoing Job Cards"),
"show_percentage_stats": 1,
"stats_time_interval": "Weekly",
},
{
"doctype": "Number Card",
"document_type": "Quality Inspection",
"name": "Monthly Quality Inspection",
"filters_json": json.dumps(
[
["Quality Inspection", "docstatus", "=", 1],
["Quality Inspection", "creation", "between", [start_date, end_date]],
]
),
"function": "Count",
"is_public": 1,
"label": _("Monthly Quality Inspections"),
"show_percentage_stats": 1,
"stats_time_interval": "Weekly",
},
]