[fix] Validate Company in Account autoname
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 1f9c74d..03bd587 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -19,8 +19,12 @@
self.get("__onload").can_freeze_account = True
def autoname(self):
- self.name = self.account_name.strip() + ' - ' + \
- frappe.db.get_value("Company", self.company, "abbr")
+ # first validate if company exists
+ company = frappe.db.get_value("Company", self.company, ["abbr", "name"], as_dict=True)
+ if not company:
+ frappe.throw(_('Company {0} does not exist').format(self.company))
+
+ self.name = self.account_name.strip() + ' - ' + company.abbr
def validate(self):
if frappe.local.flags.allow_unverified_charts:
@@ -68,7 +72,7 @@
if self.root_type != db_value.root_type:
frappe.db.sql("update `tabAccount` set root_type=%s where lft > %s and rgt < %s",
(self.root_type, self.lft, self.rgt))
-
+
if self.root_type and not self.report_type:
self.report_type = "Balance Sheet" \
if self.root_type in ("Asset", "Liability", "Equity") else "Profit and Loss"
@@ -78,14 +82,14 @@
if frappe.db.exists("Account", self.name):
if not frappe.db.get_value("Account", self.name, "parent_account"):
throw(_("Root cannot be edited."), RootNotEditable)
-
+
if not self.parent_account and not self.is_group:
frappe.throw(_("Root Account must be a group"))
-
+
def validate_group_or_ledger(self):
if self.get("__islocal"):
return
-
+
existing_is_group = frappe.db.get_value("Account", self.name, "is_group")
if self.is_group != existing_is_group:
if self.check_gle_exists():
@@ -153,7 +157,7 @@
def validate_mandatory(self):
if not self.root_type:
throw(_("Root Type is mandatory"))
-
+
if not self.report_type:
throw(_("Report Type is mandatory"))
@@ -216,9 +220,9 @@
if val != [self.is_group, self.root_type, self.company]:
throw(_("""Merging is only possible if following properties are same in both records. Is Group, Root Type, Company"""))
-
+
if self.is_group and frappe.db.get_value("Account", new, "parent_account") == old:
- frappe.db.set_value("Account", new, "parent_account",
+ frappe.db.set_value("Account", new, "parent_account",
frappe.db.get_value("Account", old, "parent_account"))
return new_account