# 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", }, ]