Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index 46e336f..e980f0a 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,34 +370,16 @@
 	}
 }
 
-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.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++){
-			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.cost_center = function(doc, cdt, cdn) {
+	cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "cost_center");
 }
 
 cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
diff --git a/docs/user/setup/docs.user.setup.price_list.md b/docs/user/setup/docs.user.setup.price_list.md
index 7214fff..a1fbf89 100644
--- a/docs/user/setup/docs.user.setup.price_list.md
+++ b/docs/user/setup/docs.user.setup.price_list.md
@@ -20,7 +20,7 @@
 
 > Setup > Item Price
 
-- Enter Price List and Item Code, Valid for Buying or Selling, Item Name & Item Description will be automatically fetched.
+- Enter Price List and Item Code, Valid for Buying or Selling, Item Name and Item Description will be automatically fetched.
 - Enter Rate and save the document.
 
 ![Item-Price](img/item-price.png)
diff --git a/public/js/controllers/stock_controller.js b/public/js/controllers/stock_controller.js
index e4b0319..de18fe0 100644
--- a/public/js/controllers/stock_controller.js
+++ b/public/js/controllers/stock_controller.js
@@ -18,6 +18,7 @@
 		}
 		
 	},
+
 	show_general_ledger: function() {
 		var me = this;
 		if(this.frm.doc.docstatus===1 && cint(wn.defaults.get_default("auto_accounting_for_stock"))) { 
@@ -30,5 +31,16 @@
 				wn.set_route("general-ledger");
 			});
 		}
+	},
+
+	copy_account_in_all_row: function(doc, dt, dn, fieldname) {
+		var d = locals[dt][dn];
+		if(d[fieldname]){
+			var cl = getchildren(this.frm.cscript.tname, doc.name, this.frm.cscript.fname, doc.doctype);
+			for(var i = 0; i < cl.length; i++) {
+				if(!cl[i][fieldname]) cl[i][fieldname] = d[fieldname];
+			}
+		}
+		refresh_field(this.frm.cscript.fname);
 	}
 });
\ No newline at end of file
diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
index 4695fdb..7301bd5 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,25 @@
 }
 
 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.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 c620bd9..e4fa9d9 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -368,8 +368,9 @@
 					
 	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.get("expense_account") \
+				or webnotes.conn.get_value("Company", arg.get("company"), "default_expense_account"),
+			'cost_center'			: item and item[0]['cost_center'] or arg.get("cost_center"),
 			'qty'					: 0,
 			'transfer_qty'			: 0,
 			'conversion_factor'		: 1,
diff --git a/stock/doctype/stock_entry_detail/stock_entry_detail.txt b/stock/doctype/stock_entry_detail/stock_entry_detail.txt
index b400cdd..b766250 100644
--- a/stock/doctype/stock_entry_detail/stock_entry_detail.txt
+++ b/stock/doctype/stock_entry_detail/stock_entry_detail.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-03-29 18:22:12", 
   "docstatus": 0, 
-  "modified": "2013-08-28 19:25:38", 
+  "modified": "2013-10-15 14:58:09", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -154,6 +154,7 @@
   "print_hide": 1
  }, 
  {
+  "default": ":Company", 
   "depends_on": "eval:sys_defaults.auto_accounting_for_stock", 
   "doctype": "DocField", 
   "fieldname": "cost_center",