Added item group and brand in sales-person-wise transaction summary report
This commit is contained in:
parent
1aea75261d
commit
c25681c36c
@ -9,7 +9,15 @@ def execute(filters=None):
|
|||||||
if not filters: filters = {}
|
if not filters: filters = {}
|
||||||
|
|
||||||
columns = get_columns(filters)
|
columns = get_columns(filters)
|
||||||
data = get_entries(filters)
|
entries = get_entries(filters)
|
||||||
|
item_details = get_item_details()
|
||||||
|
data = []
|
||||||
|
for d in entries:
|
||||||
|
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_amount, d.sales_person, d.allocated_percentage, d.contribution_amt
|
||||||
|
])
|
||||||
|
|
||||||
return columns, data
|
return columns, data
|
||||||
|
|
||||||
@ -19,21 +27,22 @@ def get_columns(filters):
|
|||||||
|
|
||||||
return [filters["doc_type"] + ":Link/" + filters["doc_type"] + ":140",
|
return [filters["doc_type"] + ":Link/" + filters["doc_type"] + ":140",
|
||||||
_("Customer") + ":Link/Customer:140", _("Territory") + ":Link/Territory:100", _("Posting Date") + ":Date:100",
|
_("Customer") + ":Link/Customer:140", _("Territory") + ":Link/Territory:100", _("Posting Date") + ":Date:100",
|
||||||
_("Item Code") + ":Link/Item:120", _("Qty") + ":Float:100", _("Amount") + ":Currency:120",
|
_("Item Code") + ":Link/Item:120", _("Item Group") + ":Link/Item Group:120",
|
||||||
|
_("Brand") + ":Link/Brand:120", _("Qty") + ":Float:100", _("Amount") + ":Currency:120",
|
||||||
_("Sales Person") + ":Link/Sales Person:140", _("Contribution %") + ":Float:110",
|
_("Sales Person") + ":Link/Sales Person:140", _("Contribution %") + ":Float:110",
|
||||||
_("Contribution Amount") + ":Currency:140"]
|
_("Contribution Amount") + ":Currency:140"]
|
||||||
|
|
||||||
def get_entries(filters):
|
def get_entries(filters):
|
||||||
date_field = filters["doc_type"] == "Sales Order" and "transaction_date" or "posting_date"
|
date_field = filters["doc_type"] == "Sales Order" and "transaction_date" or "posting_date"
|
||||||
conditions, items = get_conditions(filters, date_field)
|
conditions, items = get_conditions(filters, date_field)
|
||||||
entries = frappe.db.sql("""select dt.name, dt.customer, dt.territory, dt.%s,
|
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_amount, st.sales_person,
|
dt_item.item_code, dt_item.qty, dt_item.base_amount, st.sales_person,
|
||||||
st.allocated_percentage, dt_item.base_amount*st.allocated_percentage/100
|
st.allocated_percentage, dt_item.base_amount*st.allocated_percentage/100 as contribution_amt
|
||||||
from `tab%s` dt, `tab%s Item` dt_item, `tabSales Team` st
|
from `tab%s` dt, `tab%s Item` dt_item, `tabSales Team` st
|
||||||
where st.parent = dt.name and dt.name = dt_item.parent and st.parenttype = %s
|
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""" %
|
and dt.docstatus = 1 %s order by st.sales_person, dt.name desc""" %
|
||||||
(date_field, filters["doc_type"], filters["doc_type"], '%s', conditions),
|
(date_field, filters["doc_type"], filters["doc_type"], '%s', conditions),
|
||||||
tuple([filters["doc_type"]] + items), as_list=1)
|
tuple([filters["doc_type"]] + items), as_dict=1)
|
||||||
|
|
||||||
return entries
|
return entries
|
||||||
|
|
||||||
@ -70,3 +79,10 @@ def get_items(filters):
|
|||||||
(key, '%s'), (filters[key]))
|
(key, '%s'), (filters[key]))
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|
||||||
|
def get_item_details():
|
||||||
|
item_details = {}
|
||||||
|
for d in frappe.db.sql("""select name, item_group, brand from `tabItem`""", as_dict=1):
|
||||||
|
item_details.setdefault(d.name, d)
|
||||||
|
|
||||||
|
return item_details
|
||||||
|
Loading…
x
Reference in New Issue
Block a user