[Fix]
1. Sales Person wise transaction report
2. Sales Person wise target variance report
3. Sales order trend report generation for selection in group by feild
diff --git a/erpnext/controllers/trends.py b/erpnext/controllers/trends.py
index 16387a5..6be8d96 100644
--- a/erpnext/controllers/trends.py
+++ b/erpnext/controllers/trends.py
@@ -31,10 +31,10 @@
 	for f in ["Fiscal Year", "Based On", "Period", "Company"]:
 		if not filters.get(f.lower().replace(" ", "_")):
 			frappe.throw(_("{0} is mandatory").format(f))
-			
+
 	if not frappe.db.exists("Fiscal Year", filters.get("fiscal_year")):
 		frappe.throw(_("Fiscal Year: {0} does not exists").format(filters.get("fiscal_year")))
-		
+
 	if filters.get("based_on") == filters.get("group_by"):
 		frappe.throw(_("'Based On' and 'Group By' can not be same"))
 
@@ -98,7 +98,8 @@
 						(filters.get("company"), filters.get("fiscal_year"), row[i][0],
 							data1[d][0]), as_list=1)
 
-				des[ind] = row[i]
+				des[ind] = row[i][0]
+
 				for j in range(1,len(conditions["columns"])-inc):
 					des[j+inc] = row1[0][j]
 
@@ -213,7 +214,7 @@
 	elif based_on == "Customer":
 		based_on_details["based_on_cols"] = ["Customer:Link/Customer:120", "Territory:Link/Territory:120"]
 		based_on_details["based_on_select"] = "t1.customer_name, t1.territory, "
-		based_on_details["based_on_group_by"] = 't1.customer_name'
+		based_on_details["based_on_group_by"] = 't1.customer'
 		based_on_details["addl_tables"] = ''
 
 	elif based_on == "Customer Group":
diff --git a/erpnext/selling/report/sales_order_trends/sales_order_trends.py b/erpnext/selling/report/sales_order_trends/sales_order_trends.py
index 79e7381..c0a0f08 100644
--- a/erpnext/selling/report/sales_order_trends/sales_order_trends.py
+++ b/erpnext/selling/report/sales_order_trends/sales_order_trends.py
@@ -10,5 +10,4 @@
 	data = []
 	conditions = get_columns(filters, "Sales Order")
 	data = get_data(filters, conditions)
-	
-	return conditions["columns"], data 
\ No newline at end of file
+	return conditions["columns"], data
diff --git a/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.py b/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.py
index 1d910e1..bbd0abc 100644
--- a/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.py
+++ b/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.py
@@ -130,30 +130,30 @@
 	tdd = get_target_distribution_details(filters)
 	item_groups = get_item_groups()
 
-	sim_map = {}
+	sales_person_achievement_dict = {}
 	for sd in salesperson_details:
 		achieved_details = get_achieved_details(filters, sd.name, item_groups)
 
 		for month_id in range(1, 13):
 			month = datetime.date(2013, month_id, 1).strftime('%B')
-			sim_map.setdefault(sd.name, {}).setdefault(sd.item_group, {})\
-				.setdefault(month, frappe._dict({
-					"target": 0.0, "achieved": 0.0
-				}))
+			sales_person_achievement_dict.setdefault(sd.name, {}).setdefault(sd.item_group, {})\
+					.setdefault(month, frappe._dict({
+							"target": 0.0, "achieved": 0.0
+						}))
 
-			tav_dict = sim_map[sd.name][sd.item_group][month]
+			sales_target_achieved = sales_person_achievement_dict[sd.name][sd.item_group][month]
 			month_percentage = tdd.get(sd.distribution_id, {}).get(month, 0) \
 				if sd.distribution_id else 100.0/12
 
 			if (filters["target_on"] == "Quantity"):
-				tav_dict.target = flt(sd.target_qty) * month_percentage / 100
+				sales_target_achieved.target = flt(sd.target_qty) * month_percentage / 100
 			else:
-				tav_dict.target = flt(sd.target_amount) * month_percentage / 100
+				sales_target_achieved.target = flt(sd.target_amount) * month_percentage / 100
 
-			tav_dict.achieved = achieved_details.get(sd.item_group, frappe._dict()).get(month,\
-				frappe._dict()).get(filters["target_on"].lower())
+			sales_target_achieved.achieved = achieved_details.get(sd.item_group, frappe._dict()).\
+					get(month, frappe._dict()).get(filters["target_on"].lower())
 
-	return sim_map
+	return sales_person_achievement_dict
 
 def get_item_groups():
 	return dict(frappe.get_all("Item", fields=["name", "item_group"], as_list=True))
diff --git a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.json b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.json
index dabf604..0612dc0 100644
--- a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.json
+++ b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.json
@@ -1,12 +1,13 @@
 {
- "add_total_row": 1, 
+ "add_total_row": 0, 
  "apply_user_permissions": 1, 
  "creation": "2013-05-03 11:31:05", 
+ "disabled": 0, 
  "docstatus": 0, 
  "doctype": "Report", 
  "idx": 1, 
  "is_standard": "Yes", 
- "modified": "2014-06-03 07:18:17.312328", 
+ "modified": "2016-01-28 04:22:49.476068", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Sales Person-wise Transaction Summary", 
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 5599579..155bec6 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
@@ -4,6 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import msgprint, _
+from frappe.utils import flt
 
 def execute(filters=None):
 	if not filters: filters = {}
@@ -12,13 +13,22 @@
 	entries = get_entries(filters)
 	item_details = get_item_details()
 	data = []
+	total_contribution_amoount = 0
 	for d in entries:
+		total_contribution_amoount += flt(d.contribution_amt)
+
 		data.append([
 			d.name, d.customer, d.territory, d.posting_date, d.item_code,
 			item_details.get(d.item_code, {}).get("item_group"), item_details.get(d.item_code, {}).get("brand"),
 			d.qty, d.base_net_amount, d.sales_person, d.allocated_percentage, d.contribution_amt
 		])
 
+	if data:
+		total_row = [""]*len(data[0])
+		total_row[0] = _("Total")
+		total_row[-1] = total_contribution_amoount
+		data.append(total_row)
+
 	return columns, data
 
 def get_columns(filters):
@@ -60,8 +70,8 @@
 			values.append(filters[field])
 
 	if filters.get("sales_person"):
-		conditions.append("st.sales_person=%s")
-		values.append(filters["sales_person"])
+		lft, rgt = frappe.get_value("Sales Person", filters.get("sales_person"), ["lft", "rgt"])
+		conditions.append("exists(select name from `tabSales Person` where lft >= %s and rgt <= %s and name=st.sales_person)" % (lft, rgt))
 
 	if filters.get("from_date"):
 		conditions.append("dt.{0}>=%s".format(date_field))