diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 55b4319..f376836 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -112,8 +112,8 @@
 			"docstatus": 1
 		})]
 		if self.is_return and len(not_cancelled_asset):
-			frappe.throw(_("{} has submitted assets linked to it. You need to cancel the assets to create purchase return.".format(self.return_against)),
-				title=_("Not Allowed"))
+			frappe.throw(_("{} has submitted assets linked to it. You need to cancel the assets to create purchase return.")
+				.format(self.return_against), title=_("Not Allowed"))
 
 	def get_asset_items(self):
 		if self.doctype not in ['Purchase Order', 'Purchase Invoice', 'Purchase Receipt']:
@@ -798,8 +798,8 @@
 							asset.set(field, None)
 							asset.supplier = None
 						if asset.docstatus == 1 and delete_asset:
-							frappe.throw(_('Cannot cancel this document as it is linked with submitted asset {0}.\
-								Please cancel the it to continue.').format(frappe.utils.get_link_to_form('Asset', asset.name)))
+							frappe.throw(_('Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.')
+								.format(frappe.utils.get_link_to_form('Asset', asset.name)))
 
 					asset.flags.ignore_validate_update_after_submit = True
 					asset.flags.ignore_mandatory = True
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 6b33502..295149e 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -343,10 +343,11 @@
 
 def validate_so_serial_no(sr, sales_order):
 	if not sr.sales_order or sr.sales_order!= sales_order:
-		msg = _("Sales Order {0} has reservation for item {1}")
-		msg += _(", you can only deliver reserved {1} against {0}.")
-		msg += _(" Serial No {2} cannot be delivered")
-		frappe.throw(msg.format(sales_order, sr.item_code, sr.name))
+		msg = (_("Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.")
+			.format(sales_order, sr.item_code))
+
+		frappe.throw(_("""{0} Serial No {1} cannot be delivered""")
+			.format(msg, sr.name))
 
 def has_duplicate_serial_no(sn, sle):
 	if (sn.warehouse and not sle.skip_serial_no_validaiton
@@ -575,8 +576,8 @@
 
 	pos_transacted_sr_nos = frappe.db.sql("""select item.serial_no as serial_no
 		from `tabPOS Invoice` p, `tabPOS Invoice Item` item
-		where p.name = item.parent 
-		and p.consolidated_invoice is NULL 
+		where p.name = item.parent
+		and p.consolidated_invoice is NULL
 		and p.docstatus = 1
 		and item.docstatus = 1
 		and item.item_code = %(item_code)s
@@ -608,7 +609,7 @@
 		SELECT sr.name FROM `tabSerial No` sr {batch_join_selection}
 		WHERE
 			sr.name not in ({excluded_sr_nos}) AND
-			sr.item_code = %(item_code)s AND 
+			sr.item_code = %(item_code)s AND
 			sr.warehouse = %(warehouse)s AND
 			ifnull(sr.sales_invoice,'') = '' AND
 			ifnull(sr.delivery_document_no, '') = ''
@@ -623,5 +624,5 @@
 				batch_join_selection=batch_join_selection,
 				batch_no_condition=batch_no_condition
 			), filters, as_dict=1)
-		
+
 	return serial_numbers
\ No newline at end of file
