[fix] [minor] material request sales order wise through production planning tool
diff --git a/buying/doctype/purchase_common/purchase_common.py b/buying/doctype/purchase_common/purchase_common.py
index 6d8be0e..b480caf 100644
--- a/buying/doctype/purchase_common/purchase_common.py
+++ b/buying/doctype/purchase_common/purchase_common.py
@@ -36,13 +36,13 @@
 				if flt(d.conversion_factor):
 					last_purchase_rate = flt(d.purchase_rate) / flt(d.conversion_factor)
 				else:
-					msgprint(_("Row ") + cstr(d.idx) + ": " + 
-						_("UOM Conversion Factor is mandatory"), raise_exception=1)
+					webnotes.throw(_("Row ") + cstr(d.idx) + ": " + 
+						_("UOM Conversion Factor is mandatory"))
 
 			# update last purchsae rate
 			if last_purchase_rate:
-				webnotes.conn.sql("update `tabItem` set last_purchase_rate = %s where name = %s",
-						(flt(last_purchase_rate),d.item_code))
+				webnotes.conn.sql("""update `tabItem` set last_purchase_rate = %s where name = %s""",
+					(flt(last_purchase_rate), d.item_code))
 	
 	def get_last_purchase_rate(self, obj):
 		"""get last purchase rates for all items"""
@@ -74,11 +74,11 @@
 		for d in getlist( obj.doclist, obj.fname):
 			# validation for valid qty	
 			if flt(d.qty) < 0 or (d.parenttype != 'Purchase Receipt' and not flt(d.qty)):
-				msgprint("Please enter valid qty for item %s" % cstr(d.item_code))
-				raise Exception
+				webnotes.throw("Please enter valid qty for item %s" % cstr(d.item_code))
 			
 			# udpate with latest quantities
-			bin = webnotes.conn.sql("select projected_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
+			bin = webnotes.conn.sql("""select projected_qty from `tabBin` where 
+				item_code = %s and warehouse = %s""", (d.item_code, d.warehouse), as_dict=1)
 			
 			f_lst ={'projected_qty': bin and flt(bin[0]['projected_qty']) or 0, 'ordered_qty': 0, 'received_qty' : 0}
 			if d.doctype == 'Purchase Receipt Item':
@@ -87,22 +87,21 @@
 				if d.fields.has_key(x):
 					d.fields[x] = f_lst[x]
 			
-			item = webnotes.conn.sql("select is_stock_item, is_purchase_item, is_sub_contracted_item, end_of_life from tabItem where name=%s", 
-				d.item_code)
+			item = webnotes.conn.sql("""select is_stock_item, is_purchase_item, 
+				is_sub_contracted_item, end_of_life from `tabItem` where name=%s""", d.item_code)
 			if not item:
-				msgprint("Item %s does not exist in Item Master." % cstr(d.item_code), raise_exception=True)
+				webnotes.throw("Item %s does not exist in Item Master." % cstr(d.item_code))
 			
 			from stock.utils import validate_end_of_life
 			validate_end_of_life(d.item_code, item[0][3])
 			
 			# validate stock item
 			if item[0][0]=='Yes' and d.qty and not d.warehouse:
-				msgprint("Warehouse is mandatory for %s, since it is a stock item" %
-				 	d.item_code, raise_exception=1)
+				webnotes.throw("Warehouse is mandatory for %s, since it is a stock item" % d.item_code)
 			
 			# validate purchase item
 			if item[0][1] != 'Yes' and item[0][2] != 'Yes':
-				msgprint("Item %s is not a purchase item or sub-contracted item. Please check" % (d.item_code), raise_exception=True)
+				webnotes.throw("Item %s is not a purchase item or sub-contracted item. Please check" % (d.item_code))
 			
 			# list criteria that should not repeat if item is stock item
 			e = [d.schedule_date, d.item_code, d.description, d.warehouse, d.uom, 
@@ -113,25 +112,25 @@
 			# if is not stock item
 			f = [d.schedule_date, d.item_code, d.description]
 			
-			ch = webnotes.conn.sql("select is_stock_item from `tabItem` where name = '%s'"%d.item_code)
+			ch = webnotes.conn.sql("""select is_stock_item from `tabItem` where name = %s""", d.item_code)
 			
 			if ch and ch[0][0] == 'Yes':	
 				# check for same items
 				if e in check_list:
-					msgprint("""Item %s has been entered more than once with same description, schedule date, warehouse and uom.\n 
-						Please change any of the field value to enter the item twice""" % d.item_code, raise_exception = 1)
+					webnotes.throw("""Item %s has been entered more than once with same description, schedule date, warehouse and uom.\n 
+						Please change any of the field value to enter the item twice""" % d.item_code)
 				else:
 					check_list.append(e)
 					
 			elif ch and ch[0][0] == 'No':
 				# check for same items
 				if f in chk_dupl_itm:
-					msgprint("""Item %s has been entered more than once with same description, schedule date.\n 
-						Please change any of the field value to enter the item twice.""" % d.item_code, raise_exception = 1)
+					webnotes.throw("""Item %s has been entered more than once with same description, schedule date.\n 
+						Please change any of the field value to enter the item twice.""" % d.item_code)
 				else:
 					chk_dupl_itm.append(f)
 					
-	def get_qty(self,curr_doctype,ref_tab_fname,ref_tab_dn,ref_doc_tname, transaction, curr_parent_name):
+	def get_qty(self, curr_doctype, ref_tab_fname, ref_tab_dn, ref_doc_tname, transaction, curr_parent_name):
 		# Get total Quantities of current doctype (eg. PR) except for qty of this transaction
 		#------------------------------
 		# please check as UOM changes from Material Request - Purchase Order ,so doing following else uom should be same .
@@ -139,35 +138,36 @@
 		# but if in Material Request uom KG it can change in PO
 		
 		get_qty = (transaction == 'Material Request - Purchase Order') and 'qty * conversion_factor' or 'qty'
-		qty = webnotes.conn.sql("select sum(%s) from `tab%s` where %s = '%s' and docstatus = 1 and parent != '%s'"% ( get_qty, curr_doctype, ref_tab_fname, ref_tab_dn, curr_parent_name))
+		qty = webnotes.conn.sql("""select sum(%s) from `tab%s` where %s = %s and 
+			docstatus = 1 and parent != %s""", (get_qty, curr_doctype, ref_tab_fname, ref_tab_dn, curr_parent_name))
 		qty = qty and flt(qty[0][0]) or 0 
 		
 		# get total qty of ref doctype
 		#--------------------
-		max_qty = webnotes.conn.sql("select qty from `tab%s` where name = '%s' and docstatus = 1"% (ref_doc_tname, ref_tab_dn))
+		max_qty = webnotes.conn.sql("""select qty from `tab%s` where name = %s 
+			and docstatus = 1""", (ref_doc_tname, ref_tab_dn))
 		max_qty = max_qty and flt(max_qty[0][0]) or 0
 		
 		return cstr(qty)+'~~~'+cstr(max_qty)
 
 	def check_for_stopped_status(self, doctype, docname):
-		stopped = webnotes.conn.sql("select name from `tab%s` where name = '%s' and status = 'Stopped'" % 
-			( doctype, docname))
+		stopped = webnotes.conn.sql("""select name from `tab%s` where name = '%s' and 
+			status = 'Stopped'""", (doctype, docname))
 		if stopped:
-			msgprint("One cannot do any transaction against %s : %s, it's status is 'Stopped'" % 
-				( doctype, docname), raise_exception=1)
+			webnotes.throw("One cannot do any transaction against %s : %s, it's status is 'Stopped'" % 
+				(doctype, docname))
 	
-	def check_docstatus(self, check, doctype, docname , detail_doctype = ''):
+	def check_docstatus(self, check, doctype, docname, detail_doctype = ''):
 		if check == 'Next':
 			submitted = webnotes.conn.sql("""select t1.name from `tab%s` t1,`tab%s` t2 
 				where t1.name = t2.parent and t2.prevdoc_docname = %s and t1.docstatus = 1""" 
 				% (doctype, detail_doctype, '%s'), docname)
 			if submitted:
-				msgprint(cstr(doctype) + ": " + cstr(submitted[0][0]) 
-					+ _(" has already been submitted."), raise_exception=1)
+				webnotes.throw(cstr(doctype) + ": " + cstr(submitted[0][0]) 
+					+ _("has already been submitted."))
 
 		if check == 'Previous':
 			submitted = webnotes.conn.sql("""select name from `tab%s` 
-				where docstatus = 1 and name = %s"""% (doctype, '%s'), docname)
+				where docstatus = 1 and name = %s""" % (doctype, '%s'), docname)
 			if not submitted:
-				msgprint(cstr(doctype) + ": " + cstr(submitted[0][0]) 
-					+ _(" not submitted"), raise_exception=1)
+				webnotes.throw(cstr(doctype) + ": " + cstr(submitted[0][0]) + _("not submitted"))
diff --git a/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index 17db5f4..c1185a1 100644
--- a/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -154,20 +154,20 @@
 		for d in getlist(self.doclist, 'pp_details'):
 			self.validate_bom_no(d)
 			if not flt(d.planned_qty):
-				webnotes.throw(_("Please Enter Planned Qty for item: %s at row no: %s") % 
+				webnotes.throw("Please Enter Planned Qty for item: %s at row no: %s" % 
 					(d.item_code, d.idx))
 				
 	def validate_bom_no(self, d):
 		if not d.bom_no:
-			webnotes.throw(_("Please enter bom no for item: %s at row no: %s") % 
+			webnotes.throw("Please enter bom no for item: %s at row no: %s" % 
 				(d.item_code, d.idx))
 		else:
 			bom = webnotes.conn.sql("""select name from `tabBOM` where name = %s and item = %s 
 				and docstatus = 1 and is_active = 1""", 
 				(d.bom_no, d.item_code), as_dict = 1)
 			if not bom:
-				webnotes.throw(_("""Incorrect BOM No: %s entered for item: %s at row no: %s
-					May be BOM is inactive or for other item or does not exists in the system""") % 
+				webnotes.throw("""Incorrect BOM No: %s entered for item: %s at row no: %s
+					May be BOM is inactive or for other item or does not exists in the system""" % 
 					(d.bom_no, d.item_doce, d.idx))
 
 	def raise_production_order(self):
@@ -290,11 +290,12 @@
 			for item_details in self.item_dict[item]:
 				item_list.append([item, item_details[1], item_details[2], item_details[0]])
 				item_qty = webnotes.conn.sql("""select warehouse, indented_qty, ordered_qty, actual_qty 
-					from `tabBin` where item_code = %s""", item)
+					from `tabBin` where item_code = %s""", item, as_dict=1)
 				i_qty, o_qty, a_qty = 0, 0, 0
 				for w in item_qty:
-					i_qty, o_qty, a_qty = i_qty + flt(w[1]), o_qty + flt(w[2]), a_qty + flt(w[3])
-					item_list.append(['', '', '', '', w[0], flt(w[1]), flt(w[2]), flt(w[3])])
+					i_qty, o_qty, a_qty = i_qty + flt(w.indented_qty), o_qty + flt(w.ordered_qty), a_qty + flt(w.actual_qty)
+					item_list.append(['', '', '', '', w.warehouse, flt(w.indented_qty), 
+						flt(w.ordered_qty), flt(w.actual_qty)])
 				if item_qty:
 					item_list.append(['', '', '', '', 'Total', i_qty, o_qty, a_qty])
 
@@ -405,7 +406,7 @@
 			if purchase_request_list:
 				pur_req = ["""<a href="#Form/Material Request/%s" target="_blank">%s</a>""" % \
 					(p, p) for p in purchase_request_list]
-				msgprint(_("Material Request(s) created: \n%s") % 
+				msgprint("Material Request(s) created: \n%s" % 
 					"\n".join(pur_req))
 		else:
 			msgprint(_("Nothing to request"))
\ No newline at end of file
diff --git a/stock/doctype/material_request/material_request.py b/stock/doctype/material_request/material_request.py
index 67d36ef..50661a3 100644
--- a/stock/doctype/material_request/material_request.py
+++ b/stock/doctype/material_request/material_request.py
@@ -38,18 +38,18 @@
 		for so_no in so_items.keys():
 			for item in so_items[so_no].keys():
 				already_indented = webnotes.conn.sql("""select sum(qty) from `tabMaterial Request Item` 
-					where item_code = '%s' and sales_order_no = '%s' and 
-					docstatus = 1 and parent != '%s'""" % (item, so_no, self.doc.name))
+					where item_code = %s and sales_order_no = %s and 
+					docstatus = 1 and parent != %s""", (item, so_no, self.doc.name))
 				already_indented = already_indented and flt(already_indented[0][0]) or 0
 				
 				actual_so_qty = webnotes.conn.sql("""select sum(qty) from `tabSales Order Item` 
-					where parent = '%s' and item_code = '%s' and docstatus = 1 
-					group by parent""" % (so_no, item))
+					where parent = %s and item_code = %s and docstatus = 1 
+					group by parent""", (so_no, item))
 				actual_so_qty = actual_so_qty and flt(actual_so_qty[0][0]) or 0
 
 				if actual_so_qty and (flt(so_items[so_no][item]) + already_indented > actual_so_qty):
-					webnotes.throw(_("You can raise indent of maximum qty: %s for item: %s against sales order: %s\
-						\n Anyway, you can add more qty in new row for the same item.")
+					webnotes.throw("You can raise indent of maximum qty: %s for item: %s against sales order: %s\
+						\n Anyway, you can add more qty in new row for the same item."
 						% (actual_so_qty - already_indented, item, so_no))
 				
 	def validate_schedule_date(self):
@@ -105,8 +105,10 @@
 		self.update_bin(is_submit = 1, is_stopped = 0)
 	
 	def check_modified_date(self):
-		mod_db = webnotes.conn.sql("select modified from `tabMaterial Request` where name = '%s'" % self.doc.name)
-		date_diff = webnotes.conn.sql("select TIMEDIFF('%s', '%s')" % (mod_db[0][0], cstr(self.doc.modified)))
+		mod_db = webnotes.conn.sql("""select modified from `tabMaterial Request` where name = %s""", 
+			self.doc.name)
+		date_diff = webnotes.conn.sql("""select TIMEDIFF('%s', '%s')"""
+			% (mod_db[0][0], cstr(self.doc.modified)))
 		
 		if date_diff and date_diff[0][0]:
 			webnotes.throw(cstr(self.doc.doctype) + " => " + cstr(self.doc.name) + " has been modified. Please Refresh.")
@@ -120,7 +122,7 @@
 		webnotes.conn.set(self.doc, 'status', cstr(status))
 		
 		# Step 3:=> Acknowledge User
-		msgprint(self.doc.doctype + ": " + self.doc.name + _(" has been %s.") % ((status == 'Submitted') and 'Unstopped' or cstr(status)) )
+		msgprint(self.doc.doctype + ": " + self.doc.name + " has been %s." % ((status == 'Submitted') and 'Unstopped' or cstr(status)))
  
 
 	def on_cancel(self):