replaced string_types with basestring
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index c26cb92..1087878 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -208,7 +208,7 @@
 
 @frappe.whitelist()
 def remove_pricing_rules(item_list):
-	if isinstance(item_list, basestring):
+	if isinstance(item_list, string_types):
 		item_list = json.loads(item_list)
 	
 	out = []	
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 20eb14b..be6078a 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -14,6 +14,8 @@
 from frappe.core.doctype.communication.email import make
 from frappe.utils import nowdate
 
+from six import string_types
+
 
 @frappe.whitelist()
 def get_pos_data():
@@ -196,7 +198,7 @@
 
 def get_customers_address(customers):
 	customer_address = {}
-	if isinstance(customers, basestring):
+	if isinstance(customers, string_types):
 		customers = [frappe._dict({'name': customers})]
 
 	for data in customers:
@@ -216,7 +218,7 @@
 
 def get_contacts(customers):
 	customer_contact = {}
-	if isinstance(customers, basestring):
+	if isinstance(customers, string_types):
 		customers = [frappe._dict({'name': customers})]
 
 	for data in customers:
@@ -351,13 +353,13 @@
 
 @frappe.whitelist()
 def make_invoice(doc_list={}, email_queue_list={}, customers_list={}):
-	if isinstance(doc_list, basestring):
+	if isinstance(doc_list, string_types):
 		doc_list = json.loads(doc_list)
 
-	if isinstance(email_queue_list, basestring):
+	if isinstance(email_queue_list, string_types):
 		email_queue_list = json.loads(email_queue_list)
 
-	if isinstance(customers_list, basestring):
+	if isinstance(customers_list, string_types):
 		customers_list = json.loads(customers_list)
 
 	customers_list = make_customer_and_address(customers_list)
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index 97c4438..d57cd7d 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -16,6 +16,8 @@
 from erpnext.controllers.buying_controller import BuyingController
 from erpnext.buying.utils import validate_for_items
 
+from six import string_types
+
 STANDARD_USERS = ("Guest", "Administrator")
 
 class RequestforQuotation(BuyingController):
@@ -240,7 +242,7 @@
 # This method is used to make supplier quotation from supplier's portal.
 @frappe.whitelist()
 def create_supplier_quotation(doc):
-	if isinstance(doc, basestring):
+	if isinstance(doc, string_types):
 		doc = json.loads(doc)
 
 	try:
diff --git a/erpnext/controllers/item_variant.py b/erpnext/controllers/item_variant.py
index 5470446..e8260d9 100644
--- a/erpnext/controllers/item_variant.py
+++ b/erpnext/controllers/item_variant.py
@@ -52,7 +52,7 @@
 	return variant
 
 def validate_item_variant_attributes(item, args=None):
-	if isinstance(item, basestring):
+	if isinstance(item, string_types):
 		item = frappe.get_doc('Item', item)
 
 	if not args:
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py
index 666284f..bbfb5ad 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -7,6 +7,8 @@
 from frappe.utils import cint
 from erpnext.accounts.doctype.pos_profile.pos_profile import get_item_groups
 
+from six import string_types
+
 @frappe.whitelist()
 def get_items(start, page_length, price_list, item_group, search_value="", pos_profile=None):
 	serial_no = ""
@@ -90,7 +92,7 @@
 
 @frappe.whitelist()
 def submit_invoice(doc,is_saved):
-	if isinstance(doc, basestring):
+	if isinstance(doc, string_types):
 		args = json.loads(doc)
 
 	if(cint(is_saved) == 1):
diff --git a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.py b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.py
index 85cf4dd..a2152a6 100644
--- a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.py
+++ b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.py
@@ -7,6 +7,8 @@
 from frappe.model.document import Document
 from frappe.utils.jinja import validate_template
 
+from six import string_types
+
 class TermsandConditions(Document):
 	def validate(self):
 		if self.terms:
@@ -14,7 +16,7 @@
 
 @frappe.whitelist()
 def get_terms_and_conditions(template_name, doc):
-	if isinstance(doc, basestring):
+	if isinstance(doc, string_types):
 		doc = json.loads(doc)
 
 	terms_and_conditions = frappe.get_doc("Terms and Conditions", template_name)
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index defce62..3287441 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -15,6 +15,8 @@
 from erpnext.manufacturing.doctype.production_order.production_order import get_item_details
 from erpnext.buying.utils import check_for_closed_status, validate_for_items
 
+from six import string_types
+
 form_grid_templates = {
 	"items": "templates/form_grid/material_request_grid.html"
 }
@@ -275,7 +277,7 @@
 @frappe.whitelist()
 def make_purchase_order_based_on_supplier(source_name, target_doc=None):
 	if target_doc:
-		if isinstance(target_doc, basestring):
+		if isinstance(target_doc, string_types):
 			import json
 			target_doc = frappe.get_doc(json.loads(target_doc))
 		target_doc.set("items", [])
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 4915c78..4de2002 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -872,7 +872,7 @@
 	
 @frappe.whitelist()
 def move_sample_to_retention_warehouse(company, items):
-	if isinstance(items, basestring):
+	if isinstance(items, string_types):
 		items = json.loads(items)
 	retention_warehouse = frappe.db.get_single_value('Stock Settings', 'sample_retention_warehouse')
 	stock_entry = frappe.new_doc("Stock Entry")
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
index 29e3eb1..8bf2610 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
@@ -4,6 +4,8 @@
 import frappe, erpnext
 from frappe.utils import cint, flt
 
+from six import string_types
+
 @frappe.whitelist()
 def make_stock_entry(**args):
 	'''Helper function to make a Stock Entry
@@ -49,7 +51,7 @@
 	if args.item_code:
 		args.item = args.item_code
 
-	if isinstance(args.qty, basestring):
+	if isinstance(args.qty, string_types):
 		if '.' in args.qty:
 			args.qty = flt(args.qty)
 		else:
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 0032e80..6594c30 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -8,6 +8,8 @@
 from frappe.utils import cstr, now_datetime, cint, flt, get_time
 from erpnext.controllers.status_updater import StatusUpdater
 
+from six import string_types
+
 class UOMMustBeIntegerError(frappe.ValidationError): pass
 
 class TransactionBase(StatusUpdater):
@@ -139,7 +141,7 @@
 		where ref_type=%s and ref_name=%s""", (ref_type, ref_name)), for_reload=True)
 
 def validate_uom_is_integer(doc, uom_field, qty_fields, child_dt=None):
-	if isinstance(qty_fields, basestring):
+	if isinstance(qty_fields, string_types):
 		qty_fields = [qty_fields]
 
 	distinct_uoms = list(set([d.get(uom_field) for d in doc.get_all_children()]))