test-cases added
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index efb3edd..80c61ab 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -293,22 +293,19 @@
 
 @frappe.whitelist()
 def make_stock_entry(source_name, target_doc=None):
-	
-	obj = frappe.get_doc("Material Request", source_name)
-
 	def update_item(obj, target, source_parent):
 		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:
+			target.s_warehouse = obj.warehouse
 
 	def set_missing_values(source, target):
 		target.purpose = source.material_request_type
 		target.run_method("get_stock_and_rate")
 
-	if obj.material_request_type=="Material Issue":
-		warehouse = "s_warehouse"
-	else:
-		warehouse = "t_warehouse"
 	doclist = get_mapped_doc("Material Request", source_name, {
 		"Material Request": {
 			"doctype": "Stock Entry",
@@ -323,7 +320,6 @@
 				"name": "material_request_item",
 				"parent": "material_request",
 				"uom": "stock_uom",
-				"warehouse": warehouse
 			},
 			"postprocess": update_item
 		}
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index ab1d3cc..753c5b1 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -51,7 +51,7 @@
 			mr.name)
 
 		mr = frappe.get_doc("Material Request", mr.name)
-		mr.material_request_type = "Transfer"
+		mr.material_request_type = "Material Transfer"
 		mr.submit()
 		se = make_stock_entry(mr.name)
 
@@ -168,7 +168,7 @@
 
 		# submit material request of type Purchase
 		mr = frappe.copy_doc(test_records[0])
-		mr.material_request_type = "Transfer"
+		mr.material_request_type = "Material Transfer"
 		mr.insert()
 		mr.submit()
 
@@ -257,7 +257,7 @@
 
 		# submit material request of type Purchase
 		mr = frappe.copy_doc(test_records[0])
-		mr.material_request_type = "Transfer"
+		mr.material_request_type = "Material Transfer"
 		mr.insert()
 		mr.submit()
 
@@ -330,9 +330,9 @@
 		self.assertEquals(current_requested_qty_item2, existing_requested_qty_item2 + 3.0)
 
 	def test_incorrect_mapping_of_stock_entry(self):
-		# submit material request of type Purchase
+		# submit material request of type Transfer
 		mr = frappe.copy_doc(test_records[0])
-		mr.material_request_type = "Transfer"
+		mr.material_request_type = "Material Transfer"
 		mr.insert()
 		mr.submit()
 
@@ -363,6 +363,17 @@
 		se = frappe.copy_doc(se_doc)
 		self.assertRaises(frappe.MappingMismatchError, se.insert)
 
+		# submit material request of type Transfer
+		mr = frappe.copy_doc(test_records[0])
+		mr.material_request_type = "Material Issue"
+		mr.insert()
+		mr.submit()
+
+		# map a stock entry
+		from erpnext.stock.doctype.material_request.material_request import make_stock_entry
+		se_doc = make_stock_entry(mr.name)
+		self.assertEquals(se_doc.get("mtn_details")[0].s_warehouse, "_Test Warehouse - _TC")
+
 	def test_warehouse_company_validation(self):
 		from erpnext.stock.utils import InvalidWarehouseCompany
 		mr = frappe.copy_doc(test_records[0])
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index d06a761..839554a 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -625,7 +625,8 @@
 				mreq_item = frappe.db.get_value("Material Request Item",
 					{"name": item.material_request_item, "parent": item.material_request},
 					["item_code", "warehouse", "idx"], as_dict=True)
-				if mreq_item.item_code != item.item_code or mreq_item.warehouse != item.t_warehouse:
+				if mreq_item.item_code != item.item_code or \
+				mreq_item.warehouse != (item.s_warehouse if self.purpose== "Material Issue" else item.t_warehouse):
 					frappe.throw(_("Item or Warehouse for row {0} does not match Material Request").format(item.idx),
 						frappe.MappingMismatchError)