fixes during testing version 5
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
index b3105f5..790ba1d 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
@@ -17,22 +17,25 @@
 				if root_account:
 					root_type = children.get("root_type")
 
-				if account_name not in ["account_type", "root_type"]:
+				if account_name not in ["account_type", "root_type", "group_or_ledger"]:
 
 					account_name_in_db = unidecode(account_name.strip().lower())
 					if account_name_in_db in accounts:
 						count = accounts.count(account_name_in_db)
 						account_name = account_name + " " + cstr(count)
 
+					group_or_ledger = identify_group_or_ledger(children)
+					report_type = "Balance Sheet" if root_type in ["Asset", "Liability", "Equity"] \
+						else "Profit and Loss"
+
 					account = frappe.get_doc({
 						"doctype": "Account",
 						"account_name": account_name,
 						"company": company,
 						"parent_account": parent,
-						"group_or_ledger": "Group" if len(children) else "Ledger",
+						"group_or_ledger": group_or_ledger,
 						"root_type": root_type,
-						"report_type": "Balance Sheet" \
-							if root_type in ["Asset", "Liability", "Equity"] else "Profit and Loss",
+						"report_type": report_type,
 						"account_type": children.get("account_type")
 					})
 
@@ -47,6 +50,16 @@
 
 		_import_accounts(chart, None, None, root_account=True)
 
+def identify_group_or_ledger(children):
+	if children.get("group_or_ledger"):
+		group_or_ledger = children.get("group_or_ledger")
+	elif len(set(children.keys()) - set(["account_type", "root_type", "group_or_ledger"])):
+		group_or_ledger = "Group"
+	else:
+		group_or_ledger = "Ledger"
+
+	return group_or_ledger
+
 def get_chart(chart_name):
 	chart = {}
 	if chart_name == "Standard":
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py
index 07cf3d9..640c663 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py
@@ -13,7 +13,8 @@
                 }
             },
             _("Bank Accounts"): {
-                "account_type": "Bank"
+                "account_type": "Bank",
+				"group_or_ledger": "Group"
             },
             _("Cash In Hand"): {
                 _("Cash"): {
@@ -26,7 +27,8 @@
                 _("Earnest Money"): {}
             },
             _("Stock Assets"): {
-                "account_type": "Stock"
+                "account_type": "Stock",
+				"group_or_ledger": "Group"
             },
             _("Tax Assets"): {}
         },
@@ -47,7 +49,9 @@
                 "account_type": "Fixed Asset"
             }
         },
-        _("Investments"): {},
+        _("Investments"): {
+        	"group_or_ledger": "Group"
+        },
         _("Temporary Accounts (Assets)"): {
             _("Temporary Assets"): {}
         },
@@ -139,7 +143,8 @@
             "account_type": "Income Account"
         },
         _("Indirect Income"): {
-            "account_type": "Income Account"
+            "account_type": "Income Account",
+			"group_or_ledger": "Group"
         },
 		"root_type": "Income"
     },
@@ -160,7 +165,8 @@
 			    },
 		    },
 			_("Duties and Taxes"): {
-				"account_type": "Tax"
+				"account_type": "Tax",
+				"group_or_ledger": "Group"
 			},
 			_("Loans (Liabilities)"): {
 				_("Secured Loans"): {},
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index db870f5..0c9e800 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -70,7 +70,7 @@
 				if not (d.party_type and d.party):
 					frappe.throw(_("Row{0}: Party Type and Party is required for Receivable / Payable account {1}").format(d.idx, d.account))
 			elif d.party_type and d.party:
-				frappe.throw(_("Row{0}: Party Type and Party is only applicable against Receivable / Payable account {1}").format(d.idx, d.account))
+				frappe.throw(_("Row{0}: Party Type and Party is only applicable against Receivable / Payable account").format(d.idx))
 
 	def check_credit_limit(self):
 		customers = list(set([d.party for d in self.get("entries") if d.party_type=="Customer" and flt(d.debit) > 0]))
diff --git a/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
index 3e6545a..3211346 100644
--- a/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/test_journal_voucher.py
@@ -89,7 +89,12 @@
 		set_perpetual_inventory()
 
 		jv = frappe.copy_doc(test_records[0])
-		jv.get("entries")[0].account = "_Test Warehouse - _TC"
+		jv.get("entries")[0].update({
+			"account": "_Test Warehouse - _TC",
+			"party_type": None,
+			"party": None
+		})
+
 		jv.insert()
 
 		from erpnext.accounts.general_ledger import StockAccountInvalidTransaction
@@ -152,9 +157,13 @@
 		self.clear_account_balance()
 
 		jv = frappe.copy_doc(test_records[0])
-		jv.get("entries")[0].account = "_Test Account Cost for Goods Sold - _TC"
-		jv.get("entries")[0].cost_center = "_Test Cost Center - _TC"
-		jv.get("entries")[0].credit = 30000.0
+		jv.get("entries")[0].update({
+			"account": "_Test Account Cost for Goods Sold - _TC",
+			"cost_center": "_Test Cost Center - _TC",
+			"party_type": None,
+			"party": None,
+			"credit": 30000.0
+		})
 		jv.get("entries")[1].debit = 30000.0
 		jv.submit()
 
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index e9de551..5e0d9c3 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -23,7 +23,7 @@
 		cond = "name = '%s'" % fiscal_year.replace("'", "\'")
 	elif company:
 		cond = """('%s' in (select company from `tabFiscal Year Company`
-			where `tabFiscal Year Company`.parent = `tabFiscal Year`.name)) 
+			where `tabFiscal Year Company`.parent = `tabFiscal Year`.name))
 			and '%s' >= year_start_date and '%s' <= year_end_date """ %(company.replace("'", "\'"), date, date)
 	else:
 		cond = "'%s' >= year_start_date and '%s' <= year_end_date" %(date, date)
@@ -233,7 +233,7 @@
 	value = frappe.db.get_value("Company", company, fieldname)
 
 	if not value:
-		throw(_("Please set default value {0} in Company {0}").format(frappe.get_meta("Company").get_label(fieldname), company))
+		throw(_("Please set default value {0} in Company {1}").format(frappe.get_meta("Company").get_label(fieldname), company))
 
 	return value
 
diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
index 4d7564d..e67d320 100644
--- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
@@ -34,8 +34,7 @@
 
 		po = frappe.copy_doc(test_records[0]).insert()
 
-		self.assertRaises(frappe.ValidationError, make_purchase_receipt,
-			po.name)
+		self.assertRaises(frappe.ValidationError, make_purchase_receipt, po.name)
 
 		po = frappe.get_doc("Purchase Order", po.name)
 		po.is_subcontracted = "No"
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index c03a545..5bcd3c2 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -93,3 +93,5 @@
 erpnext.patches.v5_0.update_frozen_accounts_permission_role
 erpnext.patches.v5_0.update_dn_against_doc_fields
 execute:frappe.db.sql("update `tabMaterial Request` set material_request_type = 'Material Transfer' where material_request_type = 'Transfer'")
+execute:frappe.reload_doc('stock', 'doctype', 'item')
+execute:frappe.db.sql("update `tabItem` i set apply_warehouse_wise_reorder_level=1, re_order_level=0, re_order_qty=0 where exists(select name from `tabItem Reorder` where parent=i.name)")
diff --git a/erpnext/patches/v4_2/repost_stock_reconciliation.py b/erpnext/patches/v4_2/repost_stock_reconciliation.py
index eb4de53..73cb36d 100644
--- a/erpnext/patches/v4_2/repost_stock_reconciliation.py
+++ b/erpnext/patches/v4_2/repost_stock_reconciliation.py
@@ -6,8 +6,8 @@
 import json
 
 def execute():
-	existing_allow_negative_stock = frappe.db.get_default("allow_negative_stock")
-	frappe.db.set_default("allow_negative_stock", 1)
+	existing_allow_negative_stock = frappe.db.get_value("Stock Settings", None, "allow_negative_stock")
+	frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 	head_row = ["Item Code", "Warehouse", "Quantity", "Valuation Rate"]
 	stock_reco_to_be_reposted = []
@@ -28,4 +28,4 @@
 		reco.validate()
 		reco.on_submit()
 
-	frappe.db.set_default("allow_negative_stock", existing_allow_negative_stock)
+	frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock)
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index f872292..775495a 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -116,7 +116,7 @@
 		if next_doc == "Sales Invoice":
 			from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
 			next_doc = make_sales_invoice(so.name)
-		
+
 		return next_doc
 
 	def create_so(self, so_doc = None):
@@ -182,7 +182,7 @@
 		so = self.create_so()
 
 		# allow negative stock
-		frappe.db.set_default("allow_negative_stock", 1)
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		# submit dn
 		dn = self.create_dn_against_so(so)
@@ -212,7 +212,7 @@
 		so = self.create_so()
 
 		# allow negative stock
-		frappe.db.set_default("allow_negative_stock", 1)
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		# set over-delivery tolerance
 		frappe.db.set_value('Item', so.get("sales_order_details")[0].item_code, 'tolerance', 50)
@@ -268,7 +268,7 @@
 		so = self.create_so(test_record)
 
 		# allow negative stock
-		frappe.db.set_default("allow_negative_stock", 1)
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		# submit dn
 		dn = self.create_dn_against_so(so)
@@ -317,7 +317,7 @@
 		so = self.create_so(test_record)
 
 		# allow negative stock
-		frappe.db.set_default("allow_negative_stock", 1)
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		# set over-delivery tolerance
 		frappe.db.set_value('Item', so.get("sales_order_details")[0].item_code, 'tolerance', 50)
diff --git a/erpnext/setup/doctype/company/test_records.json b/erpnext/setup/doctype/company/test_records.json
index 34566e8..13cb03e 100644
--- a/erpnext/setup/doctype/company/test_records.json
+++ b/erpnext/setup/doctype/company/test_records.json
@@ -5,7 +5,8 @@
   "country": "India",
   "default_currency": "INR",
   "doctype": "Company",
-  "domain": "Manufacturing"
+  "domain": "Manufacturing",
+  "chart_of_accounts": "Standard"
  },
  {
   "abbr": "_TC1",
@@ -13,7 +14,8 @@
   "country": "United States",
   "default_currency": "USD",
   "doctype": "Company",
-  "domain": "Retail"
+  "domain": "Retail",
+  "chart_of_accounts": "Standard"
  },
  {
   "abbr": "_TC2",
@@ -21,6 +23,7 @@
   "default_currency": "EUR",
   "country": "Germany",
   "doctype": "Company",
-  "domain": "Retail"
+  "domain": "Retail",
+  "chart_of_accounts": "Standard"
  }
 ]
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index e7d78ab..86d73fb 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -47,7 +47,8 @@
 			"language"			:"english",
 			"company_tagline"	:"Testing",
 			"email"				:"test@erpnext.com",
-			"password"			:"test"
+			"password"			:"test",
+			"chart_of_accounts" : "Standard"
 		})
 
 	frappe.db.sql("delete from `tabLeave Allocation`")
diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json
index 98aae3a..5145f48 100644
--- a/erpnext/stock/doctype/item/item.json
+++ b/erpnext/stock/doctype/item/item.json
@@ -357,7 +357,8 @@
    "read_only": 0
   }, 
   {
-   "description": "Auto-raise Material Request if quantity goes below re-order level in a warehouse", 
+   "depends_on": "eval:doc.is_stock_item==\"Yes\"", 
+   "description": "Auto-raise Material Request if quantity goes below re-order level in default warehouse", 
    "fieldname": "reorder_section", 
    "fieldtype": "Section Break", 
    "label": "Re-order", 
@@ -366,7 +367,7 @@
    "read_only": 0
   }, 
   {
-   "depends_on": "eval:doc.is_stock_item==\"Yes\"", 
+   "depends_on": "eval:(doc.is_stock_item==\"Yes\" && !doc.apply_warehouse_wise_reorder_level)", 
    "fieldname": "re_order_level", 
    "fieldtype": "Float", 
    "label": "Re-Order Level", 
@@ -376,7 +377,7 @@
    "read_only": 0
   }, 
   {
-   "depends_on": "eval:doc.is_stock_item==\"Yes\"", 
+   "depends_on": "eval:(doc.is_stock_item==\"Yes\" && !doc.apply_warehouse_wise_reorder_level)", 
    "fieldname": "re_order_qty", 
    "fieldtype": "Float", 
    "label": "Re-Order Qty", 
@@ -384,12 +385,22 @@
    "read_only": 0
   }, 
   {
+   "depends_on": "eval:doc.is_stock_item==\"Yes\"", 
+   "fieldname": "apply_warehouse_wise_reorder_level", 
+   "fieldtype": "Check", 
+   "label": "Apply Warehouse-wise Reorder Level", 
+   "permlevel": 0, 
+   "precision": ""
+  }, 
+  {
+   "depends_on": "eval:(doc.is_stock_item==\"Yes\" && doc.apply_warehouse_wise_reorder_level)", 
    "fieldname": "section_break_31", 
    "fieldtype": "Section Break", 
    "permlevel": 0, 
    "read_only": 0
   }, 
   {
+   "depends_on": "eval:(doc.is_stock_item==\"Yes\" && doc.apply_warehouse_wise_reorder_level)", 
    "description": "Will also apply for variants unless overrridden", 
    "fieldname": "item_reorder", 
    "fieldtype": "Table", 
@@ -865,7 +876,7 @@
  "icon": "icon-tag", 
  "idx": 1, 
  "max_attachments": 1, 
- "modified": "2014-11-25 18:39:56.226084", 
+ "modified": "2014-11-26 15:05:38.116026", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Item", 
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 8bccf07..34d5428 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import msgprint, _
-from frappe.utils import cstr, flt, getdate, now_datetime, formatdate
+from frappe.utils import cstr, flt, cint, getdate, now_datetime, formatdate
 from frappe.website.website_generator import WebsiteGenerator
 from erpnext.setup.doctype.item_group.item_group import invalidate_cache_for, get_parent_item_groups
 from frappe.website.render import clear_cache
@@ -54,7 +54,7 @@
 		self.check_item_tax()
 		self.validate_barcode()
 		self.cant_change()
-		self.validate_item_type_for_reorder()
+		self.validate_reorder_level()
 		self.validate_warehouse_for_reorder()
 		self.validate_variants()
 
@@ -340,10 +340,15 @@
 					if self.check_if_sle_exists() == "exists":
 						frappe.throw(_("As there are existing stock transactions for this item, you can not change the values of 'Has Serial No', 'Has Batch No', 'Is Stock Item' and 'Valuation Method'"))
 
-	def validate_item_type_for_reorder(self):
+	def validate_reorder_level(self):
+		if cint(self.apply_warehouse_wise_reorder_level):
+			self.re_order_level, self.re_order_qty = 0, 0
+		else:
+			self.set("item_reorder", [])
+
 		if self.re_order_level or len(self.get("item_reorder", {"material_request_type": "Purchase"})):
 			if not self.is_purchase_item:
-				frappe.throw(_("""To set reorder level, item must be Purchase Item"""))
+				frappe.throw(_("""To set reorder level, item must be a Purchase Item"""))
 
 	def validate_warehouse_for_reorder(self):
 		warehouse = []
@@ -411,13 +416,13 @@
 	def recalculate_bin_qty(self, newdn):
 		from erpnext.utilities.repost_stock import repost_stock
 		frappe.db.auto_commit_on_many_writes = 1
-		frappe.db.set_default("allow_negative_stock", 1)
+		existing_allow_negative_stock = frappe.db.get_value("Stock Settings", None, "allow_negative_stock")
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		for warehouse in frappe.db.sql("select name from `tabWarehouse`"):
 			repost_stock(newdn, warehouse[0])
 
-		frappe.db.set_default("allow_negative_stock",
-			frappe.db.get_value("Stock Settings", None, "allow_negative_stock"))
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock)
 		frappe.db.auto_commit_on_many_writes = 0
 
 	def copy_specification_from_item_group(self):
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 2807ca8..55cd12f 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -34,7 +34,7 @@
 		se.purpose = "Material Receipt"
 		se.append("mtn_details", {
 			"item_code": item.name,
-			"t_warehouse": "Stores - WP",
+			"t_warehouse": "Stores - _TC",
 			"qty": 1,
 			"incoming_rate": 1
 		})
@@ -73,7 +73,7 @@
 		se.purpose = "Material Receipt"
 		se.append("mtn_details", {
 			"item_code": item.name,
-			"t_warehouse": "Stores - WP",
+			"t_warehouse": "Stores - _TC",
 			"qty": 1,
 			"incoming_rate": 1
 		})
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 0b23af0..48eed27 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -399,7 +399,7 @@
 		self.assertEquals(se.doctype, "Stock Entry")
 		self.assertEquals(len(se.get("mtn_details")), len(mr.get("indent_details")))
 
-	def test_compleated_qty_for_issue(self):
+	def test_completed_qty_for_issue(self):
 		def _get_requested_qty():
 			return flt(frappe.db.get_value("Bin", {"item_code": "_Test Item Home Desktop 100",
 				"warehouse": "_Test Warehouse - _TC"}, "indented_qty"))
@@ -412,7 +412,7 @@
 		mr.material_request_type = "Material Issue"
 		mr.submit()
 
-		#testing bin value after material request is submitted 
+		#testing bin value after material request is submitted
 		self.assertEquals(_get_requested_qty(), existing_requested_qty + 54.0)
 
 		# receive items to allow issue
@@ -431,7 +431,7 @@
 		self.assertEquals(mr.get("indent_details")[0].ordered_qty, 60.0)
 		self.assertEquals(mr.get("indent_details")[1].ordered_qty, 3.0)
 
-		#testing bin requested qty after issuing stock against material request 
+		#testing bin requested qty after issuing stock against material request
 		self.assertEquals(_get_requested_qty(), existing_requested_qty)
 
 test_dependencies = ["Currency Exchange"]
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index f0af283..36a1095 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -103,7 +103,8 @@
 
 			for f in ("uom", "stock_uom", "description", "item_name", "expense_account",
 				"cost_center", "conversion_factor"):
-				item.set(f, item_details.get(f))
+					if not item.get(f):
+						item.set(f, item_details.get(f))
 
 			if not item.transfer_qty:
 				item.transfer_qty = item.qty * item.conversion_factor
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index fd878bc..7caf062 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -24,9 +24,9 @@
 	sle = get_sle(item_code = item_code, warehouse = warehouse)
 	qty = sle[0].qty_after_transaction if sle else 0
 	if qty < 0:
-		make_stock_entry(item_code, None, warehouse, abs(qty), incoming_rate=10)
+		make_stock_entry(item_code=item_code, target=warehouse, qty=abs(qty), incoming_rate=10)
 	elif qty > 0:
-		make_stock_entry(item_code, warehouse, None, qty, incoming_rate=10)
+		make_stock_entry(item_code=item_code, source=warehouse, qty=qty, incoming_rate=10)
 
 class TestStockEntry(unittest.TestCase):
 	def tearDown(self):
@@ -36,31 +36,31 @@
 			frappe.db.set_default("company", self.old_default_company)
 
 	def test_fifo(self):
-		frappe.db.set_default("allow_negative_stock", 1)
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 		item_code = "_Test Item 2"
 		warehouse = "_Test Warehouse - _TC"
 		make_zero(item_code, warehouse)
 
-		make_stock_entry(item_code, None, warehouse, 1, incoming_rate=10)
+		make_stock_entry(item_code=item_code, target=warehouse, qty=1, incoming_rate=10)
 		sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
 
 		self.assertEqual([[1, 10]], eval(sle.stock_queue))
 
 		# negative qty
 		make_zero(item_code, warehouse)
-		make_stock_entry(item_code, warehouse, None, 1, incoming_rate=10)
+		make_stock_entry(item_code=item_code, source=warehouse, qty=1, incoming_rate=10)
 		sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
 
 		self.assertEqual([[-1, 10]], eval(sle.stock_queue))
 
 		# further negative
-		make_stock_entry(item_code, warehouse, None, 1)
+		make_stock_entry(item_code=item_code, source=warehouse, qty=1)
 		sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
 
 		self.assertEqual([[-2, 10]], eval(sle.stock_queue))
 
 		# move stock to positive
-		make_stock_entry(item_code, None, warehouse, 3, incoming_rate=10)
+		make_stock_entry(item_code=item_code, target=warehouse, qty=3, incoming_rate=10)
 		sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
 
 		self.assertEqual([[1, 10]], eval(sle.stock_queue))
@@ -84,7 +84,7 @@
 		warehouse = "_Test Warehouse - _TC"
 
 		# stock entry reqd for auto-reorder
-		make_stock_entry(item_code=item_code, target="_Test Warehouse 1 - _TC", qty=1, incoming_rate=1)
+		make_stock_entry(item_code=item_code, target="_Test Warehouse - _TC", qty=1, incoming_rate=1)
 
 		frappe.db.set_value("Stock Settings", None, "auto_indent", 1)
 		projected_qty = frappe.db.get_value("Bin", {"item_code": item_code,
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index 91775d9..ed62d2f 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -195,7 +195,7 @@
 
 	def insert_existing_sle(self, valuation_method):
 		frappe.db.set_value("Item", "_Test Item", "valuation_method", valuation_method)
-		frappe.db.set_default("allow_negative_stock", 1)
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		stock_entry = {
 			"company": "_Test Company",
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 3939b89..2c81c4c 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -142,7 +142,8 @@
 	def recalculate_bin_qty(self, newdn):
 		from erpnext.utilities.repost_stock import repost_stock
 		frappe.db.auto_commit_on_many_writes = 1
-		frappe.db.set_default("allow_negative_stock", 1)
+		existing_allow_negative_stock = frappe.db.get_value("Stock Settings", None, "allow_negative_stock")
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 		for item in frappe.db.sql("""select distinct item_code from (
 			select name as item_code from `tabItem` where ifnull(is_stock_item, 'Yes')='Yes'
@@ -150,6 +151,5 @@
 			select distinct item_code from tabBin) a"""):
 				repost_stock(item[0], newdn)
 
-		frappe.db.set_default("allow_negative_stock",
-			frappe.db.get_value("Stock Settings", None, "allow_negative_stock"))
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock)
 		frappe.db.auto_commit_on_many_writes = 0
diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py
index 3afbb4b..e9294f8 100644
--- a/erpnext/stock/reorder_item.py
+++ b/erpnext/stock/reorder_item.py
@@ -2,7 +2,6 @@
 # License: GNU General Public License v3. See license.txt
 
 import frappe
-from frappe import _
 from frappe.utils import flt, cstr, nowdate, add_days, cint
 from erpnext.accounts.utils import get_fiscal_year, FiscalYearError
 
@@ -23,8 +22,7 @@
 
 	item_warehouse_projected_qty = get_item_warehouse_projected_qty()
 
-	warehouse_company = frappe._dict(frappe.db.sql("""select name, company
-		from `tabWarehouse`"""))
+	warehouse_company = frappe._dict(frappe.db.sql("""select name, company from `tabWarehouse`"""))
 	default_company = (frappe.defaults.get_defaults().get("company") or
 		frappe.db.sql("""select name from tabCompany limit 1""")[0][0])
 
diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py
index b63493e..3a58d2b 100644
--- a/erpnext/utilities/repost_stock.py
+++ b/erpnext/utilities/repost_stock.py
@@ -16,7 +16,8 @@
 	frappe.db.auto_commit_on_many_writes = 1
 
 	if allow_negative_stock:
-		frappe.db.set_default("allow_negative_stock", 1)
+		existing_allow_negative_stock = frappe.db.get_value("Stock Settings", None, "allow_negative_stock")
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
 
 	for d in frappe.db.sql("""select distinct item_code, warehouse from
 		(select item_code, warehouse from tabBin
@@ -29,8 +30,7 @@
 				frappe.db.rollback()
 
 	if allow_negative_stock:
-		frappe.db.set_default("allow_negative_stock",
-			frappe.db.get_value("Stock Settings", None, "allow_negative_stock"))
+		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock)
 	frappe.db.auto_commit_on_many_writes = 0
 
 def repost_stock(item_code, warehouse, allow_zero_rate=False, only_actual=False):