fix: account not added to child company (#20361)
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index cf1748f..1407d5f 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -95,29 +95,29 @@
# ignore validation while creating new compnay or while syncing to child companies
if frappe.local.flags.ignore_root_company_validation or self.flags.ignore_root_company_validation:
return
-
ancestors = get_root_company(self.company)
if ancestors:
if frappe.get_value("Company", self.company, "allow_account_creation_against_child_company"):
return
-
if not frappe.db.get_value("Account",
{'account_name': self.account_name, 'company': ancestors[0]}, 'name'):
frappe.throw(_("Please add the account to root level Company - %s" % ancestors[0]))
else:
descendants = get_descendants_of('Company', self.company)
if not descendants: return
-
parent_acc_name_map = {}
parent_acc_name, parent_acc_number = frappe.db.get_value('Account', self.parent_account, \
["account_name", "account_number"])
- for d in frappe.db.get_values('Account',
- { "company": ["in", descendants], "account_name": parent_acc_name,
- "account_number": parent_acc_number },
- ["company", "name"], as_dict=True):
+ filters = {
+ "company": ["in", descendants],
+ "account_name": parent_acc_name,
+ }
+ if parent_acc_number:
+ filters["account_number"] = parent_acc_number
+
+ for d in frappe.db.get_values('Account', filters=filters, fieldname=["company", "name"], as_dict=True):
parent_acc_name_map[d["company"]] = d["name"]
if not parent_acc_name_map: return
-
self.create_account_for_child_company(parent_acc_name_map, descendants, parent_acc_name)
def validate_group_or_ledger(self):
@@ -175,7 +175,6 @@
filters["account_number"] = self.account_number
child_account = frappe.db.get_value("Account", filters, 'name')
-
if not child_account:
doc = frappe.copy_doc(self)
doc.flags.ignore_root_company_validation = True