no -ve balance accepted in sales and purchase invoice
diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py
index 576921a..cd40d61 100644
--- a/controllers/accounts_controller.py
+++ b/controllers/accounts_controller.py
@@ -21,6 +21,10 @@
 from utilities.transaction_base import TransactionBase
 
 class AccountsController(TransactionBase):
+	def validate(self):
+		if self.meta.get_field("grand_total"):
+			self.validate_value("grand_total", ">=", 0)
+
 	def get_gl_dict(self, args, cancel=None):
 		"""this method populates the common properties of a gl entry record"""
 		if cancel is None:
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index 2f3128c..0509de0 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -27,7 +27,8 @@
 from controllers.accounts_controller import AccountsController
 
 class BuyingController(AccountsController):
-	def validate(self):		
+	def validate(self):
+		super(BuyingController, self).validate()
 		if self.meta.get_field("currency"):
 			self.company_currency = get_company_currency(self.doc.company)
 			self.validate_conversion_rate("currency", "conversion_rate")
@@ -37,7 +38,7 @@
 			
 			# IMPORTANT: enable this only when client side code is similar to this one
 			# self.calculate_taxes_and_totals()
-			
+						
 			# set total in words
 			self.set_total_in_words()
 		
diff --git a/controllers/selling_controller.py b/controllers/selling_controller.py
index 40606c3..9db8f4a 100644
--- a/controllers/selling_controller.py
+++ b/controllers/selling_controller.py
@@ -23,6 +23,7 @@
 
 class SellingController(AccountsController):
 	def validate(self):
+		super(SellingController, self).validate()
 		self.set_total_in_words()
 		
 	def set_total_in_words(self):