brotherton-erpnext/erpnext/selling/report/quotation_trends/quotation_trends.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

60 lines
1.5 KiB
Python
Raw Normal View History

# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
2013-06-07 12:35:16 +00:00
from __future__ import unicode_literals
2014-02-14 10:17:51 +00:00
import frappe
from frappe import _
from erpnext.controllers.trends import get_columns, get_data
2013-06-07 12:35:16 +00:00
def execute(filters=None):
if not filters: filters ={}
2013-06-13 13:47:56 +00:00
data = []
2013-06-28 04:39:46 +00:00
conditions = get_columns(filters, "Quotation")
2013-06-20 13:22:31 +00:00
data = get_data(filters, conditions)
chart_data = get_chart_data(data, conditions, filters)
return conditions["columns"], data, None, chart_data
def get_chart_data(data, conditions, filters):
if not (data and conditions):
return []
datapoints = []
start = 2 if filters.get("based_on") in ["Item", "Customer"] else 1
if filters.get("group_by"):
start += 1
# fetch only periodic columns as labels
columns = conditions.get("columns")[start:-2][1::2]
labels = [column.split(':')[0] for column in columns]
datapoints = [0] * len(labels)
for row in data:
# If group by filter, don't add first row of group (it's already summed)
if not row[start-1]:
continue
# Remove None values and compute only periodic data
row = [x if x else 0 for x in row[start:-2]]
row = row[1::2]
for i in range(len(row)):
datapoints[i] += row[i]
return {
"data" : {
"labels" : labels,
"datasets" : [
{
"name" : _("{0}").format(filters.get("period")) + _(" Quoted Amount"),
"values" : datapoints
}
]
},
"type" : "line",
"lineOptions": {
"regionFill": 1
}
}