From 43539673ccca2e32da63f49a98992f9c2850b5a0 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 25 May 2015 14:12:48 +0530 Subject: [PATCH] [fix] sales person wise transaction summary --- .../sales_person_wise_transaction_summary.py | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py index 0dee7ab3ea..47611176ca 100644 --- a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py +++ b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py @@ -34,7 +34,7 @@ def get_columns(filters): def get_entries(filters): date_field = filters["doc_type"] == "Sales Order" and "transaction_date" or "posting_date" - conditions, items = get_conditions(filters, date_field) + conditions, values = get_conditions(filters, date_field) entries = frappe.db.sql("""select dt.name, dt.customer, dt.territory, dt.%s as posting_date, dt_item.item_code, dt_item.qty, dt_item.base_net_amount, st.sales_person, st.allocated_percentage, dt_item.base_net_amount*st.allocated_percentage/100 as contribution_amt @@ -42,31 +42,33 @@ def get_entries(filters): where st.parent = dt.name and dt.name = dt_item.parent and st.parenttype = %s and dt.docstatus = 1 %s order by st.sales_person, dt.name desc""" % (date_field, filters["doc_type"], filters["doc_type"], '%s', conditions), - tuple([filters["doc_type"]] + items), as_dict=1) + tuple([filters["doc_type"]] + values), as_dict=1, debug=1) return entries def get_conditions(filters, date_field): - conditions = "" - if filters.get("company"): conditions += " and dt.company = '%s'" % \ - filters["company"].replace("'", "\'") - if filters.get("customer"): conditions += " and dt.customer = '%s'" % \ - filters["customer"].replace("'", "\'") - if filters.get("territory"): conditions += " and dt.territory = '%s'" % \ - filters["territory"].replace("'", "\'") - - if filters.get("from_date"): conditions += " and dt.%s >= '%s'" % \ - (date_field, filters["from_date"]) - if filters.get("to_date"): conditions += " and dt.%s <= '%s'" % (date_field, filters["to_date"]) - - if filters.get("sales_person"): conditions += " and st.sales_person = '%s'" % \ - filters["sales_person"].replace("'", "\'") + conditions = [""] + values = [] + + for field in ["company", "customer", "territory", "sales_person"]: + if filters.get(field): + conditions.append("dt.{0}=%s".format(field)) + values.append(filters[field]) + + if filters.get("from_date"): + conditions.append("dt.{0}>=%s".format(date_field)) + values.append(filters["from_date"]) + + if filters.get("to_date"): + conditions.append("dt.{0}<=%s".format(date_field)) + values.append(filters["to_date"]) items = get_items(filters) if items: - conditions += " and dt_item.item_code in (%s)" % ', '.join(['%s']*len(items)) + conditions.append("dt_item.item_code in (%s)" % ', '.join(['%s']*len(items))) + values += items - return conditions, items + return " and ".join(conditions), values def get_items(filters): if filters.get("item_group"): key = "item_group"