fix: resolve Item Group tree root structurally

A name lookup misses roots created under a translated name (pre-#49875
setups) or renamed roots. Resolve the first parentless group by lft and
guard against self-parenting when the root itself is saved.
This commit is contained in:
Mihir Kandoi
2026-07-23 14:03:54 +05:30
parent 7239e6ed8c
commit d197d5685e

View File

@@ -32,8 +32,11 @@ class ItemGroup(NestedSet):
def validate(self):
if not self.parent_item_group and not frappe.in_test:
if frappe.db.exists("Item Group", "All Item Groups"):
self.parent_item_group = "All Item Groups"
root = frappe.db.get_value(
"Item Group", {"parent_item_group": ("is", "not set"), "is_group": 1}, order_by="lft asc"
)
if root and root != self.name:
self.parent_item_group = root
self.validate_item_group_defaults()
self.check_item_tax()