From b65bb5df2efeaf5671d16eeb165996c1c2300f67 Mon Sep 17 00:00:00 2001 From: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com> Date: Tue, 13 Nov 2018 11:28:58 +0530 Subject: [PATCH] Function renaming, code cleaning and minor fixes (#15938) --- .../production_analytics.py | 115 ++++++++---------- 1 file changed, 52 insertions(+), 63 deletions(-) diff --git a/erpnext/manufacturing/report/production_analytics/production_analytics.py b/erpnext/manufacturing/report/production_analytics/production_analytics.py index 0602193d51..7447a1f670 100644 --- a/erpnext/manufacturing/report/production_analytics/production_analytics.py +++ b/erpnext/manufacturing/report/production_analytics/production_analytics.py @@ -3,17 +3,16 @@ from __future__ import unicode_literals import frappe -from frappe import _ +from frappe import _, scrub from frappe.utils import getdate -from erpnext.selling.report.sales_analytics.sales_analytics import (get_period_date_ranges,get_period) +from erpnext.stock.report.stock_analytics.stock_analytics import (get_period_date_ranges, get_period) def execute(filters=None): columns = get_columns(filters) - data, chart = get_data(filters,columns) - return columns, data,None ,chart + data, chart = get_data(filters, columns) + return columns, data, None , chart def get_columns(filters): - columns =[ { "label": _("Status"), @@ -22,122 +21,113 @@ def get_columns(filters): "width": 140 }] - ranges = get_period_date_ranges(period=filters["range"], year_start_date = filters["from_date"],year_end_date=filters["to_date"]) + ranges = get_period_date_ranges(filters) for dummy, end_date in ranges: - label = field_name = get_period(end_date,filters["range"]) + period = get_period(end_date, filters) - columns.append( - { - "label": _(label), - "fieldname": field_name, + columns.append({ + "label": _(period), + "fieldname": scrub(period), "fieldtype": "Float", "width": 120 - }, - ) + }) return columns -def get_data_list(filters,entry): - - data_list = { - "All Work Orders" : {}, - "Not Started" : {}, - "Overdue" : {}, - "Pending" : {}, - "Completed" : {} +def get_periodic_data(filters, entry): + periodic_data = { + "All Work Orders": {}, + "Not Started": {}, + "Overdue": {}, + "Pending": {}, + "Completed": {} } - ranges = get_period_date_ranges(period=filters["range"], year_start_date = filters["from_date"],year_end_date=filters["to_date"]) + ranges = get_period_date_ranges(filters) - for from_date,end_date in ranges: - period = get_period(end_date,filters["range"]) + for from_date, end_date in ranges: + period = get_period(end_date, filters) for d in entry: if getdate(d.creation) <= getdate(from_date) or getdate(d.creation) <= getdate(end_date) : - data_list = update_data_list(data_list,"All Work Orders",period) - + periodic_data = update_periodic_data(periodic_data, "All Work Orders", period) if d.status == 'Completed': if getdate(d.actual_end_date) < getdate(from_date) or getdate(d.modified) < getdate(from_date): - data_list = update_data_list(data_list, "Completed",period) + periodic_data = update_periodic_data(periodic_data, "Completed", period) elif getdate(d.actual_start_date) < getdate(from_date) : - data_list = update_data_list(data_list, "Pending", period) + periodic_data = update_periodic_data(periodic_data, "Pending", period) elif getdate(d.planned_start_date) < getdate(from_date) : - data_list = update_data_list(data_list, "Overdue", period) + periodic_data = update_periodic_data(periodic_data, "Overdue", period) else: - data_list = update_data_list(data_list, "Not Started", period) + periodic_data = update_periodic_data(periodic_data, "Not Started", period) elif d.status == 'In Process': if getdate(d.actual_start_date) < getdate(from_date) : - data_list = update_data_list(data_list, "Pending", period) + periodic_data = update_periodic_data(periodic_data, "Pending", period) elif getdate(d.planned_start_date) < getdate(from_date) : - data_list = update_data_list(data_list, "Overdue", period) + periodic_data = update_periodic_data(periodic_data, "Overdue", period) else: - data_list = update_data_list(data_list, "Not Started", period) + periodic_data = update_periodic_data(periodic_data, "Not Started", period) elif d.status == 'Not Started': if getdate(d.planned_start_date) < getdate(from_date) : - data_list = update_data_list(data_list, "Overdue", period) + periodic_data = update_periodic_data(periodic_data, "Overdue", period) else: - data_list = update_data_list(data_list, "Not Started", period) - return data_list + periodic_data = update_periodic_data(periodic_data, "Not Started", period) + return periodic_data -def update_data_list(data_list, status, period): - if data_list.get(status).get(period): - data_list[status][period] += 1 +def update_periodic_data(periodic_data, status, period): + if periodic_data.get(status).get(period): + periodic_data[status][period] += 1 else: - data_list[status][period] = 1 + periodic_data[status][period] = 1 - return data_list - -def get_data(filters,columns): + return periodic_data +def get_data(filters, columns): data = [] - entry = frappe.get_all("Work Order", fields=["creation", "modified", "actual_start_date", "actual_end_date", "planned_start_date", "planned_end_date", "status"], - filters={"docstatus" : 1, "company" : filters["company"] }) + filters={"docstatus": 1, "company": filters["company"] }) - data_list = get_data_list(filters,entry) + periodic_data = get_periodic_data(filters,entry) labels = ["All Work Orders", "Not Started", "Overdue", "Pending", "Completed"] - - chart_data = get_chart_data(data_list,columns) - - ranges = get_period_date_ranges(period=filters["range"], year_start_date = filters["from_date"],year_end_date=filters["to_date"]) + chart_data = get_chart_data(periodic_data,columns) + ranges = get_period_date_ranges(filters) for label in labels: work = {} work["Status"] = label for dummy,end_date in ranges: - period = get_period(end_date,filters["range"]) - if data_list.get(label).get(period): - work[period] = data_list.get(label).get(period) + period = get_period(end_date, filters) + if periodic_data.get(label).get(period): + work[scrub(period)] = periodic_data.get(label).get(period) else: - work[period] = 0.0 + work[scrub(period)] = 0.0 data.append(work) return data, chart_data -def get_chart_data(data_list,columns): - +def get_chart_data(periodic_data, columns): labels = [d.get("label") for d in columns[1:]] all_data, not_start, overdue, pending, completed = [], [], [] , [], [] datasets = [] for d in labels: - all_data.append(data_list.get("All Work Orders").get(d)) - not_start.append(data_list.get("Not Started").get(d)) - overdue.append(data_list.get("Overdue").get(d)) - pending.append(data_list.get("Pending").get(d)) - completed.append(data_list.get("Completed").get(d)) + all_data.append(periodic_data.get("All Work Orders").get(d)) + not_start.append(periodic_data.get("Not Started").get(d)) + overdue.append(periodic_data.get("Overdue").get(d)) + pending.append(periodic_data.get("Pending").get(d)) + completed.append(periodic_data.get("Completed").get(d)) datasets.append({'name':'All Work Orders', 'values': all_data}) datasets.append({'name':'Not Started', 'values': not_start}) @@ -148,10 +138,9 @@ def get_chart_data(data_list,columns): chart = { "data": { 'labels': labels, - 'datasets':datasets + 'datasets': datasets } } - chart["type"] = "line" return chart