refactor: item filters are linked with group filters
This commit is contained in:
parent
7558f1b078
commit
e324d668d3
@ -32,12 +32,6 @@ function get_filters() {
|
||||
"fieldtype": "Link",
|
||||
"width": 100,
|
||||
"options": "Customer Group",
|
||||
"get_query": () => {
|
||||
return {
|
||||
filters: { 'is_group': 0 }
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"fieldname":"customer",
|
||||
@ -46,13 +40,14 @@ function get_filters() {
|
||||
"width": 100,
|
||||
"options": "Customer",
|
||||
"get_query": () => {
|
||||
filters = {
|
||||
'disabled': 0
|
||||
var customer_group = frappe.query_report.get_filter_value('customer_group');
|
||||
return{
|
||||
"query": "erpnext.selling.report.payment_terms_status_for_sales_order.payment_terms_status_for_sales_order.get_customers_or_items",
|
||||
"filters": [
|
||||
['Customer', 'disabled', '=', '0'],
|
||||
['Customer Group','name', '=', customer_group]
|
||||
]
|
||||
}
|
||||
if(frappe.query_report.get_filter_value("customer_group") != "") {
|
||||
filters['customer_group'] = frappe.query_report.get_filter_value("customer_group");
|
||||
}
|
||||
return { 'filters': filters };
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -61,11 +56,6 @@ function get_filters() {
|
||||
"fieldtype": "Link",
|
||||
"width": 100,
|
||||
"options": "Item Group",
|
||||
"get_query": () => {
|
||||
return {
|
||||
filters: { 'is_group': 0 }
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
@ -75,13 +65,14 @@ function get_filters() {
|
||||
"width": 100,
|
||||
"options": "Item",
|
||||
"get_query": () => {
|
||||
filters = {
|
||||
'disabled': 0
|
||||
var item_group = frappe.query_report.get_filter_value('item_group');
|
||||
return{
|
||||
"query": "erpnext.selling.report.payment_terms_status_for_sales_order.payment_terms_status_for_sales_order.get_customers_or_items",
|
||||
"filters": [
|
||||
['Item', 'disabled', '=', '0'],
|
||||
['Item Group','name', '=', item_group]
|
||||
]
|
||||
}
|
||||
if(frappe.query_report.get_filter_value("item_group") != "") {
|
||||
filters['item_group'] = frappe.query_report.get_filter_value("item_group");
|
||||
}
|
||||
return { 'filters': filters };
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -73,6 +73,55 @@ def get_columns():
|
||||
return columns
|
||||
|
||||
|
||||
def get_descendants_of(doctype, group_name):
|
||||
group_doc = qb.DocType(doctype)
|
||||
# get lft and rgt of group node
|
||||
lft, rgt = (
|
||||
qb.from_(group_doc).select(group_doc.lft, group_doc.rgt).where(group_doc.name == group_name)
|
||||
).run()[0]
|
||||
|
||||
# get all children of group node
|
||||
query = (
|
||||
qb.from_(group_doc).select(group_doc.name).where((group_doc.lft >= lft) & (group_doc.rgt <= rgt))
|
||||
)
|
||||
|
||||
child_nodes = []
|
||||
for x in query.run():
|
||||
child_nodes.append(x[0])
|
||||
|
||||
return child_nodes
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
@frappe.validate_and_sanitize_search_inputs
|
||||
def get_customers_or_items(doctype, txt, searchfield, start, page_len, filters):
|
||||
filter_list = []
|
||||
if isinstance(filters, list):
|
||||
for item in filters:
|
||||
if item[0] == doctype:
|
||||
filter_list.append(item)
|
||||
elif item[0] == "Customer Group":
|
||||
if item[3] != "":
|
||||
filter_list.append(
|
||||
[doctype, "customer_group", "in", get_descendants_of("Customer Group", item[3])]
|
||||
)
|
||||
elif item[0] == "Item Group":
|
||||
if item[3] != "":
|
||||
filter_list.append([doctype, "item_group", "in", get_descendants_of("Item Group", item[3])])
|
||||
|
||||
if searchfield and txt:
|
||||
filter_list.append([doctype, searchfield, "like", "%%%s%%" % txt])
|
||||
|
||||
return frappe.desk.reportview.execute(
|
||||
doctype,
|
||||
filters=filter_list,
|
||||
fields=["name", "customer_group"] if doctype == "Customer" else ["name", "item_group"],
|
||||
limit_start=start,
|
||||
limit_page_length=page_len,
|
||||
as_list=True,
|
||||
)
|
||||
|
||||
|
||||
def get_conditions(filters):
|
||||
"""
|
||||
Convert filter options to conditions used in query
|
||||
|
Loading…
x
Reference in New Issue
Block a user