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 3616db44459..180740dcb6e 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 @@ -226,12 +226,14 @@ def get_entries(filters): st.sales_person.isin(frappe.qb.from_(sp).select(sp.name).where((sp.lft >= lft) & (sp.rgt <= rgt))) ) - items = get_items(filters) - if items: + # only resolve items when an item_group/brand filter is set; otherwise get_items + # would return every item in the system and add a huge IN() clause on each run + if filters.get("item_group") or filters.get("brand"): + items = get_items(filters) + if not items: + # the item_group/brand filter matched nothing -> no rows + return [] query = query.where(dt_item.item_code.isin([d[0] for d in items])) - elif filters.get("item_group") or filters.get("brand"): - # item_group/brand filter matched nothing -> no rows - return [] query = query.orderby(st.sales_person).orderby(dt.name, order=frappe.qb.desc)