production order: test fixed and added  in test_stock_entry.py
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index ed0531e..26fd52d 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -45,6 +45,7 @@
 				for sle in sle_list:
 					if warehouse_account.get(sle.warehouse):
 						# from warehouse account
+
 						self.check_expense_account(detail)
 
 						gl_list.append(self.get_gl_dict({
@@ -230,10 +231,10 @@
 			make_gl_entries(gl_entries)
 
 	def check_expense_account(self, item):
-		if item.meta.get_field("expense_account") and not item.expense_account:
+		if not item.get("expense_account"):
 			frappe.throw(_("Expense or Difference account is mandatory for Item {0} as there is difference in value").format(item.item_code))
 
-		if getattr(item, "expense_account", None) and not item.cost_center:
+		if item.get("expense_account") and not item.cost_center:
 			frappe.throw(_("""Cost Center is mandatory for Item {0}""").format(item.item_code))
 
 	def get_sl_entries(self, d, args):
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 496d577..626c3fc 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -112,7 +112,7 @@
 		produced_qty = flt(produced_qty[0][0]) if produced_qty else 0
 
 		if produced_qty > self.qty:
-			frappe.throw(_("Manufactured quantity {0} cannot be greater than planned quanitity {1} in Production Order {2}").format(produced_qty, self.qty, self.name, StockOverProductionError))
+			frappe.throw(_("Manufactured quantity {0} cannot be greater than planned quanitity {1} in Production Order {2}").format(produced_qty, self.qty, self.name), StockOverProductionError)
 
 		self.db_set("produced_qty", produced_qty)
 
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index 4c563e6..2736be4 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -7,40 +7,21 @@
 import frappe
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
 from erpnext.manufacturing.doctype.production_order.production_order import make_stock_entry
-
+from erpnext.stock.doctype.stock_entry import test_stock_entry
 
 class TestProductionOrder(unittest.TestCase):
 	def test_planned_qty(self):
 		set_perpetual_inventory(0)
+
+		planned0 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item", "warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty") or 0
+
 		pro_doc = frappe.copy_doc(test_records[0])
 		pro_doc.insert()
 		pro_doc.submit()
 
 		# add raw materials to stores
-		s = frappe.new_doc("Stock Entry")
-		s.purpose = "Material Receipt"
-		s.company = "_Test Company"
-		s.append("mtn_details", {
-			"item_code": "_Test Item",
-			"t_warehouse": "Stores - _TC",
-			"qty": 100,
-			"incoming_rate": 5000
-		})
-		s.insert()
-		s.submit()
-
-		# add raw materials to stores
-		s = frappe.new_doc("Stock Entry")
-		s.purpose = "Material Receipt"
-		s.company = "_Test Company"
-		s.append("mtn_details", {
-			"item_code": "_Test Item Home Desktop 100",
-			"t_warehouse": "Stores - _TC",
-			"qty": 100,
-			"incoming_rate": 1000
-		})
-		s.insert()
-		s.submit()
+		test_stock_entry.make_stock_entry("_Test Item", None, "Stores - _TC", 100, 100)
+		test_stock_entry.make_stock_entry("_Test Item Home Desktop 100", None, "Stores - _TC", 100, 100)
 
 		# from stores to wip
 		s = frappe.get_doc(make_stock_entry(pro_doc.name, "Material Transfer", 4))
@@ -56,8 +37,8 @@
 
 		self.assertEqual(frappe.db.get_value("Production Order", pro_doc.name,
 			"produced_qty"), 4)
-		self.assertEqual(frappe.db.get_value("Bin", {"item_code": "_Test FG Item",
-			"warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty"), 6)
+		planned1 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item", "warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty")
+		self.assertEqual(planned1 - planned0, 6)
 
 		return pro_doc
 
@@ -65,11 +46,8 @@
 		from erpnext.manufacturing.doctype.production_order.production_order import StockOverProductionError
 		pro_doc = self.test_planned_qty()
 
-		s = frappe.get_doc(make_stock_entry(pro_doc.name, "Material Transfer", 7))
-		for d in s.get("mtn_details"):
-			d.s_warehouse = "Stores - _TC"
-		s.insert()
-		s.submit()
+		test_stock_entry.make_stock_entry("_Test Item", None, "_Test Warehouse - _TC", 100, 100)
+		test_stock_entry.make_stock_entry("_Test Item Home Desktop 100", None, "_Test Warehouse - _TC", 100, 100)
 
 		s = frappe.get_doc(make_stock_entry(pro_doc.name, "Manufacture/Repack", 7))
 		s.insert()
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index f5fd08c..3480f2c 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -824,3 +824,23 @@
 	return se
 
 test_records = frappe.get_test_records('Stock Entry')
+
+def make_stock_entry(item, source, target, qty, incoming_rate=None):
+	s = frappe.new_doc("Stock Entry")
+	if source and target:
+		s.purpose = "Material Transfer"
+	elif source:
+		s.purpose = "Material Issue"
+	else:
+		s.purpose = "Material Receipt"
+	s.company = "_Test Company"
+	s.append("mtn_details", {
+		"item_code": item,
+		"s_warehouse": source,
+		"t_warehouse": target,
+		"qty": qty,
+		"incoming_rate": incoming_rate
+	})
+	s.insert()
+	s.submit()
+	return s