Added on_trash function for checking link of the master
diff --git a/erpnext/setup/doctype/customer_group/customer_group.py b/erpnext/setup/doctype/customer_group/customer_group.py
index 30885eb..cc4a9e0 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.py
+++ b/erpnext/setup/doctype/customer_group/customer_group.py
@@ -34,26 +34,32 @@
 
 
 class DocType:
-  def __init__(self, doc, doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
-    self.nsm_parent_field = 'parent_customer_group';
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
+		self.nsm_parent_field = 'parent_customer_group';
 
 
-  # update Node Set Model
-  def update_nsm_model(self):
-    import webnotes
-    import webnotes.utils.nestedset
-    webnotes.utils.nestedset.update_nsm(self)
+	# update Node Set Model
+	def update_nsm_model(self):
+		import webnotes
+		import webnotes.utils.nestedset
+		webnotes.utils.nestedset.update_nsm(self)
 
-  # ON UPDATE
-  #--------------------------------------
-  def on_update(self):
-    # update nsm
-    self.update_nsm_model()   
+	# ON UPDATE
+	#--------------------------------------
+	def on_update(self):
+		# update nsm
+		self.update_nsm_model()   
 
 
-  def validate(self): 
+	def validate(self): 
+		if sql("select name from `tabCustomer Group` where name = %s and docstatus = 2", (self.doc.customer_group_name)):
+			msgprint("""Another %s record is trashed. 
+				To untrash please go to Setup & click on Trash."""%(self.doc.customer_group_name), raise_exception = 1)
 
-    if sql("select name from `tabCustomer Group` where name = %s and docstatus = 2", (self.doc.customer_group_name)):
-      msgprint("%s record is trashed. To untrash please go to Setup & click on Trash."%(self.doc.customer_group_name), raise_exception = 1)
+	def on_trash(self):
+		cust = sql("select name from `tabCustomer` where ifnull(customer_group, '') = %s", self.doc.name)
+		if cust:
+			msgprint("""Customer Group: %s can not be trashed/deleted because it is used in customer: %s. 
+				To trash/delete this, remove/change customer group in customer master""" % (self.doc.name, cust[0][0] or ''), raise_exception=1)
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index ba49117..a3ed364 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -60,4 +60,10 @@
     r = sql("select name from `tabItem Group` where name = '%s' and docstatus = 2"%(self.doc.item_group_name))
     if r:
       msgprint("'%s' record is trashed. To untrash please go to Setup & click on Trash."%(self.doc.item_group_name))
-      raise Exception
\ No newline at end of file
+      raise Exception
+	
+	def on_trash(self):
+		ig = sql("select name from `tabItem` where ifnull(item_group, '') = %s", self.doc.name)
+		if ig:
+			msgprint("""Item Group: %s can not be trashed/deleted because it is used in item: %s. 
+				To trash/delete this, remove/change item group in item master""" % (self.doc.name, ig[0][0] or ''), raise_exception=1)
diff --git a/erpnext/setup/doctype/territory/territory.py b/erpnext/setup/doctype/territory/territory.py
index 461b447..8017ad5 100644
--- a/erpnext/setup/doctype/territory/territory.py
+++ b/erpnext/setup/doctype/territory/territory.py
@@ -74,4 +74,11 @@
     for d in getlist(self.doclist, 'target_details'):
       if not flt(d.target_qty) and not flt(d.target_amount):
         msgprint("Either target qty or target amount is mandatory.")
-        raise Exception
\ No newline at end of file
+        raise Exception
+
+
+	def on_trash(self):
+		terr = sql("select name from `tabCustomer` where ifnull(territory, '') = %s", self.doc.name)
+		if terr:
+			msgprint("""Territory: %s can not be trashed/deleted because it is used in territory: %s. 
+				To trash/delete this, remove/change territory in customer master""" % (self.doc.name, terr[0][0] or ''), raise_exception=1)