diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 73259e3..840c55d 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -350,7 +350,7 @@
 			'cost_center'		: d.cost_center,
 			'company'		: cur_frm.doc.company
 		};
-		return get_server_fields('get_item_details', {arg: JSON.stringify(args)},
+		return get_server_fields('get_item_details', JSON.stringify(args),
 			'mtn_details', doc, cdt, cdn, 1);
 	}
 
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 2e3942e..076628e 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -11,8 +11,6 @@
 from erpnext.stock.utils import get_incoming_rate
 from erpnext.stock.stock_ledger import get_previous_sle
 from erpnext.controllers.queries import get_match_cond
-import json
-
 
 class NotUpdateStockError(frappe.ValidationError): pass
 class StockOverReturnError(frappe.ValidationError): pass
@@ -340,23 +338,22 @@
 			"planned_qty": (self.docstatus==1 and -1 or 1 ) * flt(self.fg_completed_qty)
 		})
 
-	def get_item_details(self, arg):
-		arg = json.loads(arg)
+	def get_item_details(self, args):
 		item = frappe.db.sql("""select stock_uom, description, item_name,
 			expense_account, buying_cost_center from `tabItem`
 			where name = %s and (ifnull(end_of_life,'')='' or end_of_life > now())""",
-			(arg.get('item_code')), as_dict = 1)
+			(args.get('item_code')), as_dict = 1)
 		if not item:
-			frappe.throw(_("Item {0} is not active or end of life has been reached").format(arg.get("item_code")))
+			frappe.throw(_("Item {0} is not active or end of life has been reached").format(args.get("item_code")))
 
 		ret = {
 			'uom'			      	: item and item[0]['stock_uom'] or '',
 			'stock_uom'			  	: item and item[0]['stock_uom'] or '',
 			'description'		  	: item and item[0]['description'] or '',
 			'item_name' 		  	: item and item[0]['item_name'] or '',
-			'expense_account'		: item and item[0]['expense_account'] or arg.get("expense_account") \
-				or frappe.db.get_value("Company", arg.get("company"), "default_expense_account"),
-			'cost_center'			: item and item[0]['buying_cost_center'] or arg.get("cost_center"),
+			'expense_account'		: item and item[0]['expense_account'] or args.get("expense_account") \
+				or frappe.db.get_value("Company", args.get("company"), "default_expense_account"),
+			'cost_center'			: item and item[0]['buying_cost_center'] or args.get("cost_center"),
 			'qty'					: 0,
 			'transfer_qty'			: 0,
 			'conversion_factor'		: 1,
@@ -364,7 +361,7 @@
 			'actual_qty'			: 0,
 			'incoming_rate'			: 0
 		}
-		stock_and_rate = arg.get('warehouse') and self.get_warehouse_details(json.dumps(arg)) or {}
+		stock_and_rate = args.get('warehouse') and self.get_warehouse_details(args) or {}
 		ret.update(stock_and_rate)
 		return ret
 
@@ -383,7 +380,6 @@
 		return ret
 
 	def get_warehouse_details(self, args):
-		args = json.loads(args)
 		ret = {}
 		if args.get('warehouse') and args.get('item_code'):
 			args.update({
