[fix] fixed merge conflict
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index c65b9ac..8bd7e9d 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -353,6 +353,7 @@
 		# item gl entries
 		stock_item_and_auto_accounting_for_stock = False
 		stock_items = self.get_stock_items()
+		rounding_diff = 0.0
 		for item in self.doclist.get({"parentfield": "entries"}):
 			if auto_accounting_for_stock and item.item_code in stock_items:
 				if flt(item.valuation_rate):
@@ -361,9 +362,13 @@
 					# expense will be booked in sales invoice
 					stock_item_and_auto_accounting_for_stock = True
 					
-					valuation_amt = (flt(item.amount, self.precision("amount", item)) + 
+					valuation_amt = flt(flt(item.valuation_rate) * flt(item.qty) * \
+						flt(item.conversion_factor), self.precision("valuation_rate", item))
+					
+					rounding_diff += (flt(item.amount, self.precision("amount", item)) + 
 						flt(item.item_tax_amount, self.precision("item_tax_amount", item)) + 
-						flt(item.rm_supp_cost, self.precision("rm_supp_cost", item)))
+						flt(item.rm_supp_cost, self.precision("rm_supp_cost", item)) - 
+						valuation_amt)
 					
 					gl_entries.append(
 						self.get_gl_dict({
@@ -392,6 +397,12 @@
 			expenses_included_in_valuation = \
 				self.get_company_default("expenses_included_in_valuation")
 				
+			if rounding_diff:
+				import operator
+				cost_center_with_max_value = max(valuation_tax.iteritems(), 
+					key=operator.itemgetter(1))[0]
+				valuation_tax[cost_center_with_max_value] -= flt(rounding_diff)
+			
 			for cost_center, amount in valuation_tax.items():
 				gl_entries.append(
 					self.get_gl_dict({
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index aa4301c..6f35f92 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -18,21 +18,21 @@
 erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.extend({
 	onload: function() {
 		this._super();
-		
-		if(!this.frm.doc.__islocal) {
+
+		if(!this.frm.doc.__islocal && !this.frm.doc.customer && this.frm.doc.debit_to) {
 			// show debit_to in print format
-			if(!this.frm.doc.customer && this.frm.doc.debit_to) {
-				this.frm.set_df_property("debit_to", "print_hide", 0);
-			}
+			this.frm.set_df_property("debit_to", "print_hide", 0);
 		}
 		
 		// toggle to pos view if is_pos is 1 in user_defaults
-		if ((cint(wn.defaults.get_user_defaults("is_pos"))===1 || cur_frm.doc.is_pos) && 
-				cint(wn.defaults.get_user_defaults("fs_pos_view"))===1) {
-					if(this.frm.doc.__islocal && !this.frm.doc.amended_from) {
-						this.frm.set_value("is_pos", 1);
-						this.is_pos(function() {cur_frm.cscript.toggle_pos(true);});
-					}
+		if ((cint(wn.defaults.get_user_defaults("is_pos"))===1 || cur_frm.doc.is_pos)) {
+			if(this.frm.doc.__islocal && !this.frm.doc.amended_from && !this.frm.doc.customer) {
+				this.frm.set_value("is_pos", 1);
+				this.is_pos(function() {
+					if (cint(wn.defaults.get_user_defaults("fs_pos_view"))===1)
+						cur_frm.cscript.toggle_pos(true);
+				});
+			}
 		}
 		
 		// if document is POS then change default print format to "POS Invoice"
@@ -44,7 +44,7 @@
 	
 	refresh: function(doc, dt, dn) {
 		this._super();
-		
+
 		cur_frm.cscript.is_opening(doc, dt, dn);
 		cur_frm.dashboard.reset();
 
@@ -141,6 +141,10 @@
 					callback: function(r) {
 						if(!r.exc) {
 							me.frm.script_manager.trigger("update_stock");
+							me.set_default_values();
+							me.set_dynamic_labels();
+							me.calculate_taxes_and_totals();
+
 							if(callback_fn) callback_fn()
 						}
 					}
@@ -350,7 +354,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:[
@@ -371,34 +375,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/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 92c1680..b6548c0 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -52,7 +52,6 @@
 		sales_com_obj = get_obj('Sales Common')
 		sales_com_obj.check_stop_sales_order(self)
 		sales_com_obj.check_active_sales_items(self)
-		sales_com_obj.check_conversion_rate(self)
 		sales_com_obj.validate_max_discount(self, 'entries')
 		self.validate_customer_account()
 		self.validate_debit_acc()
diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py
index 5121d69..9b2e28b 100644
--- a/controllers/accounts_controller.py
+++ b/controllers/accounts_controller.py
@@ -52,7 +52,7 @@
 						msgprint(_("Account for this ") + fieldname + _(" has been freezed. ") + 
 							self.doc.doctype + _(" can not be made."), raise_exception=1)
 			
-	def set_price_list_currency(self, buying_or_selling, for_validate=False):
+	def set_price_list_currency(self, buying_or_selling):
 		if self.meta.get_field("currency"):
 			company_currency = get_company_currency(self.doc.company)
 			
@@ -66,7 +66,7 @@
 				if self.doc.price_list_currency == company_currency:
 					self.doc.plc_conversion_rate = 1.0
 
-				elif not self.doc.plc_conversion_rate or not for_validate:
+				elif not self.doc.plc_conversion_rate:
 					self.doc.plc_conversion_rate = self.get_exchange_rate(
 						self.doc.price_list_currency, company_currency)
 			
@@ -76,7 +76,7 @@
 				self.doc.conversion_rate = self.doc.plc_conversion_rate
 			elif self.doc.currency == company_currency:
 				self.doc.conversion_rate = 1.0
-			elif not self.doc.conversion_rate or not for_validate:
+			elif not self.doc.conversion_rate:
 				self.doc.conversion_rate = self.get_exchange_rate(self.doc.currency,
 					company_currency)
 
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index 5176b16..c42eda5 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -29,7 +29,7 @@
 		super(BuyingController, self).set_missing_values(for_validate)
 
 		self.set_supplier_from_item_default()
-		self.set_price_list_currency("Buying", for_validate)
+		self.set_price_list_currency("Buying")
 		
 		# set contact and address details for supplier, if they are not mentioned
 		if self.doc.supplier and not (self.doc.contact_person and self.doc.supplier_address):
diff --git a/controllers/selling_controller.py b/controllers/selling_controller.py
index 5c7b66c..d78cf93 100644
--- a/controllers/selling_controller.py
+++ b/controllers/selling_controller.py
@@ -23,7 +23,7 @@
 		
 		# set contact and address details for customer, if they are not mentioned
 		self.set_missing_lead_customer_details()
-		self.set_price_list_and_item_details(for_validate)
+		self.set_price_list_and_item_details()
 		if self.doc.fields.get("__islocal"):
 			self.set_taxes("other_charges", "charge")
 					
@@ -41,8 +41,8 @@
 					if not self.doc.fields.get(fieldname) and self.meta.get_field(fieldname):
 						self.doc.fields[fieldname] = val
 						
-	def set_price_list_and_item_details(self, for_validate=False):
-		self.set_price_list_currency("Selling", for_validate)
+	def set_price_list_and_item_details(self):
+		self.set_price_list_currency("Selling")
 		self.set_missing_item_details(get_item_details)
 										
 	def get_other_charges(self):
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/docs/user/stock/docs.user.stock.item.md b/docs/user/stock/docs.user.stock.item.md
index f7746c4..fdf3045 100644
--- a/docs/user/stock/docs.user.stock.item.md
+++ b/docs/user/stock/docs.user.stock.item.md
@@ -38,11 +38,11 @@
 
 ### Serialized and Batched Inventory
 
-These numbers help to track individual units or batches of Items which you sell. It also tracks warranty and returns. In case any individual Item is recalled by the supplier the number system helps to track individual Item. The numbering system  also manages expiry dates. Please note that if you sell your items in thousands, and if the items are very small like pens or erasers, you need not serialize them. In ERPNext, you will have to mention the serial number in some accounting entries. To create serial numbers you will have to manually create all the numbers in your entries. If your product is not a big consumer durable Item, if it has no warranty and has no chances of being  recalled, avoid giving serial numbers. 
+These numbers help to track individual units or batches of Items which you sell. It also tracks warranty and returns. In case any individual Item is recalled by the supplier the number system helps to track individual Item. The numbering system  also manages expiry dates. Please note that if you sell your items in thousands, and if the items are very small like pens or erasers, you need not serialize them. In ERPNext, you will have to mention the serial number in some accounting entries. To create serial numbers you will have to manually create all the numbers in your entries. If your product is not a big consumer durable Item, if it has no warranty and has no chances of being recalled, avoid giving serial numbers. 
 
 > Important: Once you mark an item as serialized or batched or neither, you cannot change it after you have made any stock entry.
 
-- [Disucssion on Serialized Inventory](docs.user.stock.serialized.html)
+- [Discussion on Serialized Inventory](docs.user.stock.serialized.html)
 
 ### Re Ordering
 
diff --git a/install_erpnext.py b/install_erpnext.py
index 79f79d7..7f3b8c3 100644
--- a/install_erpnext.py
+++ b/install_erpnext.py
@@ -332,9 +332,11 @@
 
 			stdout.seek(0)
 			out = stdout.read()
+			if out: out = out.decode('utf-8')
 
 			stderr.seek(0)
 			err = stderr.read()
+			if err: err = err.decode('utf-8')
 
 	if err and any((kw in err.lower() for kw in ["traceback", "error", "exception"])):
 		print out
@@ -345,4 +347,4 @@
 	return out
 
 if __name__ == "__main__":
-	install()
\ No newline at end of file
+	install()
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/public/js/transaction.js b/public/js/transaction.js
index 79ea536..2886e1c 100644
--- a/public/js/transaction.js
+++ b/public/js/transaction.js
@@ -24,11 +24,9 @@
 			}, function(fieldname, value) {
 				if(me.frm.fields_dict[fieldname] && !me.frm.doc[fieldname])
 					me.frm.set_value(fieldname, value);
-			});
-			
-			me.frm.script_manager.trigger("company");
+			});			
 		}
-		
+
 		if(this.other_fname) {
 			this[this.other_fname + "_remove"] = this.calculate_taxes_and_totals;
 		}
@@ -39,9 +37,9 @@
 	},
 	
 	onload_post_render: function() {
-		if(this.frm.doc.__islocal && this.frm.doc.company && 
-			!this.frm.doc.customer && !this.frm.doc.is_pos) {
-				var me = this;
+		var me = this;
+		if(this.frm.doc.__islocal && this.frm.doc.company && !this.frm.doc.is_pos) {
+			if(!this.frm.doc.customer || !this.frm.doc.supplier) {
 				return this.frm.call({
 					doc: this.frm.doc,
 					method: "onload_post_render",
@@ -50,8 +48,12 @@
 						// remove this call when using client side mapper
 						me.set_default_values();
 						me.set_dynamic_labels();
+						me.calculate_taxes_and_totals();
 					}
 				});
+			} else {
+				this.calculate_taxes_and_totals();
+			}
 		}
 	},
 	
@@ -169,12 +171,12 @@
 	conversion_rate: function() {
 		if(this.frm.doc.currency === this.get_company_currency()) {
 			this.frm.set_value("conversion_rate", 1.0);
-		} else if(this.frm.doc.currency === this.frm.doc.price_list_currency &&
+		}
+		if(this.frm.doc.currency === this.frm.doc.price_list_currency &&
 			this.frm.doc.plc_conversion_rate !== this.frm.doc.conversion_rate) {
 				this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate);
 		}
-
-		this.calculate_taxes_and_totals();
+		if(flt(this.frm.doc.conversion_rate)>0.0) this.calculate_taxes_and_totals();
 	},
 	
 	get_price_list_currency: function(buying_or_selling) {
@@ -224,7 +226,8 @@
 	plc_conversion_rate: function() {
 		if(this.frm.doc.price_list_currency === this.get_company_currency()) {
 			this.frm.set_value("plc_conversion_rate", 1.0);
-		} else if(this.frm.doc.price_list_currency === this.frm.doc.currency) {
+		}
+		if(this.frm.doc.price_list_currency === this.frm.doc.currency) {
 			this.frm.set_value("conversion_rate", this.frm.doc.plc_conversion_rate);
 			this.calculate_taxes_and_totals();
 		}
diff --git a/selling/doctype/quotation/quotation.py b/selling/doctype/quotation/quotation.py
index 78afb97..bd158d5 100644
--- a/selling/doctype/quotation/quotation.py
+++ b/selling/doctype/quotation/quotation.py
@@ -102,8 +102,7 @@
 		sales_com_obj = get_obj('Sales Common')
 		sales_com_obj.check_active_sales_items(self)
 		sales_com_obj.validate_max_discount(self,'quotation_details')
-		sales_com_obj.check_conversion_rate(self)
-			
+
 	#update enquiry
 	#------------------
 	def update_opportunity(self):
diff --git a/selling/doctype/sales_common/sales_common.py b/selling/doctype/sales_common/sales_common.py
index 01718dd..e1172eb 100644
--- a/selling/doctype/sales_common/sales_common.py
+++ b/selling/doctype/sales_common/sales_common.py
@@ -9,7 +9,6 @@
 from webnotes.model.bean import getlist
 from webnotes.model.code import get_obj
 from webnotes import msgprint, _
-from setup.utils import get_company_currency
 
 get_value = webnotes.conn.get_value
 
@@ -73,19 +72,6 @@
 			if discount and discount[0]['max_discount'] and (flt(d.adj_rate)>flt(discount[0]['max_discount'])):
 				msgprint("You cannot give more than " + cstr(discount[0]['max_discount']) + " % discount on Item Code : "+cstr(d.item_code))
 				raise Exception
-			
-	# Check Conversion Rate (i.e. it will not allow conversion rate to be 1 for Currency other than default currency set in Global Defaults)
-	# ===========================================================================
-	def check_conversion_rate(self, obj):
-		default_currency = get_company_currency(obj.doc.company)
-		if not default_currency:
-			msgprint('Message: Please enter default currency in Company Master')
-			raise Exception		
-		if (obj.doc.currency == default_currency and flt(obj.doc.conversion_rate) != 1.00) or not obj.doc.conversion_rate or (obj.doc.currency != default_currency and flt(obj.doc.conversion_rate) == 1.00):
-			msgprint("Please Enter Appropriate Conversion Rate for Customer's Currency to Base Currency (%s --> %s)" % (obj.doc.currency, default_currency), raise_exception = 1)
-	
-		if (obj.doc.price_list_currency == default_currency and flt(obj.doc.plc_conversion_rate) != 1.00) or not obj.doc.plc_conversion_rate or (obj.doc.price_list_currency != default_currency and flt(obj.doc.plc_conversion_rate) == 1.00):
-			msgprint("Please Enter Appropriate Conversion Rate for Price List Currency to Base Currency (%s --> %s)" % (obj.doc.price_list_currency, default_currency), raise_exception = 1)
 
 	def get_item_list(self, obj, is_stopped=0):
 		"""get item list"""
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index 1c22c08..6dfa3e2 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -126,7 +126,7 @@
 		self.validate_warehouse()
 		sales_com_obj = get_obj(dt = 'Sales Common')
 		sales_com_obj.check_active_sales_items(self)
-		sales_com_obj.check_conversion_rate(self)
+		
 
 		sales_com_obj.validate_max_discount(self,'sales_order_details')
 		self.doclist = sales_com_obj.make_packing_list(self,'sales_order_details')
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index deaf024..897c7d4 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -91,7 +91,7 @@
 		self.validate_uom_is_integer("stock_uom", "qty")
 		
 		sales_com_obj.validate_max_discount(self, 'delivery_note_details')
-		sales_com_obj.check_conversion_rate(self)
+		
 
 		# Set actual qty for each item in selected warehouse
 		self.update_current_stock()
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 217a0aa..0e05a88 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -367,7 +367,8 @@
 	def get_item_details(self, arg):
 		arg = json.loads(arg)
 
-		item = webnotes.conn.sql("""select stock_uom, description, item_name from `tabItem` 
+		item = webnotes.conn.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: 
@@ -378,6 +379,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",