Test Cases Added - Work Pending
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 80c61ab..ec77cf3 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -294,9 +294,12 @@
 @frappe.whitelist()
 def make_stock_entry(source_name, target_doc=None):
 	def update_item(obj, target, source_parent):
+		qty = flt(obj.qty) - flt(obj.ordered_qty) \
+			if flt(obj.qty) > flt(obj.ordered_qty) else 0
+		target.qty = qty
+		target.transfer_qty = qty
 		target.conversion_factor = 1
-		target.qty = flt(obj.qty) - flt(obj.ordered_qty)
-		target.transfer_qty = flt(obj.qty) - flt(obj.ordered_qty)
+		
 		if source_parent.material_request_type == "Material Transfer":
 			target.t_warehouse = obj.warehouse
 		else:
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 753c5b1..16abcf8 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -77,7 +77,7 @@
 						"stock_uom": "_Test UOM 1",
 						"transfer_qty": qty1,
 						"uom": "_Test UOM 1",
-						"t_warehouse": "_Test Warehouse 1 - _TC",
+						"t_warehouse": warehouse or "_Test Warehouse 1 - _TC",
 					},
 					{
 						"conversion_factor": 1.0,
@@ -89,7 +89,7 @@
 						"stock_uom": "_Test UOM 1",
 						"transfer_qty": qty2,
 						"uom": "_Test UOM 1",
-						"t_warehouse": "_Test Warehouse 1 - _TC",
+						"t_warehouse": warehouse or "_Test Warehouse 1 - _TC",
 					}
 				]
 			})
@@ -383,6 +383,56 @@
 	def _get_requested_qty(self, item_code, warehouse):
 		return flt(frappe.db.get_value("Bin", {"item_code": item_code, "warehouse": warehouse}, "indented_qty"))
 
+	def test_make_stock_entry_for_Material_Issue(self):
+		from erpnext.stock.doctype.material_request.material_request import make_stock_entry
+
+		mr = frappe.copy_doc(test_records[0]).insert()
+
+		self.assertRaises(frappe.ValidationError, make_stock_entry,
+			mr.name)
+
+		mr = frappe.get_doc("Material Request", mr.name)
+		mr.material_request_type = "Material Issue"
+		mr.submit()
+		se = make_stock_entry(mr.name)
+
+		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 _get_requested_qty():
+			return flt(frappe.db.get_value("Bin", {"item_code": "_Test Item Home Desktop 100",
+				"warehouse": "_Test Warehouse - _TC"}, "indented_qty"))
+
+		from erpnext.stock.doctype.material_request.material_request import make_stock_entry
+
+		existing_requested_qty = _get_requested_qty()
+
+		mr = frappe.copy_doc(test_records[0])
+		mr.material_request_type = "Material Issue"
+		mr.submit()
+
+		#testing bin value after material request is submitted 
+		self.assertEquals(_get_requested_qty(), existing_requested_qty + 54.0)
+
+		# receive items to allow issue
+		self._insert_stock_entry(60, 6, "_Test Warehouse - _TC")
+
+		# make stock entry against MR
+
+		se_doc = make_stock_entry(mr.name)
+		se_doc.fiscal_year = "_Test Fiscal Year 2014"
+		se_doc.get("mtn_details")[0].qty = 60.0
+		se_doc.insert()
+		se_doc.submit()
+
+		# check if per complete is as expected
+		mr.load_from_db()
+		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 
+		self.assertEquals(_get_requested_qty(), existing_requested_qty)
 
 test_dependencies = ["Currency Exchange"]
 test_records = frappe.get_test_records('Material Request')
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 839554a..f0af283 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -219,7 +219,7 @@
 		if not self.posting_date or not self.posting_time:
 			frappe.throw(_("Posting date and posting time is mandatory"))
 
-		allow_negative_stock = cint(frappe.db.get_default("allow_negative_stock"))
+		allow_negative_stock = cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock"))
 
 		for d in self.get('mtn_details'):
 			d.transfer_qty = flt(d.transfer_qty)
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index eae1bf6..62cc397 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -87,7 +87,7 @@
 	stock_value_difference = 0.0
 
 	for sle in entries_to_fix:
-		if sle.serial_no or not cint(frappe.db.get_default("allow_negative_stock")):
+		if sle.serial_no or not cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")):
 			# validate negative stock for serialized items, fifo valuation
 			# or when negative stock is not allowed for moving average
 			if not validate_negative_stock(qty_after_transaction, sle):