fix: Filters did not consider Website Item Group

This commit is contained in:
marination 2021-06-23 16:03:24 +05:30
parent ea2408744a
commit 9f305e983c
2 changed files with 16 additions and 7 deletions

View File

@ -22,12 +22,15 @@ class ProductFiltersBuilder:
filter_data = [] filter_data = []
for df in fields: for df in fields:
filters = {} filters, or_filters = {}, []
if df.fieldtype == "Link": if df.fieldtype == "Link":
if self.item_group: if self.item_group:
filters['item_group'] = self.item_group or_filters.extend([
["item_group", "=", self.item_group],
["Website Item Group", "item_group", "=", self.item_group]
])
values = frappe.get_all("Item", fields=[df.fieldname], filters=filters, distinct="True", pluck=df.fieldname) values = frappe.get_all("Item", fields=[df.fieldname], filters=filters, or_filters=or_filters, distinct="True", pluck=df.fieldname, debug=1)
else: else:
doctype = df.get_link_doctype() doctype = df.get_link_doctype()
@ -44,7 +47,9 @@ class ProductFiltersBuilder:
values = [d.name for d in frappe.get_all(doctype, filters)] values = [d.name for d in frappe.get_all(doctype, filters)]
# Remove None # Remove None
values = values.remove(None) if None in values else values if None in values:
values.remove(None)
if values: if values:
filter_data.append([df, values]) filter_data.append([df, values])
@ -61,14 +66,18 @@ class ProductFiltersBuilder:
for attr_doc in attribute_docs: for attr_doc in attribute_docs:
selected_attributes = [] selected_attributes = []
for attr in attr_doc.item_attribute_values: for attr in attr_doc.item_attribute_values:
or_filters = []
filters= [ filters= [
["Item Variant Attribute", "attribute", "=", attr.parent], ["Item Variant Attribute", "attribute", "=", attr.parent],
["Item Variant Attribute", "attribute_value", "=", attr.attribute_value] ["Item Variant Attribute", "attribute_value", "=", attr.attribute_value]
] ]
if self.item_group: if self.item_group:
filters.append(["item_group", "=", self.item_group]) or_filters.extend([
["item_group", "=", self.item_group],
["Website Item Group", "item_group", "=", self.item_group]
])
if frappe.db.get_all("Item", filters, limit=1): if frappe.db.get_all("Item", filters, or_filters=or_filters, limit=1):
selected_attributes.append(attr) selected_attributes.append(attr)
if selected_attributes: if selected_attributes:

View File

@ -101,7 +101,7 @@ class ProductQuery:
for item in result: for item in result:
product_info = get_product_info_for_website(item.item_code, skip_quotation_creation=True).get('product_info') product_info = get_product_info_for_website(item.item_code, skip_quotation_creation=True).get('product_info')
if product_info: if product_info:
item.formatted_price = product_info.get('price', {}).get('formatted_price') item.formatted_price = (product_info.get('price') or {}).get('formatted_price')
return result return result