feat: multi-select customer group in AR Report
(cherry picked from commit 8903c1bc6f24c4e0187f05739887ac6f4af6a7b6)
This commit is contained in:
parent
4eb80ea804
commit
fff294fb37
@ -114,10 +114,13 @@ frappe.query_reports["Accounts Receivable"] = {
|
|||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "customer_group",
|
"fieldname":"customer_group",
|
||||||
"label": __("Customer Group"),
|
"label": __("Customer Group"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "MultiSelectList",
|
||||||
"options": "Customer Group"
|
"options": "Customer Group",
|
||||||
|
get_data: function(txt) {
|
||||||
|
return frappe.db.get_link_options('Customer Group', txt);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "payment_terms_template",
|
"fieldname": "payment_terms_template",
|
||||||
|
@ -840,7 +840,9 @@ class ReceivablePayableReport(object):
|
|||||||
self.customer = qb.DocType("Customer")
|
self.customer = qb.DocType("Customer")
|
||||||
|
|
||||||
if self.filters.get("customer_group"):
|
if self.filters.get("customer_group"):
|
||||||
self.get_hierarchical_filters("Customer Group", "customer_group")
|
groups = get_customer_group_with_children(self.filters.customer_group)
|
||||||
|
customers = qb.from_(self.customer).select(self.customer.name).where(self.customer['customer_group'].isin(groups))
|
||||||
|
self.qb_selection_filter.append(self.ple.party.isin(customers))
|
||||||
|
|
||||||
if self.filters.get("territory"):
|
if self.filters.get("territory"):
|
||||||
self.get_hierarchical_filters("Territory", "territory")
|
self.get_hierarchical_filters("Territory", "territory")
|
||||||
@ -1132,3 +1134,18 @@ class ReceivablePayableReport(object):
|
|||||||
.run()
|
.run()
|
||||||
)
|
)
|
||||||
self.err_journals = [x[0] for x in results] if results else []
|
self.err_journals = [x[0] for x in results] if results else []
|
||||||
|
|
||||||
|
def get_customer_group_with_children(customer_groups):
|
||||||
|
if not isinstance(customer_groups, list):
|
||||||
|
customer_groups = [d.strip() for d in customer_groups.strip().split(",") if d]
|
||||||
|
|
||||||
|
all_customer_groups = []
|
||||||
|
for d in customer_groups:
|
||||||
|
if frappe.db.exists("Customer Group", d):
|
||||||
|
lft, rgt = frappe.db.get_value("Customer Group", d, ["lft", "rgt"])
|
||||||
|
children = frappe.get_all("Customer Group", filters={"lft": [">=", lft], "rgt": ["<=", rgt]})
|
||||||
|
all_customer_groups += [c.name for c in children]
|
||||||
|
else:
|
||||||
|
frappe.throw(_("Customer Group: {0} does not exist").format(d))
|
||||||
|
|
||||||
|
return list(set(all_customer_groups))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user