diff --git a/erpnext/controllers/trends.py b/erpnext/controllers/trends.py index 16387a5c4c..6be8d96ad1 100644 --- a/erpnext/controllers/trends.py +++ b/erpnext/controllers/trends.py @@ -31,10 +31,10 @@ def validate_filters(filters): 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 @@ def get_data(filters, conditions): (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 @@ def based_wise_columns_query(based_on, trans): 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 79e7381587..c0a0f085d9 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 @@ def execute(filters=None): 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 1d910e1d26..bbd0abc776 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 @@ def get_salesperson_item_month_map(filters): 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 dabf604841..0612dc02e5 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 55995792b8..155bec6bd8 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 @@ def execute(filters=None): 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 @@ def get_conditions(filters, date_field): 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))