[fix] fetch difference account and cost center on selecting item in stock entry
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index 46e336f..4d4f4b7 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -349,7 +349,7 @@
 
 // warehouse in detail table
 //----------------------------
-cur_frm.fields_dict['entries'].grid.get_field('warehouse').get_query= function(doc, cdt, cdn) {
+cur_frm.fields_dict['entries'].grid.get_field('warehouse').get_query = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	return{
 		filters:[
@@ -370,36 +370,29 @@
 	}
 }
 
-cur_frm.cscript.income_account = function(doc, cdt, cdn){
+cur_frm.cscript.income_account = function(doc, cdt, cdn) {
 	cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "income_account");
 }
 
-cur_frm.cscript.expense_account = function(doc, cdt, cdn){
+cur_frm.cscript.expense_account = function(doc, cdt, cdn) {
 	cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "expense_account");
 }
 
+cur_frm.cscript.cost_center = function(doc, cdt, cdn) {
+	cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "cost_center");
+}
+
 cur_frm.cscript.copy_account_in_all_row = function(doc, cdt, cdn, fieldname) {
 	var d = locals[cdt][cdn];
 	if(d[fieldname]){
 		var cl = getchildren('Sales Invoice Item', doc.name, cur_frm.cscript.fname, doc.doctype);
-		for(var i = 0; i < cl.length; i++){
+		for(var i = 0; i < cl.length; i++) {
 			if(!cl[i][fieldname]) cl[i][fieldname] = d[fieldname];
 		}
 	}
 	refresh_field(cur_frm.cscript.fname);
 }
 
-cur_frm.cscript.cost_center = function(doc, cdt, cdn){
-	var d = locals[cdt][cdn];
-	if(d.cost_center){
-		var cl = getchildren('Sales Invoice Item', doc.name, cur_frm.cscript.fname, doc.doctype);
-		for(var i = 0; i < cl.length; i++){
-			if(!cl[i].cost_center) cl[i].cost_center = d.cost_center;
-		}
-	}
-	refresh_field(cur_frm.cscript.fname);
-}
-
 cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
 	if(cint(wn.boot.notification_settings.sales_invoice)) {
 		cur_frm.email_doc(wn.boot.notification_settings.sales_invoice_message);
diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
index 4695fdb..26ad629 100644
--- a/stock/doctype/stock_entry/stock_entry.js
+++ b/stock/doctype/stock_entry/stock_entry.js
@@ -1,6 +1,9 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.cscript.tname = "Stock Entry Detail";
+cur_frm.cscript.fname = "mtn_details";
+
 wn.require("public/app/js/controllers/stock_controller.js");
 wn.provide("erpnext.stock");
 
@@ -112,12 +115,6 @@
 		}
 	},
 	
-	entries_add: function(doc, cdt, cdn) {
-		var row = wn.model.get_doc(cdt, cdn);
-		this.frm.script_manager.copy_from_first_row("mtn_details", row, 
-			["expense_account", "cost_center"]);
-	},
-	
 	clean_up: function() {
 		// Clear Production Order record from locals, because it is updated via Stock Entry
 		if(this.frm.doc.production_order && 
@@ -224,6 +221,8 @@
 
 	mtn_details_add: function(doc, cdt, cdn) {
 		var row = wn.model.get_doc(cdt, cdn);
+		this.frm.script_manager.copy_from_first_row("mtn_details", row, 
+			["expense_account", "cost_center"]);
 		
 		if(!row.s_warehouse) row.s_warehouse = this.frm.doc.from_warehouse;
 		if(!row.t_warehouse) row.t_warehouse = this.frm.doc.to_warehouse;
@@ -260,24 +259,29 @@
 	}
 }
 
-cur_frm.cscript.delivery_note_no = function(doc,cdt,cdn){
-	if(doc.delivery_note_no) return get_server_fields('get_cust_values','','',doc,cdt,cdn,1);
+cur_frm.cscript.delivery_note_no = function(doc, cdt, cdn) {
+	if(doc.delivery_note_no)
+		return get_server_fields('get_cust_values', '', '', doc, cdt, cdn, 1);
 }
 
-cur_frm.cscript.sales_invoice_no = function(doc,cdt,cdn){
-	if(doc.sales_invoice_no) return get_server_fields('get_cust_values','','',doc,cdt,cdn,1);
+cur_frm.cscript.sales_invoice_no = function(doc, cdt, cdn) {
+	if(doc.sales_invoice_no) 
+		return get_server_fields('get_cust_values', '', '', doc, cdt, cdn, 1);
 }
 
-cur_frm.cscript.customer = function(doc,cdt,cdn){
-	if(doc.customer) return get_server_fields('get_cust_addr','','',doc,cdt,cdn,1);
+cur_frm.cscript.customer = function(doc, cdt, cdn) {
+	if(doc.customer) 
+		return get_server_fields('get_cust_addr', '', '', doc, cdt, cdn, 1);
 }
 
-cur_frm.cscript.purchase_receipt_no = function(doc,cdt,cdn){
-	if(doc.purchase_receipt_no)	return get_server_fields('get_supp_values','','',doc,cdt,cdn,1);
+cur_frm.cscript.purchase_receipt_no = function(doc, cdt, cdn) {
+	if(doc.purchase_receipt_no)	
+		return get_server_fields('get_supp_values', '', '', doc, cdt, cdn, 1);
 }
 
-cur_frm.cscript.supplier = function(doc,cdt,cdn){
-	if(doc.supplier) return get_server_fields('get_supp_addr','','',doc,cdt,cdn,1);
+cur_frm.cscript.supplier = function(doc, cdt, cdn) {
+	if(doc.supplier) 
+		return get_server_fields('get_supp_addr', '', '', doc, cdt, cdn, 1);
 
 }
 
@@ -314,13 +318,17 @@
 cur_frm.cscript.item_code = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	args = {
-		'item_code'		: d.item_code,
-		'warehouse'		: cstr(d.s_warehouse) || cstr(d.t_warehouse),
-		'transfer_qty'	: d.transfer_qty,
-		'serial_no'		: d.serial_no,
-		'bom_no'		: d.bom_no
+		'item_code'			: d.item_code,
+		'warehouse'			: cstr(d.s_warehouse) || cstr(d.t_warehouse),
+		'transfer_qty'		: d.transfer_qty,
+		'serial_no'			: d.serial_no,
+		'bom_no'			: d.bom_no,
+		'expense_account'	: d.expense_account,
+		'cost_center'		: d.cost_center,
+		'company'			: cur_frm.doc.company
 	};
-	return get_server_fields('get_item_details',JSON.stringify(args),'mtn_details',doc,cdt,cdn,1);
+	return get_server_fields('get_item_details', JSON.stringify(args), 
+		'mtn_details', doc, cdt, cdn, 1);
 }
 
 cur_frm.cscript.s_warehouse = function(doc, cdt, cdn) {
@@ -343,7 +351,8 @@
 	var d = locals[cdt][cdn];
 	if(d.uom && d.item_code){
 		var arg = {'item_code':d.item_code, 'uom':d.uom, 'qty':d.qty}
-		return get_server_fields('get_uom_details',JSON.stringify(arg),'mtn_details', doc, cdt, cdn, 1);
+		return get_server_fields('get_uom_details', JSON.stringify(arg), 
+			'mtn_details', doc, cdt, cdn, 1);
 	}
 }
 
@@ -354,15 +363,36 @@
 }
 
 cur_frm.cscript.validate_items = function(doc) {
-	cl =	getchildren('Stock Entry Detail',doc.name,'mtn_details');
+	cl = getchildren('Stock Entry Detail', doc.name, 'mtn_details');
 	if (!cl.length) {
 		alert("Item table can not be blank");
 		validated = false;
 	}
 }
 
-cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
-	return{ query:"controllers.queries.customer_query" } }
+cur_frm.cscript.expense_account = function(doc, cdt, cdn) {
+	cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "expense_account");
+}
 
-cur_frm.fields_dict.supplier.get_query = function(doc,cdt,cdn) {
-	return{	query:"controllers.queries.supplier_query" } }
+cur_frm.cscript.cost_center = function(doc, cdt, cdn) {
+	cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "cost_center");
+}
+
+cur_frm.cscript.copy_account_in_all_row = function(doc, cdt, cdn, fieldname) {
+	var d = locals[cdt][cdn];
+	if(d[fieldname]){
+		var cl = getchildren('Stock Entry Detail', doc.name, cur_frm.cscript.fname, doc.doctype);
+		for(var i = 0; i < cl.length; i++) {
+			if(!cl[i][fieldname]) cl[i][fieldname] = d[fieldname];
+		}
+	}
+	refresh_field(cur_frm.cscript.fname);
+}
+
+cur_frm.fields_dict.customer.get_query = function(doc, cdt, cdn) {
+	return{ query:"controllers.queries.customer_query" }
+}
+
+cur_frm.fields_dict.supplier.get_query = function(doc, cdt, cdn) {
+	return{	query:"controllers.queries.supplier_query" }
+}
\ No newline at end of file
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 7d8130c..7355846 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -369,7 +369,8 @@
 	def get_item_details(self, arg):
 		arg = json.loads(arg)
 
-		item = sql("""select stock_uom, description, item_name from `tabItem` 
+		item = sql("""select stock_uom, description, item_name, 
+			purchase_account, cost_center from `tabItem` 
 			where name = %s and (ifnull(end_of_life,'')='' or end_of_life ='0000-00-00' 
 			or end_of_life > now())""", (arg.get('item_code')), as_dict = 1)
 		if not item: 
@@ -380,6 +381,9 @@
 			'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]['purchase_account'] or arg["expense_account"] \
+				or webnotes.conn.get_value("Company", arg["company"], "default_expense_account"),
+			'cost_center'			: item and item[0]['cost_center'] or arg["cost_center"],
 			'qty'					: 0,
 			'transfer_qty'			: 0,
 			'conversion_factor'		: 1,