Account balance must be debit / credit, validate if balance already in credit / debit. Fixes #1442
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index c551a62..e5e2e41 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -30,6 +30,7 @@
self.validate_mandatory()
self.validate_warehouse_account()
self.validate_frozen_accounts_modifier()
+ self.validate_balance_must_be_settings()
def validate_master_name(self):
if self.master_type in ('Customer', 'Supplier') or self.account_type == "Warehouse":
@@ -69,6 +70,15 @@
frozen_accounts_modifier not in frappe.user.get_roles():
throw(_("You are not authorized to set Frozen value"))
+ def validate_balance_must_be_settings(self):
+ from erpnext.accounts.utils import get_balance_on
+ account_balance = get_balance_on(self.name)
+
+ if account_balance > 0 and self.balance_must_be == "Credit":
+ frappe.throw(_("Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'"))
+ elif account_balance < 0 and self.balance_must_be == "Debit":
+ frappe.throw(_("Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'"))
+
def convert_group_to_ledger(self):
if self.check_if_child_exists():
throw(_("Account with child nodes cannot be converted to ledger"))