[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))