diff --git a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py
index f4ee188..0fade84 100644
--- a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py
+++ b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py
@@ -25,12 +25,14 @@
 
 class PromotionalScheme(Document):
 	def validate(self):
+		if not self.selling and not self.buying:
+			frappe.throw(_("Atleast one of the Selling or Buying must be selected"))
 		if not (self.price_discount_slabs
 			or self.product_discount_slabs):
 			frappe.throw(_("Price or product discount slabs are required"))
 
 	def on_update(self):
-		data = frappe.get_all(
+		pricing_rules = frappe.get_all(
 			'Pricing Rule',
 			fields = ["promotional_scheme_id", "name", "creation"],
 			filters = {
@@ -39,15 +41,15 @@
 			},
 			order_by = 'creation asc',
 		) or {}
-		self.update_pricing_rules(data)
+		self.update_pricing_rules(pricing_rules)
 
-	def update_pricing_rules(self, data):
+	def update_pricing_rules(self, pricing_rules):
 		rules = {}
 		count = 0
 		names = []
-		for d in data:
-			names.append(d.name)
-			rules[d.get('promotional_scheme_id')] = names
+		for rule in pricing_rules:
+			names.append(rule.name)
+			rules[rule.get('promotional_scheme_id')] = names
 
 		docs = get_pricing_rules(self, rules)
 
@@ -64,9 +66,9 @@
 			frappe.msgprint(_("New {0} pricing rules are created").format(count))
 
 	def on_trash(self):
-		for d in frappe.get_all('Pricing Rule',
+		for rule in frappe.get_all('Pricing Rule',
 			{'promotional_scheme': self.name}):
-			frappe.delete_doc('Pricing Rule', d.name)
+			frappe.delete_doc('Pricing Rule', rule.name)
 
 def get_pricing_rules(doc, rules = {}):
 	new_doc = []
@@ -107,17 +109,20 @@
 				new_doc.append(pr)
 
 		else:
-			for i in range(len(args.get(applicable_for))) :
-
+			applicable_for_values = args.get(applicable_for) or []
+			for applicable_for_value in applicable_for_values:
 				pr = frappe.new_doc("Pricing Rule")
 				pr.title = doc.name
 				temp_args = args.copy()
-				temp_args[applicable_for] = args[applicable_for][i]
+				temp_args[applicable_for] = applicable_for_value
 				pr = set_args(temp_args, pr, doc, child_doc, discount_fields, d)
 				new_doc.append(pr)
 
 	return new_doc
 
+
+
+
 def set_args(args, pr, doc, child_doc, discount_fields, child_doc_fields):
 	pr.update(args)
 	for field in (other_fields + discount_fields):
