diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 84acead..9821e97 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
 from __future__ import unicode_literals
-__version__ = '5.0.8'
+__version__ = '5.0.9'
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index ae4dae0..4e7928d 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -10,8 +10,8 @@
 from frappe.model.document import Document
 
 class GLEntry(Document):
-
 	def validate(self):
+		self.flags.ignore_submit_comment = True
 		self.check_mandatory()
 		self.pl_must_have_cost_center()
 		self.validate_posting_date()
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index 5ede882..618c9cf 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -98,7 +98,7 @@
 
 			row.base_amount = flt(row.base_net_amount)
 
-			sales_boms = self.sales_boms.get(row.parenttype, {}).get(row.name, frappe._dict())
+			sales_boms = self.sales_boms.get(row.parenttype, {}).get(row.parent, frappe._dict())
 
 			# get buying amount
 			if row.item_code in sales_boms:
@@ -158,7 +158,7 @@
 
 	def get_buying_amount_from_sales_bom(self, row, sales_bom):
 		buying_amount = 0.0
-		for bom_item in sales_bom[row.item_code]:
+		for bom_item in sales_bom:
 			if bom_item.get("parent_detail_docname")==row.item_row:
 				buying_amount += self.get_buying_amount(row, bom_item.item_code)
 
@@ -174,14 +174,17 @@
 			return flt(row.qty) * item_rate
 
 		else:
-			if row.dn_detail:
-				row.parenttype = "Delivery Note"
-				row.parent = row.delivery_note
-				row.item_row = row.dn_detail
+			if row.update_stock or row.dn_detail:
+				if row.dn_detail:
+					row.parenttype = "Delivery Note"
+					row.parent = row.delivery_note
+					row.item_row = row.dn_detail
 
 				my_sle = self.sle.get((item_code, row.warehouse))
 				for i, sle in enumerate(my_sle):
 					# find the stock valution rate from stock ledger entry
+					print sle.voucher_type, row.parenttype, sle.voucher_no, row.parent, \
+						sle.voucher_detail_no, row.item_row
 					if sle.voucher_type == row.parenttype and row.parent == sle.voucher_no and \
 						sle.voucher_detail_no == row.item_row:
 							previous_stock_value = len(my_sle) > i+1 and \
@@ -215,7 +218,7 @@
 		if self.filters.to_date:
 			conditions += " and posting_date <= %(to_date)s"
 
-		self.si_list = frappe.db.sql("""select item.parenttype, si.name,
+		self.si_list = frappe.db.sql("""select item.parenttype, item.parent, 
 				si.posting_date, si.posting_time, si.project_name, si.update_stock,
 				si.customer, si.customer_group, si.territory,
 				item.item_code, item.item_name, item.description, item.warehouse,
diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
index f68f814..66d50ba 100644
--- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
@@ -80,6 +80,8 @@
 	po.company = args.company or "_Test Company"
 	po.supplier = args.customer or "_Test Supplier"
 	po.is_subcontracted = args.is_subcontracted or "No"
+	po.currency = args.currency or frappe.db.get_value("Company", po.company, "default_currency")
+	po.conversion_factor = args.conversion_factor or 1
 
 	po.append("items", {
 		"item_code": args.item or args.item_code or "_Test Item",
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index d4e69cf..9867973 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -279,7 +279,7 @@
 
 	def set_qty_as_per_stock_uom(self):
 		for d in self.get("items"):
-			if d.meta.get_field("stock_qty") and not d.stock_qty:
+			if d.meta.get_field("stock_qty"):
 				if not d.conversion_factor:
 					frappe.throw(_("Row {0}: Conversion Factor is mandatory").format(d.idx))
 				d.stock_qty = flt(d.qty) * flt(d.conversion_factor)
diff --git a/erpnext/crm/doctype/newsletter/newsletter.py b/erpnext/crm/doctype/newsletter/newsletter.py
index 6b1633f..0bafda6 100644
--- a/erpnext/crm/doctype/newsletter/newsletter.py
+++ b/erpnext/crm/doctype/newsletter/newsletter.py
@@ -92,7 +92,7 @@
 		return
 
 	subs_id = frappe.db.get_value("Newsletter List Subscriber", {"email": email, "newsletter_list": name})
-	if name:
+	if subs_id:
 		subscriber = frappe.get_doc("Newsletter List Subscriber", subs_id)
 		subscriber.unsubscribed = 1
 		subscriber.save(ignore_permissions=True)
diff --git a/erpnext/crm/doctype/newsletter/test_newsletter.py b/erpnext/crm/doctype/newsletter/test_newsletter.py
index ce1d2d1..580982a 100644
--- a/erpnext/crm/doctype/newsletter/test_newsletter.py
+++ b/erpnext/crm/doctype/newsletter/test_newsletter.py
@@ -9,7 +9,16 @@
 
 class TestNewsletter(unittest.TestCase):
 	def setUp(self):
-		frappe.db.sql("update `tabNewsletter List Subscriber` set unsubscribed = 0")
+		if not frappe.get_all("Newsletter List Subscriber"):
+			for email in ["test_subscriber1@example.com", "test_subscriber2@example.com", 
+				"test_subscriber3@example.com"]:
+					frappe.get_doc({
+						"doctype": "Newsletter List Subscriber",
+						"email": email,
+						"newsletter_list": "_Test Newsletter List"
+					}).insert()
+		else:
+			frappe.db.sql("update `tabNewsletter List Subscriber` set unsubscribed = 0")
 
 	def test_send(self):
 		self.send_newsletter()
@@ -39,6 +48,4 @@
 
 		newsletter.send_emails()
 
-
-
 test_dependencies = ["Newsletter List"]
diff --git a/erpnext/crm/doctype/newsletter_list/test_newsletter_list.py b/erpnext/crm/doctype/newsletter_list/test_newsletter_list.py
index c715d85..ebc094e 100644
--- a/erpnext/crm/doctype/newsletter_list/test_newsletter_list.py
+++ b/erpnext/crm/doctype/newsletter_list/test_newsletter_list.py
@@ -6,8 +6,6 @@
 import frappe
 import unittest
 
-# test_records = frappe.get_test_records('Newletter List')
-
 class TestNewletterList(unittest.TestCase):
 	def test_import(self):
 		new_list = frappe.get_doc({
@@ -15,13 +13,13 @@
 			"title": "_Test Newsletter List 1"
 		}).insert()
 
-		n_leads = frappe.db.count("Lead")
-
+		n_leads = frappe.db.sql("select count(distinct email_id) from `tabLead`")[0][0]
+		
 		added = new_list.import_from("Lead")
-
 		self.assertEquals(added, n_leads)
 
-		frappe.delete_doc("Newsletter List", new_list.name)
+	def tearDown(self):
+		frappe.delete_doc("Newsletter List", "_Test Newsletter List 1")
 
 test_dependencies = ["Lead"]
 
diff --git a/erpnext/crm/doctype/newsletter_list/test_records.json b/erpnext/crm/doctype/newsletter_list/test_records.json
index 5afc9df..ed2f89e 100644
--- a/erpnext/crm/doctype/newsletter_list/test_records.json
+++ b/erpnext/crm/doctype/newsletter_list/test_records.json
@@ -2,20 +2,5 @@
 	{
 		"doctype": "Newsletter List",
 		"title": "_Test Newsletter List"
-	},
-	{
-		"doctype": "Newsletter List Subscriber",
-		"email": "test_subscriber1@example.com",
-		"newsletter_list": "_Test Newsletter List"
-	},
-	{
-		"doctype": "Newsletter List Subscriber",
-		"email": "test_subscriber2@example.com",
-		"newsletter_list": "_Test Newsletter List"
-	},
-	{
-		"doctype": "Newsletter List Subscriber",
-		"email": "test_subscriber3@example.com",
-		"newsletter_list": "_Test Newsletter List"
 	}
 ]
diff --git a/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.py b/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.py
index 1539553..c036adc 100644
--- a/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.py
+++ b/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.py
@@ -10,4 +10,4 @@
 	pass
 
 def after_doctype_insert():
-	frappe.db.add_unique("Newsletter List Subscriber", ("name", "email"))
+	frappe.db.add_unique("Newsletter List Subscriber", ("newsletter_list", "email"))
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 750f811..74631d1 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -5,7 +5,7 @@
 app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "5.0.8"
+app_version = "5.0.9"
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index 9f7c5df..2bb7f52 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -12,6 +12,9 @@
 	def setUp(self):
 		frappe.db.sql("""delete from `tabLeave Application`""")
 		frappe.db.sql("""delete from `tabSalary Slip`""")
+		
+		frappe.db.set_value("Holiday List", "_Test Holiday List", "is_default", 1)
+		
 		from erpnext.hr.doctype.leave_application.test_leave_application import _test_records as leave_applications
 		la = frappe.copy_doc(leave_applications[2])
 		la.insert()
@@ -26,6 +29,7 @@
 		frappe.db.set_value("HR Settings", "HR Settings", "include_holidays_in_total_working_days", 1)
 		ss = frappe.copy_doc(test_records[0])
 		ss.insert()
+		
 		self.assertEquals(ss.total_days_in_month, 31)
 		self.assertEquals(ss.payment_days, 30)
 		self.assertEquals(ss.earnings[0].e_modified_amount, 14516.13)
@@ -36,8 +40,10 @@
 		self.assertEquals(ss.net_pay, 14867.74)
 
 	def test_salary_slip_with_holidays_excluded(self):
+		frappe.db.set_value("HR Settings", "HR Settings", "include_holidays_in_total_working_days", 0)
 		ss = frappe.copy_doc(test_records[0])
 		ss.insert()
+		
 		self.assertEquals(ss.total_days_in_month, 30)
 		self.assertEquals(ss.payment_days, 29)
 		self.assertEquals(ss.earnings[0].e_modified_amount, 14500)
@@ -102,6 +108,6 @@
 
 		return salary_slip
 
-test_dependencies = ["Leave Application"]
+test_dependencies = ["Leave Application", "Holiday List"]
 
 test_records = frappe.get_test_records('Salary Slip')
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index 7b6425e..34d584a 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -130,10 +130,9 @@
 		prod_order = make_prod_order_test_record(item="_Test FG Item 2",
 			planned_start_date="2014-11-25 00:00:00", qty=1, do_not_save=True)
 		prod_order.set_production_order_operations()
-		prod_order.save()
 		cost = prod_order.planned_operating_cost
 		prod_order.qty = 2
-		prod_order.save()
+		prod_order.set_production_order_operations()
 		self.assertEqual(prod_order.planned_operating_cost, cost*2)
 		
 def make_prod_order_test_record(**args):
diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py
index 479c5b5..1db6c6a 100644
--- a/erpnext/selling/doctype/customer/test_customer.py
+++ b/erpnext/selling/doctype/customer/test_customer.py
@@ -34,7 +34,9 @@
 
 		make_test_records("Address")
 		make_test_records("Contact")
-
+		frappe.db.set_value("Contact", "_Test Contact For _Test Customer-_Test Customer", 
+			"is_primary_contact", 1)
+		
 		details = get_party_details("_Test Customer")
 
 		for key, value in to_check.iteritems():
diff --git a/erpnext/selling/doctype/sms_center/sms_center.json b/erpnext/selling/doctype/sms_center/sms_center.json
index e3b4243..c966ef3 100644
--- a/erpnext/selling/doctype/sms_center/sms_center.json
+++ b/erpnext/selling/doctype/sms_center/sms_center.json
@@ -37,6 +37,15 @@
    "permlevel": 0
   }, 
   {
+   "depends_on": "eval:doc.send_to=='All Sales Partner Contact'", 
+   "fieldname": "sales_partner", 
+   "fieldtype": "Link", 
+   "label": "Sales Partner", 
+   "options": "Sales Partner", 
+   "permlevel": 0, 
+   "precision": ""
+  }, 
+  {
    "depends_on": "eval:doc.send_to=='All Employee (Active)'", 
    "fieldname": "department", 
    "fieldtype": "Link", 
@@ -108,7 +117,7 @@
  "idx": 1, 
  "in_create": 0, 
  "issingle": 1, 
- "modified": "2015-02-05 05:11:46.773913", 
+ "modified": "2015-05-25 17:46:37.555503", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "SMS Center", 
diff --git a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py
index 0dee7ab..e102f0d 100644
--- a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py
+++ b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py
@@ -34,7 +34,7 @@
 
 def get_entries(filters):
 	date_field = filters["doc_type"] == "Sales Order" and "transaction_date" or "posting_date"
-	conditions, items = get_conditions(filters, date_field)
+	conditions, values = get_conditions(filters, date_field)
 	entries = frappe.db.sql("""select dt.name, dt.customer, dt.territory, dt.%s as posting_date,
 		dt_item.item_code, dt_item.qty, dt_item.base_net_amount, st.sales_person,
 		st.allocated_percentage, dt_item.base_net_amount*st.allocated_percentage/100 as contribution_amt
@@ -42,31 +42,33 @@
 		where st.parent = dt.name and dt.name = dt_item.parent and st.parenttype = %s
 		and dt.docstatus = 1 %s order by st.sales_person, dt.name desc""" %
 		(date_field, filters["doc_type"], filters["doc_type"], '%s', conditions),
-		tuple([filters["doc_type"]] + items), as_dict=1)
+		tuple([filters["doc_type"]] + values), as_dict=1)
 
 	return entries
 
 def get_conditions(filters, date_field):
-	conditions = ""
-	if filters.get("company"): conditions += " and dt.company = '%s'" % \
-		filters["company"].replace("'", "\'")
-	if filters.get("customer"): conditions += " and dt.customer = '%s'" % \
-		filters["customer"].replace("'", "\'")
-	if filters.get("territory"): conditions += " and dt.territory = '%s'" % \
-		filters["territory"].replace("'", "\'")
-
-	if filters.get("from_date"): conditions += " and dt.%s >= '%s'" % \
-		(date_field, filters["from_date"])
-	if filters.get("to_date"): conditions += " and dt.%s <= '%s'" % (date_field, filters["to_date"])
-
-	if filters.get("sales_person"): conditions += " and st.sales_person = '%s'" % \
-	 	filters["sales_person"].replace("'", "\'")
+	conditions = [""]
+	values = []
+	
+	for field in ["company", "customer", "territory", "sales_person"]:
+		if filters.get(field):
+			conditions.append("dt.{0}=%s".format(field))
+			values.append(filters[field])
+		
+	if filters.get("from_date"):
+		conditions.append("dt.{0}>=%s".format(date_field))
+		values.append(filters["from_date"])
+		
+	if filters.get("to_date"):
+		conditions.append("dt.{0}<=%s".format(date_field))
+		values.append(filters["to_date"])
 
 	items = get_items(filters)
 	if items:
-		conditions += " and dt_item.item_code in (%s)" % ', '.join(['%s']*len(items))
+		conditions.append("dt_item.item_code in (%s)" % ', '.join(['%s']*len(items)))
+		values += items
 
-	return conditions, items
+	return " and ".join(conditions), values
 
 def get_items(filters):
 	if filters.get("item_group"): key = "item_group"
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index d358928..6c67e60 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -27,8 +27,12 @@
 		return exists
 
 	def validate(self):
+		self.abbr = self.abbr.strip()
 		if self.get('__islocal') and len(self.abbr) > 5:
 			frappe.throw(_("Abbreviation cannot have more than 5 characters"))
+			
+		if not self.abbr.strip():
+			frappe.throw(_("Abbr can not be blank or space"))
 
 		self.previous_default_currency = frappe.db.get_value("Company", self.name, "default_currency")
 		if self.default_currency and self.previous_default_currency and \
@@ -174,6 +178,10 @@
 		"""
 			Trash accounts and cost centers for this company if no gl entry exists
 		"""
+		accounts = frappe.db.sql_list("select name from tabAccount where company=%s", self.name)
+		cost_centers = frappe.db.sql_list("select name from `tabCost Center` where company=%s", self.name)
+		warehouses = frappe.db.sql_list("select name from tabWarehouse where company=%s", self.name)
+		
 		rec = frappe.db.sql("SELECT name from `tabGL Entry` where company = %s", self.name)
 		if not rec:
 			# delete Account
@@ -192,23 +200,43 @@
 			frappe.db.sql("""delete from `tabWarehouse` where company=%s""", self.name)
 
 		frappe.defaults.clear_default("company", value=self.name)
+		
+		# clear default accounts, warehouses from item
+		for f in ["default_warehouse", "website_warehouse"]:
+			frappe.db.sql("""update tabItem set %s=NULL where %s in (%s)""" 
+				% (f, f, ', '.join(['%s']*len(warehouses))), tuple(warehouses))
+				
+		frappe.db.sql("""delete from `tabItem Reorder` where warehouse in (%s)""" 
+			% ', '.join(['%s']*len(warehouses)), tuple(warehouses))
+				
+		for f in ["income_account", "expense_account"]:
+			frappe.db.sql("""update tabItem set %s=NULL where %s in (%s)""" 
+				% (f, f, ', '.join(['%s']*len(accounts))), tuple(accounts))
+				
+		for f in ["selling_cost_center", "buying_cost_center"]:
+			frappe.db.sql("""update tabItem set %s=NULL where %s in (%s)""" 
+				% (f, f, ', '.join(['%s']*len(cost_centers))), tuple(cost_centers))
 
+		# reset default company
 		frappe.db.sql("""update `tabSingles` set value=""
 			where doctype='Global Defaults' and field='default_company'
 			and value=%s""", self.name)
 
 @frappe.whitelist()
 def replace_abbr(company, old, new):
+	new = new.strip()
+	if not new:
+		frappe.throw(_("Abbr can not be blank or space"))
+		
 	frappe.only_for("System Manager")
 
 	frappe.db.set_value("Company", company, "abbr", new)
 
 	def _rename_record(dt):
 		for d in frappe.db.sql("select name from `tab%s` where company=%s" % (dt, '%s'), company):
-			parts = d[0].split(" - ")
-			if parts[-1].lower() == old.lower():
-				name_without_abbr = " - ".join(parts[:-1])
-				frappe.rename_doc(dt, d[0], name_without_abbr + " - " + new)
+			parts = d[0].rsplit(" - ", 1)
+			if len(parts) == 1 or parts[1].lower() == old.lower():
+				frappe.rename_doc(dt, d[0], parts[0] + " - " + new)
 
 	for dt in ["Account", "Cost Center", "Warehouse"]:
 		_rename_record(dt)
diff --git a/erpnext/setup/doctype/sales_person/sales_person.py b/erpnext/setup/doctype/sales_person/sales_person.py
index 5f70b23..8542c88 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.py
+++ b/erpnext/setup/doctype/sales_person/sales_person.py
@@ -29,5 +29,7 @@
 				return frappe.db.get_value("User", user, "email") or user
 
 	def validate_employee_id(self):
-		if frappe.db.exists({"doctype": "Sales Person","employee": self.employee}):
-			frappe.throw("Another sales person with the same employee id exists.", frappe.DuplicateEntryError)
+		sales_person = frappe.db.get_value("Sales Person", {"employee": self.employee})
+		
+		if sales_person and sales_person != self.name:
+			frappe.throw(_("Another Sales Person {0} exists with the same Employee id").format(sales_person))
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index b80d55e..819e244 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -28,7 +28,7 @@
 
 		args = frappe._dict(args)
 
-		if args.language != "english":
+		if args.language and args.language != "english":
 			set_default_language(args.language)
 
 		install_fixtures.install(args.get("country"))
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 831e537..f52f7e5 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -110,7 +110,8 @@
 	def validate_with_previous_doc(self):
 		items = self.get("items")
 
-		for fn in (("Sales Order", "against_sales_order"), ("Sales Invoice", "against_sales_invoice")):
+		for fn in (("Sales Order", "against_sales_order", "so_detail"), 
+				("Sales Invoice", "against_sales_invoice", "si_detail")):
 			if filter(None, [getattr(d, fn[1], None) for d in items]):
 				super(DeliveryNote, self).validate_with_previous_doc({
 					fn[0]: {
@@ -123,7 +124,7 @@
 				if cint(frappe.defaults.get_global_default('maintain_same_sales_rate')):
 					super(DeliveryNote, self).validate_with_previous_doc({
 						fn[0] + " Item": {
-							"ref_dn_field": "so_detail",
+							"ref_dn_field": fn[2],
 							"compare_fields": [["rate", "="]],
 							"is_child_table": True
 						}
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 59b4531..4d397e7 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -7,7 +7,7 @@
 import frappe
 import json
 import frappe.defaults
-from frappe.utils import cint, nowdate, nowtime, cstr, add_days
+from frappe.utils import cint, nowdate, nowtime, cstr, add_days, flt
 from erpnext.stock.stock_ledger import get_previous_sle
 from erpnext.accounts.utils import get_balance_on
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt \
@@ -136,7 +136,7 @@
 
 		# check stock in hand balance
 		bal = get_balance_on(stock_in_hand_account)
-		self.assertEquals(bal, prev_bal - stock_value_diff)
+		self.assertEquals(flt(bal, 2), flt(prev_bal - stock_value_diff, 2))
 
 		dn.cancel()
 		self.assertFalse(get_gl_entries("Delivery Note", dn.name))
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index a8f3583..33778c9 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -34,6 +34,8 @@
 		se = make_stock_entry(item_code=item.name, target="Stores - _TC", qty=1, incoming_rate=1)
 
 		item.has_variants = 1
+		item.append("variants", {"item_attribute": "Test Size", "item_attribute_value": "Small"})
+		
 		self.assertRaises(ItemTemplateCannotHaveStock, item.save)
 
 	def test_variant_item_codes(self):
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index c7810fd..1135bc7 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -445,10 +445,11 @@
 			args: args,
 			callback: function(r) {
 				if(r.message) {
+					var d = locals[cdt][cdn];
 					$.each(r.message, function(k, v) {
 						d[k] = v;
 					});
-				refresh_field('items');
+					refresh_field("items");
 				}
 			}
 		});
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 399589d..ff0b272 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -81,17 +81,21 @@
 			template = frappe.get_doc("Item", item.variant_of)
 		else:
 			template = item
+			
+		projected_qty, actual_qty = frappe.db.get_value("Bin", {"item_code": item_code,
+			"warehouse": "_Test Warehouse - _TC"}, ["projected_qty", "actual_qty"]) or [0, 0]
 
 		# stock entry reqd for auto-reorder
 		create_stock_reconciliation(item_code=item_code, warehouse="_Test Warehouse - _TC",
-			qty=10, rate=100)
-
-		frappe.db.set_value("Stock Settings", None, "auto_indent", 1)
+			qty = actual_qty + abs(projected_qty) + 10, rate=100)
+			
 		projected_qty = frappe.db.get_value("Bin", {"item_code": item_code,
 			"warehouse": "_Test Warehouse - _TC"}, "projected_qty") or 0
-
+		
+		frappe.db.set_value("Stock Settings", None, "auto_indent", 1)
+		
 		# update re-level qty so that it is more than projected_qty
-		if projected_qty > template.reorder_levels[0].warehouse_reorder_level:
+		if projected_qty >= template.reorder_levels[0].warehouse_reorder_level:
 			template.reorder_levels[0].warehouse_reorder_level += projected_qty
 			template.save()
 
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 97e7c20..de6b3a6 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -14,6 +14,7 @@
 
 class StockLedgerEntry(Document):
 	def validate(self):
+		self.flags.ignore_submit_comment = True
 		from erpnext.stock.utils import validate_warehouse_company
 		self.validate_mandatory()
 		self.validate_item()
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 5614ee2..413f820 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -227,7 +227,7 @@
 			msgprint(_("Please enter Expense Account"), raise_exception=1)
 		elif not frappe.db.sql("""select name from `tabStock Ledger Entry` limit 1"""):
 			if frappe.db.get_value("Account", self.expense_account, "report_type") == "Profit and Loss":
-				frappe.throw(_("Difference Account must be a 'Liability' type account, since this Stock Reconciliation is an Opening Entry"), OpeningEntryAccountError)
+				frappe.throw(_("Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry"), OpeningEntryAccountError)
 
 	def get_items_for(self, warehouse):
 		self.items = []
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index 0d3288c..eaa82dd 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -97,7 +97,8 @@
 	sr.posting_time = args.posting_time or nowtime()
 	sr.company = args.company or "_Test Company"
 	sr.fiscal_year = get_fiscal_year(sr.posting_date)[0]
-	sr.expense_account = args.expense_account or "Stock Adjustment - _TC"
+	sr.expense_account = args.expense_account or \
+		("Stock Adjustment - _TC" if frappe.get_all("Stock Ledger Entry") else "Temporary Opening - _TC")
 	sr.cost_center = args.cost_center or "_Test Cost Center - _TC"
 	sr.append("items", {
 		"item_code": args.item_code or "_Test Item",
diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py
index 61abe3b..30fe755 100644
--- a/erpnext/stock/reorder_item.py
+++ b/erpnext/stock/reorder_item.py
@@ -11,10 +11,7 @@
 	if not frappe.db.sql("select name from `tabFiscal Year` limit 1"):
 		return
 
-	if getattr(frappe.local, "auto_indent", None) is None:
-		frappe.local.auto_indent = cint(frappe.db.get_value('Stock Settings', None, 'auto_indent'))
-
-	if frappe.local.auto_indent:
+	if cint(frappe.db.get_value('Stock Settings', None, 'auto_indent')):
 		return _reorder_item()
 
 def _reorder_item():
diff --git a/setup.py b/setup.py
index 58be999..44d7bde 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 from setuptools import setup, find_packages
 
-version = "5.0.8"
+version = "5.0.9"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()
