From d197d5685eb5c11f45c0dd7d498d989192d0e604 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Thu, 23 Jul 2026 14:03:54 +0530 Subject: [PATCH] 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. --- erpnext/setup/doctype/item_group/item_group.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py index 0ff0088a8d2..8e1b7ec73f2 100644 --- a/erpnext/setup/doctype/item_group/item_group.py +++ b/erpnext/setup/doctype/item_group/item_group.py @@ -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()