Merge branch 'master' into staging
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index e822fda..84b2b03 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -4,7 +4,7 @@
 import frappe
 from erpnext.hooks import regional_overrides
 
-__version__ = '9.2.0'
+__version__ = '9.2.1'
 
 def get_default_company(user=None):
 	'''Get default company for user'''
diff --git a/erpnext/accounts/doctype/subscription/subscription.py b/erpnext/accounts/doctype/subscription/subscription.py
index fb01efe..1103b70 100644
--- a/erpnext/accounts/doctype/subscription/subscription.py
+++ b/erpnext/accounts/doctype/subscription/subscription.py
@@ -200,7 +200,7 @@
 	new_document.run_method("on_recurring", reference_doc=reference_doc, subscription_doc=args)
 
 def set_subscription_period(args, mcount, new_document):
-	if new_document.meta.get_field('from_date') and new_document.meta.get_field('to_date'):
+	if mcount and new_document.meta.get_field('from_date') and new_document.meta.get_field('to_date'):
 		last_ref_doc = frappe.db.sql("""
 			select name, from_date, to_date
 			from `tab{0}`
diff --git a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
index 2345872..53f82e0 100644
--- a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
+++ b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
@@ -19,13 +19,13 @@
 			patient = frappe.new_doc("Patient")
 			patient.patient_name = "Test Patient"
 			patient.sex = "Male"
-			patient.save(ignore_permissions = True)
+			patient.save(ignore_permissions=True)
 			patient = patient.name
 
 		if not physician:
 			physician = frappe.new_doc("Physician")
-			physician.first_name= "Amit Jain"
-			physician.save(ignore_permissions = True)
+			physician.first_name = "Amit Jain"
+			physician.save(ignore_permissions=True)
 			physician = physician.name
 
 		frappe.db.set_value("Healthcare Settings", None, "max_visit", 2)
@@ -50,5 +50,5 @@
 	appointment.patient = patient
 	appointment.physician = physician
 	appointment.appointment_date = appointment_date
-	appointment.save(ignore_permissions = True)
+	appointment.save(ignore_permissions=True)
 	return appointment
diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
index 2532ed1..1942b66 100644
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
@@ -30,6 +30,14 @@
 			frm.add_custom_button(__('Cancel'), function() {
 				btn_update_status(frm, "Cancelled");
 			});
+
+			frm.add_custom_button(__("Consultation"),function(){
+				btn_create_consultation(frm);
+			},"Create");
+
+			frm.add_custom_button(__('Vital Signs'), function() {
+				btn_create_vital_signs(frm);
+			},"Create");
 		}
 		if(frm.doc.status == "Pending"){
 			frm.add_custom_button(__('Set Open'), function() {
@@ -40,14 +48,6 @@
 			});
 		}
 
-		frm.add_custom_button(__("Consultation"),function(){
-			btn_create_consultation(frm);
-		},"Create");
-
-		frm.add_custom_button(__('Vital Signs'), function() {
-			btn_create_vital_signs(frm);
-		},"Create");
-
 		if(!frm.doc.__islocal){
 			if(frm.doc.sales_invoice && frappe.user.has_role("Accounts User")){
 				frm.add_custom_button(__('Invoice'), function() {
@@ -188,7 +188,7 @@
 			frappe.call({
 				method:
 				"erpnext.healthcare.doctype.patient_appointment.patient_appointment.update_status",
-				args: {appointmentId: doc.name, status:status},
+				args: {appointment_id: doc.name, status:status},
 				callback: function(data){
 					if(!data.exc){
 						frm.reload_doc();
diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json
index 57e568b..1663c5b 100644
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json
@@ -234,6 +234,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "depends_on": "eval:!doc.__islocal", 
    "fieldname": "section_break_1", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
@@ -755,7 +756,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-10-05 12:13:03.204936", 
+ "modified": "2017-10-25 23:33:36.060803", 
  "modified_by": "Administrator", 
  "module": "Healthcare", 
  "name": "Patient Appointment", 
diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
index 2647034..4379986 100755
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
@@ -6,66 +6,100 @@
 import frappe
 from frappe.model.document import Document
 import json
-from frappe.utils import getdate
+from frappe.utils import getdate, cint
 from frappe import _
 import datetime
 from frappe.core.doctype.sms_settings.sms_settings import send_sms
 from erpnext.healthcare.doctype.healthcare_settings.healthcare_settings import get_receivable_account,get_income_account
 
+
 class PatientAppointment(Document):
 	def on_update(self):
 		today = datetime.date.today()
 		appointment_date = getdate(self.appointment_date)
-		#If appointment created for today set as open
-		if(today == appointment_date):
-			frappe.db.set_value("Patient Appointment",self.name,"status","Open")
+
+		# If appointment created for today set as open
+		if today == appointment_date:
+			frappe.db.set_value("Patient Appointment", self.name, "status", "Open")
 			self.reload()
 
 	def after_insert(self):
-		#Check fee validity exists
+		# Check fee validity exists
 		appointment = self
 		validity_exist = validity_exists(appointment.physician, appointment.patient)
-		if validity_exist :
-			fee_validity = frappe.get_doc("Fee Validity",validity_exist[0][0])
-			#Check if the validity is valid
+		if validity_exist:
+			fee_validity = frappe.get_doc("Fee Validity", validity_exist[0][0])
+
+			# Check if the validity is valid
 			appointment_date = getdate(appointment.appointment_date)
-			if((fee_validity.valid_till >= appointment_date) and (fee_validity.visited < fee_validity.max_visit)):
+			if (fee_validity.valid_till >= appointment_date) and (fee_validity.visited < fee_validity.max_visit):
 				visited = fee_validity.visited + 1
-				frappe.db.set_value("Fee Validity",fee_validity.name,"visited",visited)
-				if(fee_validity.ref_invoice):
-					frappe.db.set_value("Patient Appointment",appointment.name,"sales_invoice",fee_validity.ref_invoice)
+				frappe.db.set_value("Fee Validity", fee_validity.name, "visited", visited)
+				if fee_validity.ref_invoice:
+					frappe.db.set_value("Patient Appointment", appointment.name, "sales_invoice", fee_validity.ref_invoice)
 				frappe.msgprint(_("{0} has fee validity till {1}").format(appointment.patient, fee_validity.valid_till))
 		confirm_sms(self)
 
-def appointment_cancel(appointmentId):
-	appointment = frappe.get_doc("Patient Appointment",appointmentId)
-	#If invoice --> fee_validity update with -1 visit
-	if (appointment.sales_invoice):
- 		validity = frappe.db.exists({"doctype": "Fee Validity","ref_invoice": appointment.sales_invoice})
- 		if(validity):
- 			fee_validity = frappe.get_doc("Fee Validity",validity[0][0])
- 			visited = fee_validity.visited - 1
- 			frappe.db.set_value("Fee Validity",fee_validity.name,"visited",visited)
- 			if visited <= 0:
- 				frappe.msgprint(_("Appointment cancelled, Please review and cancel the invoice {0}".format(appointment.sales_invoice)))
- 			else:
- 				frappe.msgprint(_("Appointment cancelled"))
+	def save(self, *args, **kwargs):
+		# duration is the only changeable field in the document
+		if not self.is_new():
+			self.db_set('duration', cint(self.duration))
+		else:
+			super(PatientAppointment, self).save(*args, **kwargs)
+
+
+def appointment_cancel(appointment_id):
+	appointment = frappe.get_doc("Patient Appointment", appointment_id)
+
+	# If invoice --> fee_validity update with -1 visit
+	if appointment.sales_invoice:
+		validity = frappe.db.exists({"doctype": "Fee Validity", "ref_invoice": appointment.sales_invoice})
+		if validity:
+			fee_validity = frappe.get_doc("Fee Validity", validity[0][0])
+			visited = fee_validity.visited - 1
+			frappe.db.set_value("Fee Validity", fee_validity.name, "visited", visited)
+			if visited <= 0:
+				frappe.msgprint(
+					_("Appointment cancelled, Please review and cancel the invoice {0}".format(appointment.sales_invoice))
+				)
+			else:
+				frappe.msgprint(_("Appointment cancelled"))
+
 
 @frappe.whitelist()
 def get_availability_data(date, physician):
-	# get availability data of 'physician' on 'date'
+	"""
+	Get availability data of 'physician' on 'date'
+	:param date: Date to check in schedule
+	:param physician: Name of the physician
+	:return: dict containing a list of available slots, list of appointments and time of appointments
+	"""
+
 	date = getdate(date)
 	weekday = date.strftime("%A")
 
 	available_slots = []
+	physician_schedule_name = None
+	physician_schedule = None
+	time_per_appointment = None
+
 	# get physicians schedule
 	physician_schedule_name = frappe.db.get_value("Physician", physician, "physician_schedule")
-	physician_schedule = frappe.get_doc("Physician Schedule", physician_schedule_name)
-	time_per_appointment = frappe.db.get_value("Physician", physician, "time_per_appointment")
+	if physician_schedule_name:
+		physician_schedule = frappe.get_doc("Physician Schedule", physician_schedule_name)
+		time_per_appointment = frappe.db.get_value("Physician", physician, "time_per_appointment")
+	else:
+		frappe.throw(_("Dr {0} does not have a Physician Schedule. Add it in Physician master".format(physician)))
 
-	for t in physician_schedule.time_slots:
-		if weekday == t.day:
-			available_slots.append(t)
+	if physician_schedule:
+		for t in physician_schedule.time_slots:
+			if weekday == t.day:
+				available_slots.append(t)
+
+	# `time_per_appointment` should never be None since validation in `Patient` is supposed to prevent
+	# that. However, it isn't impossible so we'll prepare for that.
+	if not time_per_appointment:
+		frappe.throw(_('"Time Per Appointment" hasn"t been set for Dr {0}. Add it in Physician master.').format(physician))
 
 	# if physician not available return
 	if not available_slots:
@@ -89,27 +123,36 @@
 		"time_per_appointment": time_per_appointment
 	}
 
+
 @frappe.whitelist()
-def update_status(appointmentId, status):
-	frappe.db.set_value("Patient Appointment",appointmentId,"status",status)
-	if(status=="Cancelled"):
-		appointment_cancel(appointmentId)
+def update_status(appointment_id, status):
+	frappe.db.set_value("Patient Appointment", appointment_id, "status", status)
+	if status == "Cancelled":
+		appointment_cancel(appointment_id)
+
 
 @frappe.whitelist()
 def set_open_appointments():
 	today = getdate()
-	frappe.db.sql("""update `tabPatient Appointment` set status='Open' where status = 'Scheduled' and appointment_date = %s""",(today))
+	frappe.db.sql(
+		"update `tabPatient Appointment` set status='Open' where status = 'Scheduled'"
+		" and appointment_date = %s", today)
+
 
 @frappe.whitelist()
 def set_pending_appointments():
 	today = getdate()
-	frappe.db.sql("""update `tabPatient Appointment` set status='Pending' where status in ('Scheduled','Open') and appointment_date < %s""",(today))
+	frappe.db.sql(
+		"update `tabPatient Appointment` set status='Pending' where status in "
+		"('Scheduled','Open') and appointment_date < %s", today)
+
 
 def confirm_sms(doc):
-	if (frappe.db.get_value("Healthcare Settings", None, "app_con")=='1'):
+	if frappe.db.get_value("Healthcare Settings", None, "app_con") == '1':
 		message = frappe.db.get_value("Healthcare Settings", None, "app_con_msg")
 		send_message(doc, message)
 
+
 @frappe.whitelist()
 def create_invoice(company, physician, patient, appointment_id, appointment_date):
 	if not appointment_id:
@@ -134,21 +177,24 @@
 		frappe.db.set_value("Consultation", consultation[0][0], "invoice", sales_invoice.name)
 	return sales_invoice.name
 
+
 def get_fee_validity(physician, patient, date):
 	validity_exist = validity_exists(physician, patient)
-	if validity_exist :
-		fee_validity = frappe.get_doc("Fee Validity",validity_exist[0][0])
+	if validity_exist:
+		fee_validity = frappe.get_doc("Fee Validity", validity_exist[0][0])
 		fee_validity = update_fee_validity(fee_validity, date)
 	else:
 		fee_validity = create_fee_validity(physician, patient, date)
 	return fee_validity
 
+
 def validity_exists(physician, patient):
 	return frappe.db.exists({
 			"doctype": "Fee Validity",
 			"physician": physician,
 			"patient": patient})
 
+
 def update_fee_validity(fee_validity, date):
 	max_visit = frappe.db.get_value("Healthcare Settings", None, "max_visit")
 	valid_days = frappe.db.get_value("Healthcare Settings", None, "valid_days")
@@ -164,6 +210,7 @@
 	fee_validity.save(ignore_permissions=True)
 	return fee_validity
 
+
 def create_fee_validity(physician, patient, date):
 	fee_validity = frappe.new_doc("Fee Validity")
 	fee_validity.physician = physician
@@ -171,6 +218,7 @@
 	fee_validity = update_fee_validity(fee_validity, date)
 	return fee_validity
 
+
 def create_invoice_items(appointment_id, physician, company, invoice):
 	item_line = invoice.append("items")
 	item_line.item_name = "Consulting Charges"
@@ -178,16 +226,17 @@
 	item_line.qty = 1
 	item_line.uom = "Nos"
 	item_line.conversion_factor = 1
-	item_line.income_account = get_income_account(physician,company)
+	item_line.income_account = get_income_account(physician, company)
 	op_consulting_charge = frappe.db.get_value("Physician", physician, "op_consulting_charge")
 	if op_consulting_charge:
 		item_line.rate = op_consulting_charge
 		item_line.amount = op_consulting_charge
 	return invoice
 
+
 @frappe.whitelist()
 def create_consultation(appointment):
-	appointment = frappe.get_doc("Patient Appointment",appointment)
+	appointment = frappe.get_doc("Patient Appointment", appointment)
 	consultation = frappe.new_doc("Consultation")
 	consultation.appointment = appointment.name
 	consultation.patient = appointment.patient
@@ -199,29 +248,37 @@
 		consultation.invoice = appointment.sales_invoice
 	return consultation.as_dict()
 
+
 def remind_appointment():
-	if (frappe.db.get_value("Healthcare Settings", None, "app_rem")=='1'):
+	if frappe.db.get_value("Healthcare Settings", None, "app_rem") == '1':
 		rem_before = datetime.datetime.strptime(frappe.get_value("Healthcare Settings", None, "rem_before"), "%H:%M:%S")
-		rem_dt = datetime.datetime.now() + datetime.timedelta(hours = rem_before.hour, minutes=rem_before.minute, seconds= rem_before.second)
+		rem_dt = datetime.datetime.now() + datetime.timedelta(
+			hours=rem_before.hour, minutes=rem_before.minute, seconds=rem_before.second)
 
-		appointment_list = frappe.db.sql("select name from `tabPatient Appointment` where start_dt between %s and %s and reminded = 0 ", (datetime.datetime.now(), rem_dt))
+		appointment_list = frappe.db.sql(
+			"select name from `tabPatient Appointment` where start_dt between %s and %s and reminded = 0 ",
+			(datetime.datetime.now(), rem_dt)
+		)
 
-		for i in range (0,len(appointment_list)):
+		for i in range(0, len(appointment_list)):
 			doc = frappe.get_doc("Patient Appointment", appointment_list[i][0])
 			message = frappe.db.get_value("Healthcare Settings", None, "app_rem_msg")
 			send_message(doc, message)
-			frappe.db.set_value("Patient Appointment",doc.name,"reminded",1)
+			frappe.db.set_value("Patient Appointment", doc.name, "reminded",1)
+
 
 def send_message(doc, message):
-	patient = frappe.get_doc("Patient",doc.patient)
-	if(patient.mobile):
+	patient = frappe.get_doc("Patient", doc.patient)
+	if patient.mobile:
 		context = {"doc": doc, "alert": doc, "comments": None}
 		if doc.get("_comments"):
 			context["comments"] = json.loads(doc.get("_comments"))
-		#jinja to string convertion happens here
+
+		# jinja to string convertion happens here
 		message = frappe.render_template(message, context)
 		number = [patient.mobile]
-		send_sms(number,message)
+		send_sms(number, message)
+
 
 @frappe.whitelist()
 def get_events(start, end, filters=None):
diff --git a/erpnext/healthcare/doctype/physician/physician.json b/erpnext/healthcare/doctype/physician/physician.json
index 4348e90..3edad0b 100644
--- a/erpnext/healthcare/doctype/physician/physician.json
+++ b/erpnext/healthcare/doctype/physician/physician.json
@@ -501,6 +501,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "description": "In minutes", 
    "fieldname": "time_per_appointment", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -809,7 +810,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-10-04 17:35:44.363742", 
+ "modified": "2017-10-05 16:08:24.624644", 
  "modified_by": "Administrator", 
  "module": "Healthcare", 
  "name": "Physician", 
diff --git a/erpnext/healthcare/doctype/physician/physician.py b/erpnext/healthcare/doctype/physician/physician.py
index 8680d5d..4d035d3 100644
--- a/erpnext/healthcare/doctype/physician/physician.py
+++ b/erpnext/healthcare/doctype/physician/physician.py
@@ -20,22 +20,32 @@
 			[cstr(self.get(f)).strip() for f in ["first_name","middle_name","last_name"]]))
 
 	def validate(self):
+		self.validate_schedule_and_time()
 		validate_party_accounts(self)
+
 		if self.user_id:
 			self.validate_for_enabled_user_id()
 			self.validate_duplicate_user_id()
 			existing_user_id = frappe.db.get_value("Physician", self.name, "user_id")
-			if(self.user_id != existing_user_id):
+			if self.user_id != existing_user_id:
 				frappe.permissions.remove_user_permission(
 					"Physician", self.name, existing_user_id)
 
-
 		else:
 			existing_user_id = frappe.db.get_value("Physician", self.name, "user_id")
 			if existing_user_id:
 				frappe.permissions.remove_user_permission(
 					"Physician", self.name, existing_user_id)
 
+	def validate_schedule_and_time(self):
+		if (self.physician_schedule or self.time_per_appointment) and \
+				not (self.physician_schedule and self.time_per_appointment):
+			frappe.msgprint(
+				_('Both "Physician Schedule" and Time Per Appointment" must be set for Dr {0}').format(
+					self.first_name),
+				title='Error', raise_exception=1, indicator='red'
+			)
+
 	def on_update(self):
 		if self.user_id:
 			frappe.permissions.add_user_permission("Physician", self.name, self.user_id)
diff --git a/erpnext/healthcare/doctype/physician/test_physician.py b/erpnext/healthcare/doctype/physician/test_physician.py
index b6ea92c..e57bdae 100644
--- a/erpnext/healthcare/doctype/physician/test_physician.py
+++ b/erpnext/healthcare/doctype/physician/test_physician.py
@@ -3,8 +3,35 @@
 # See license.txt
 from __future__ import unicode_literals
 import unittest
+import frappe
 
-# test_records = frappe.get_test_records('Physician')
+test_dependencies = ['Physician Schedule']
+
 
 class TestPhysician(unittest.TestCase):
-	pass
+	def tearDown(self):
+		frappe.delete_doc_if_exists('Physician', '_Testdoctor2', force=1)
+
+	def test_schedule_and_time(self):
+		physician = frappe.new_doc('Physician')
+		physician.first_name = '_Testdoctor2'
+		physician.physician_schedule = '_Test Testdoctor Schedule'
+
+		self.assertRaises(frappe.ValidationError, physician.insert)
+
+		physician.physician_schedule = ''
+		physician.time_per_appointment = 15
+
+		self.assertRaises(frappe.ValidationError, physician.insert)
+
+		physician.physician_schedule = '_Test Testdoctor Schedule'
+		physician.time_per_appointment = 15
+
+		physician.insert()
+
+	def test_new_physician_without_schedule(self):
+		physician = frappe.new_doc('Physician')
+		physician.first_name = '_Testdoctor2'
+
+		physician.insert()
+		self.assertEqual(frappe.get_value('Physician', '_Testdoctor2', 'first_name'), '_Testdoctor2')
diff --git a/erpnext/healthcare/doctype/physician_schedule/physician_schedule.py b/erpnext/healthcare/doctype/physician_schedule/physician_schedule.py
index 5cbdd12..167e9cd 100644
--- a/erpnext/healthcare/doctype/physician_schedule/physician_schedule.py
+++ b/erpnext/healthcare/doctype/physician_schedule/physician_schedule.py
@@ -5,5 +5,7 @@
 from __future__ import unicode_literals
 from frappe.model.document import Document
 
+
 class PhysicianSchedule(Document):
-	pass
+	def autoname(self):
+		self.name = self.schedule_name
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index f4d3776..89ecbe7 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -569,7 +569,7 @@
 		where ((ifnull(planned_start_date, '0000-00-00')!= '0000-00-00') \
 				and (planned_start_date <= %(end)s) \
 			and ((ifnull(planned_start_date, '0000-00-00')!= '0000-00-00') \
-				and planned_end_date >= %(start)s)) {conditions}
+				and ifnull(planned_end_date, '2199-12-31 00:00:00') >= %(start)s)) {conditions}
 		""".format(conditions=conditions), {
 			"start": start,
 			"end": end
diff --git a/erpnext/patches/v9_0/set_schedule_date_for_material_request_and_purchase_order.py b/erpnext/patches/v9_0/set_schedule_date_for_material_request_and_purchase_order.py
index 7ab0e2c..3d01297 100644
--- a/erpnext/patches/v9_0/set_schedule_date_for_material_request_and_purchase_order.py
+++ b/erpnext/patches/v9_0/set_schedule_date_for_material_request_and_purchase_order.py
@@ -17,6 +17,8 @@
 			doc = frappe.get_doc(doctype, record)
 			if doc.items:
 				if not doc.schedule_date:
-					min_schedule_date = min([d.schedule_date for d in doc.items])
-					frappe.db.set_value(doctype, record,
-						"schedule_date", min_schedule_date, update_modified=False)
\ No newline at end of file
+					schedule_dates = [d.schedule_date for d in doc.items if d.schedule_date]
+					if len(schedule_dates) > 0:
+						min_schedule_date = min(schedule_dates)
+						frappe.db.set_value(doctype, record,
+							"schedule_date", min_schedule_date, update_modified=False)
\ No newline at end of file
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 7400e43..20b5bb0 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -71,9 +71,9 @@
 
 def get_conditions(item_code, serial_no, batch_no, barcode):
 	if serial_no or batch_no or barcode:
-		return frappe.db.escape(item_code), "i.item_code = %(item_code)s"
+		return frappe.db.escape(item_code), "i.name = %(item_code)s"
 
-	condition = """(i.item_code like %(item_code)s
+	condition = """(i.name like %(item_code)s
 			or i.item_name like %(item_code)s)"""
 
 	return '%%%s%%'%(frappe.db.escape(item_code)), condition
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index f7b09d6..766f9b5 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -40,7 +40,7 @@
 
 	frappe.local.message_log = []
 	domain_settings = frappe.get_single('Domain Settings')
-	domain_settings.set_active_domains([args.get('domain')])
+	domain_settings.set_active_domains([_(args.get('domain'))])
 
 	frappe.db.commit()
 	login_as_first_user(args)
diff --git a/erpnext/stock/doctype/item/item_list.js b/erpnext/stock/doctype/item/item_list.js
index cc46177..db53ae9 100644
--- a/erpnext/stock/doctype/item/item_list.js
+++ b/erpnext/stock/doctype/item/item_list.js
@@ -4,12 +4,12 @@
 	filters: [["disabled", "=", "0"]],
 
 	get_indicator: function(doc) {
-		if(doc.total_projected_qty < 0) {
-			return [__("Shortage"), "red", "total_projected_qty,<,0"];
-		} else if (doc.disabled) {
+		if (doc.disabled) {
 			return [__("Disabled"), "grey", "disabled,=,Yes"];
 		} else if (doc.end_of_life && doc.end_of_life < frappe.datetime.get_today()) {
 			return [__("Expired"), "grey", "end_of_life,<,Today"];
+		} else if(doc.total_projected_qty < 0) {
+			return [__("Shortage"), "red", "total_projected_qty,<,0"];
 		} else if (doc.has_variants) {
 			return [__("Template"), "orange", "has_variants,=,Yes"];
 		} else if (doc.variant_of) {