[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
This commit is contained in:
parent
51db2ba22a
commit
e970ddcee9
@ -98,7 +98,8 @@ def get_data(filters, conditions):
|
|||||||
(filters.get("company"), filters.get("fiscal_year"), row[i][0],
|
(filters.get("company"), filters.get("fiscal_year"), row[i][0],
|
||||||
data1[d][0]), as_list=1)
|
data1[d][0]), as_list=1)
|
||||||
|
|
||||||
des[ind] = row[i]
|
des[ind] = row[i][0]
|
||||||
|
|
||||||
for j in range(1,len(conditions["columns"])-inc):
|
for j in range(1,len(conditions["columns"])-inc):
|
||||||
des[j+inc] = row1[0][j]
|
des[j+inc] = row1[0][j]
|
||||||
|
|
||||||
@ -213,7 +214,7 @@ def based_wise_columns_query(based_on, trans):
|
|||||||
elif based_on == "Customer":
|
elif based_on == "Customer":
|
||||||
based_on_details["based_on_cols"] = ["Customer:Link/Customer:120", "Territory:Link/Territory:120"]
|
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_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"] = ''
|
based_on_details["addl_tables"] = ''
|
||||||
|
|
||||||
elif based_on == "Customer Group":
|
elif based_on == "Customer Group":
|
||||||
|
@ -10,5 +10,4 @@ def execute(filters=None):
|
|||||||
data = []
|
data = []
|
||||||
conditions = get_columns(filters, "Sales Order")
|
conditions = get_columns(filters, "Sales Order")
|
||||||
data = get_data(filters, conditions)
|
data = get_data(filters, conditions)
|
||||||
|
|
||||||
return conditions["columns"], data
|
return conditions["columns"], data
|
@ -130,30 +130,30 @@ def get_salesperson_item_month_map(filters):
|
|||||||
tdd = get_target_distribution_details(filters)
|
tdd = get_target_distribution_details(filters)
|
||||||
item_groups = get_item_groups()
|
item_groups = get_item_groups()
|
||||||
|
|
||||||
sim_map = {}
|
sales_person_achievement_dict = {}
|
||||||
for sd in salesperson_details:
|
for sd in salesperson_details:
|
||||||
achieved_details = get_achieved_details(filters, sd.name, item_groups)
|
achieved_details = get_achieved_details(filters, sd.name, item_groups)
|
||||||
|
|
||||||
for month_id in range(1, 13):
|
for month_id in range(1, 13):
|
||||||
month = datetime.date(2013, month_id, 1).strftime('%B')
|
month = datetime.date(2013, month_id, 1).strftime('%B')
|
||||||
sim_map.setdefault(sd.name, {}).setdefault(sd.item_group, {})\
|
sales_person_achievement_dict.setdefault(sd.name, {}).setdefault(sd.item_group, {})\
|
||||||
.setdefault(month, frappe._dict({
|
.setdefault(month, frappe._dict({
|
||||||
"target": 0.0, "achieved": 0.0
|
"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) \
|
month_percentage = tdd.get(sd.distribution_id, {}).get(month, 0) \
|
||||||
if sd.distribution_id else 100.0/12
|
if sd.distribution_id else 100.0/12
|
||||||
|
|
||||||
if (filters["target_on"] == "Quantity"):
|
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:
|
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,\
|
sales_target_achieved.achieved = achieved_details.get(sd.item_group, frappe._dict()).\
|
||||||
frappe._dict()).get(filters["target_on"].lower())
|
get(month, frappe._dict()).get(filters["target_on"].lower())
|
||||||
|
|
||||||
return sim_map
|
return sales_person_achievement_dict
|
||||||
|
|
||||||
def get_item_groups():
|
def get_item_groups():
|
||||||
return dict(frappe.get_all("Item", fields=["name", "item_group"], as_list=True))
|
return dict(frappe.get_all("Item", fields=["name", "item_group"], as_list=True))
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
{
|
{
|
||||||
"add_total_row": 1,
|
"add_total_row": 0,
|
||||||
"apply_user_permissions": 1,
|
"apply_user_permissions": 1,
|
||||||
"creation": "2013-05-03 11:31:05",
|
"creation": "2013-05-03 11:31:05",
|
||||||
|
"disabled": 0,
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"doctype": "Report",
|
"doctype": "Report",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_standard": "Yes",
|
"is_standard": "Yes",
|
||||||
"modified": "2014-06-03 07:18:17.312328",
|
"modified": "2016-01-28 04:22:49.476068",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Selling",
|
"module": "Selling",
|
||||||
"name": "Sales Person-wise Transaction Summary",
|
"name": "Sales Person-wise Transaction Summary",
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import msgprint, _
|
from frappe import msgprint, _
|
||||||
|
from frappe.utils import flt
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
if not filters: filters = {}
|
if not filters: filters = {}
|
||||||
@ -12,13 +13,22 @@ def execute(filters=None):
|
|||||||
entries = get_entries(filters)
|
entries = get_entries(filters)
|
||||||
item_details = get_item_details()
|
item_details = get_item_details()
|
||||||
data = []
|
data = []
|
||||||
|
total_contribution_amoount = 0
|
||||||
for d in entries:
|
for d in entries:
|
||||||
|
total_contribution_amoount += flt(d.contribution_amt)
|
||||||
|
|
||||||
data.append([
|
data.append([
|
||||||
d.name, d.customer, d.territory, d.posting_date, d.item_code,
|
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"),
|
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
|
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
|
return columns, data
|
||||||
|
|
||||||
def get_columns(filters):
|
def get_columns(filters):
|
||||||
@ -60,8 +70,8 @@ def get_conditions(filters, date_field):
|
|||||||
values.append(filters[field])
|
values.append(filters[field])
|
||||||
|
|
||||||
if filters.get("sales_person"):
|
if filters.get("sales_person"):
|
||||||
conditions.append("st.sales_person=%s")
|
lft, rgt = frappe.get_value("Sales Person", filters.get("sales_person"), ["lft", "rgt"])
|
||||||
values.append(filters["sales_person"])
|
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"):
|
if filters.get("from_date"):
|
||||||
conditions.append("dt.{0}>=%s".format(date_field))
|
conditions.append("dt.{0}>=%s".format(date_field))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user