Merge pull request #52112 from frappe/mergify/bp/version-16-hotfix/pr-52106

fix: show everything else besides other party specific item (backport #52106)
This commit is contained in:
ruthra kumar
2026-01-27 20:08:54 +05:30
committed by GitHub
2 changed files with 17 additions and 6 deletions

View File

@@ -212,7 +212,10 @@ def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=Fals
party = filters.get("customer") or filters.get("supplier") party = filters.get("customer") or filters.get("supplier")
item_rules_list = frappe.get_all( item_rules_list = frappe.get_all(
"Party Specific Item", "Party Specific Item",
filters={"party": party}, filters={
"party": ["!=", party],
"party_type": "Customer" if filters.get("customer") else "Supplier",
},
fields=["restrict_based_on", "based_on_value"], fields=["restrict_based_on", "based_on_value"],
) )
@@ -226,7 +229,7 @@ def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=Fals
filters_dict[rule.restrict_based_on].append(rule.based_on_value) filters_dict[rule.restrict_based_on].append(rule.based_on_value)
for filter in filters_dict: for filter in filters_dict:
filters[scrub(filter)] = ["in", filters_dict[filter]] filters[scrub(filter)] = ["not in", filters_dict[filter]]
if filters.get("customer"): if filters.get("customer"):
del filters["customer"] del filters["customer"]

View File

@@ -35,8 +35,7 @@ class TestPartySpecificItem(IntegrationTestCase):
items = item_query( items = item_query(
doctype="Item", txt="", searchfield="name", start=0, page_len=20, filters=filters, as_dict=False doctype="Item", txt="", searchfield="name", start=0, page_len=20, filters=filters, as_dict=False
) )
for item in items: self.assertTrue(self.item.name in flatten(items))
self.assertEqual(item[0], self.item.name)
def test_item_query_for_supplier(self): def test_item_query_for_supplier(self):
create_party_specific_item( create_party_specific_item(
@@ -49,5 +48,14 @@ class TestPartySpecificItem(IntegrationTestCase):
items = item_query( items = item_query(
doctype="Item", txt="", searchfield="name", start=0, page_len=20, filters=filters, as_dict=False doctype="Item", txt="", searchfield="name", start=0, page_len=20, filters=filters, as_dict=False
) )
for item in items: self.assertTrue(self.item.item_group in flatten(items))
self.assertEqual(item[2], self.item.item_group)
def flatten(lst):
result = []
for item in lst:
if isinstance(item, tuple):
result.extend(flatten(item))
else:
result.append(item)
return result