@@ -24,22 +24,28 @@ def get_chart_data(data, conditions, filters):
|
|||||||
|
|
||||||
datapoints = []
|
datapoints = []
|
||||||
|
|
||||||
start = 3 if filters.get("based_on") in ["Item", "Supplier"] else 1
|
if filters.get("based_on") in ["Supplier"]:
|
||||||
|
start = 3
|
||||||
|
elif filters.get("based_on") in ["Item"]:
|
||||||
|
start = 2
|
||||||
|
else:
|
||||||
|
start = 1
|
||||||
|
|
||||||
if filters.get("group_by"):
|
if filters.get("group_by"):
|
||||||
start += 1
|
start += 1
|
||||||
|
|
||||||
# fetch only periodic columns as labels
|
# fetch only periodic columns as labels
|
||||||
columns = conditions.get("columns")[start:-2][1::2]
|
columns = conditions.get("columns")[start:-2][2::2]
|
||||||
labels = [column.split(":")[0] for column in columns]
|
labels = [column.split(":")[0] for column in columns]
|
||||||
datapoints = [0] * len(labels)
|
datapoints = [0] * len(labels)
|
||||||
|
|
||||||
for row in data:
|
for row in data:
|
||||||
# If group by filter, don't add first row of group (it's already summed)
|
# If group by filter, don't add first row of group (it's already summed)
|
||||||
if not row[start - 1]:
|
if not row[start]:
|
||||||
continue
|
continue
|
||||||
# Remove None values and compute only periodic data
|
# Remove None values and compute only periodic data
|
||||||
row = [x if x else 0 for x in row[start:-2]]
|
row = [x if x else 0 for x in row[start:-2]]
|
||||||
row = row[1::2]
|
row = row[2::2]
|
||||||
|
|
||||||
for i in range(len(row)):
|
for i in range(len(row)):
|
||||||
datapoints[i] += row[i]
|
datapoints[i] += row[i]
|
||||||
|
|||||||
@@ -97,8 +97,10 @@ def get_data(filters, conditions):
|
|||||||
elif filters.get("group_by") == "Supplier":
|
elif filters.get("group_by") == "Supplier":
|
||||||
sel_col = "t1.supplier"
|
sel_col = "t1.supplier"
|
||||||
|
|
||||||
if filters.get("based_on") in ["Item", "Customer", "Supplier"]:
|
if filters.get("based_on") in ["Customer", "Supplier"]:
|
||||||
inc = 3
|
inc = 3
|
||||||
|
elif filters.get("based_on") in ["Item"]:
|
||||||
|
inc = 2
|
||||||
else:
|
else:
|
||||||
inc = 1
|
inc = 1
|
||||||
|
|
||||||
@@ -158,7 +160,7 @@ def get_data(filters, conditions):
|
|||||||
|
|
||||||
# get data for group_by filter
|
# get data for group_by filter
|
||||||
row1 = frappe.db.sql(
|
row1 = frappe.db.sql(
|
||||||
""" select t1.currency , {} , {} from `tab{}` t1, `tab{} Item` t2 {}
|
""" select t4.default_currency AS currency , {} , {} from `tab{}` t1, `tab{} Item` t2 {}
|
||||||
where t2.parent = t1.name and t1.company = {} and {} between {} and {}
|
where t2.parent = t1.name and t1.company = {} and {} between {} and {}
|
||||||
and t1.docstatus = 1 and {} = {} and {} = {} {} {}
|
and t1.docstatus = 1 and {} = {} and {} = {} {} {}
|
||||||
""".format(
|
""".format(
|
||||||
@@ -392,8 +394,12 @@ def based_wise_columns_query(based_on, trans):
|
|||||||
else:
|
else:
|
||||||
frappe.throw(_("Project-wise data is not available for Quotation"))
|
frappe.throw(_("Project-wise data is not available for Quotation"))
|
||||||
|
|
||||||
based_on_details["based_on_select"] += "t1.currency,"
|
based_on_details["based_on_select"] += "t4.default_currency as currency,"
|
||||||
based_on_details["based_on_cols"].append("Currency:Link/Currency:120")
|
based_on_details["based_on_cols"].append("Currency:Link/Currency:120")
|
||||||
|
based_on_details["addl_tables"] += ", `tabCompany` t4"
|
||||||
|
based_on_details["addl_tables_relational_cond"] = (
|
||||||
|
based_on_details.get("addl_tables_relational_cond", "") + " and t1.company = t4.name"
|
||||||
|
)
|
||||||
|
|
||||||
return based_on_details
|
return based_on_details
|
||||||
|
|
||||||
|
|||||||
@@ -25,22 +25,28 @@ def get_chart_data(data, conditions, filters):
|
|||||||
|
|
||||||
datapoints = []
|
datapoints = []
|
||||||
|
|
||||||
start = 3 if filters.get("based_on") in ["Item", "Customer"] else 1
|
if filters.get("based_on") in ["Customer"]:
|
||||||
|
start = 3
|
||||||
|
elif filters.get("based_on") in ["Item"]:
|
||||||
|
start = 2
|
||||||
|
else:
|
||||||
|
start = 1
|
||||||
|
|
||||||
if filters.get("group_by"):
|
if filters.get("group_by"):
|
||||||
start += 1
|
start += 1
|
||||||
|
|
||||||
# fetch only periodic columns as labels
|
# fetch only periodic columns as labels
|
||||||
columns = conditions.get("columns")[start:-2][1::2]
|
columns = conditions.get("columns")[start:-2][2::2]
|
||||||
labels = [column.split(":")[0] for column in columns]
|
labels = [column.split(":")[0] for column in columns]
|
||||||
datapoints = [0] * len(labels)
|
datapoints = [0] * len(labels)
|
||||||
|
|
||||||
for row in data:
|
for row in data:
|
||||||
# If group by filter, don't add first row of group (it's already summed)
|
# If group by filter, don't add first row of group (it's already summed)
|
||||||
if not row[start - 1]:
|
if not row[start]:
|
||||||
continue
|
continue
|
||||||
# Remove None values and compute only periodic data
|
# Remove None values and compute only periodic data
|
||||||
row = [x if x else 0 for x in row[start:-2]]
|
row = [x if x else 0 for x in row[start:-2]]
|
||||||
row = row[1::2]
|
row = row[2::2]
|
||||||
|
|
||||||
for i in range(len(row)):
|
for i in range(len(row)):
|
||||||
datapoints[i] += row[i]
|
datapoints[i] += row[i]
|
||||||
|
|||||||
@@ -24,22 +24,28 @@ def get_chart_data(data, conditions, filters):
|
|||||||
|
|
||||||
datapoints = []
|
datapoints = []
|
||||||
|
|
||||||
start = 3 if filters.get("based_on") in ["Item", "Customer"] else 1
|
if filters.get("based_on") in ["Customer"]:
|
||||||
|
start = 3
|
||||||
|
elif filters.get("based_on") in ["Item"]:
|
||||||
|
start = 2
|
||||||
|
else:
|
||||||
|
start = 1
|
||||||
|
|
||||||
if filters.get("group_by"):
|
if filters.get("group_by"):
|
||||||
start += 1
|
start += 1
|
||||||
|
|
||||||
# fetch only periodic columns as labels
|
# fetch only periodic columns as labels
|
||||||
columns = conditions.get("columns")[start:-2][1::2]
|
columns = conditions.get("columns")[start:-2][2::2]
|
||||||
labels = [column.split(":")[0] for column in columns]
|
labels = [column.split(":")[0] for column in columns]
|
||||||
datapoints = [0] * len(labels)
|
datapoints = [0] * len(labels)
|
||||||
|
|
||||||
for row in data:
|
for row in data:
|
||||||
# If group by filter, don't add first row of group (it's already summed)
|
# If group by filter, don't add first row of group (it's already summed)
|
||||||
if not row[start - 1]:
|
if not row[start]:
|
||||||
continue
|
continue
|
||||||
# Remove None values and compute only periodic data
|
# Remove None values and compute only periodic data
|
||||||
row = [x if x else 0 for x in row[start:-2]]
|
row = [x if x else 0 for x in row[start:-2]]
|
||||||
row = row[1::2]
|
row = row[2::2]
|
||||||
|
|
||||||
for i in range(len(row)):
|
for i in range(len(row)):
|
||||||
datapoints[i] += row[i]
|
datapoints[i] += row[i]
|
||||||
|
|||||||
Reference in New Issue
Block a user