diff --git a/selling/doctype/sales_common/sales_common.js b/selling/doctype/sales_common/sales_common.js
index 4807dc1..c5eed98 100644
--- a/selling/doctype/sales_common/sales_common.js
+++ b/selling/doctype/sales_common/sales_common.js
@@ -304,6 +304,29 @@
 	get_server_fields('get_barcode_details', d.barcode, cur_frm.cscript.fname, doc, cdt, cdn, 1, callback);
 }
 
+cur_frm.fields_dict[cur_frm.cscript.fname].grid.get_field('batch_no').get_query = 
+	function(doc, cdt, cdn) {
+		var d = locals[cdt][cdn];
+		if(d.item_code) {
+			if (d.warehouse) {
+				return "select batch_no from `tabStock Ledger Entry` sle \
+					where item_code = '" + d.item_code + "' and warehouse = '" + d.warehouse +
+					"' and ifnull(is_cancelled, 'No') = 'No' and batch_no like '%s' \
+					and exists(select * from `tabBatch` where \
+					name = sle.batch_no and expiry_date >= '" + doc.posting_date + 
+					"' and docstatus != 2) group by batch_no having sum(actual_qty) > 0 \
+					order by batch_no desc limit 50";
+			} else {
+				return "SELECT name FROM tabBatch WHERE docstatus != 2 AND item = '" + 
+					d.item_code + "' and expiry_date >= '" + doc.posting_date + 
+					"' AND name like '%s' ORDER BY name DESC LIMIT 50";
+			}		
+		} else {
+			msgprint("Please enter Item Code to get batch no");
+		}
+	}
+
+
 
 // *********************** QUANTITY ***************************
 cur_frm.cscript.qty = function(doc, cdt, cdn) { cur_frm.cscript.recalc(doc, 1); }
diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js
index 6295811..10739d2 100644
--- a/stock/doctype/delivery_note/delivery_note.js
+++ b/stock/doctype/delivery_note/delivery_note.js
@@ -134,16 +134,6 @@
 	loaddoc('Contact', tn);
 }
 
-//========================= Overloaded query for link batch_no =============================================================
-cur_frm.fields_dict['delivery_note_details'].grid.get_field('batch_no').get_query= function(doc, cdt, cdn) {
-	var d = locals[cdt][cdn];
-	if(d.item_code){
-		return "SELECT tabBatch.name, tabBatch.description FROM tabBatch WHERE tabBatch.docstatus != 2 AND tabBatch.item = '"+ d.item_code +"' AND `tabBatch`.`name` like '%s' ORDER BY `tabBatch`.`name` DESC LIMIT 50"
-	}
-	else{
-		alert("Please enter Item Code.");
-	}
-}
 
 // ***************** Get project name *****************
 cur_frm.fields_dict['project_name'].get_query = function(doc, cdt, cdn) {
diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
index bf75826..5805b2a 100644
--- a/stock/doctype/stock_entry/stock_entry.js
+++ b/stock/doctype/stock_entry/stock_entry.js
@@ -8,68 +8,77 @@
 // 
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 // GNU General Public License for more details.
 // 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
-  if (!doc.posting_date) doc.posting_date = dateutil.obj_to_str(new Date());
-  if (!doc.transfer_date) doc.transfer_date = dateutil.obj_to_str(new Date());
-  if(!doc.purpose) set_multiple(cdt, cdn, {purpose:'Material Issue'});
-  cfn_set_fields(doc, cdt, cdn);
+	if (!doc.posting_date) doc.posting_date = dateutil.obj_to_str(new Date());
+	if (!doc.transfer_date) doc.transfer_date = dateutil.obj_to_str(new Date());
+	if(!doc.purpose) set_multiple(cdt, cdn, {purpose:'Material Issue'});
+	cfn_set_fields(doc, cdt, cdn);
 }
 
 
 var cfn_set_fields = function(doc, cdt, cdn) {
-  lst = ['supplier','supplier_name','supplier_address','customer','customer_name','customer_address'];
-  if (in_list(['Material Issue', 'Material Transfer', 'Material Receipt', 'Sales Return', 'Purchase Return', 'Production Order', 'Subcontracting', 'Other'], doc.purpose)) {
-    hide_field(lst);
-	$(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false);
-  } else unhide_field(lst);
+	lst = ['supplier', 'supplier_name', 'supplier_address', 
+		'customer', 'customer_name', 'customer_address'];
+	if (in_list(['Material Issue', 'Material Transfer', 'Material Receipt', 'Sales Return',
+	 	'Purchase Return', 'Production Order', 'Subcontracting', 'Other'], doc.purpose)) {
+		hide_field(lst);
+		$(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false);
+	} else unhide_field(lst);
 
+	if (doc.purpose == 'Production Order' || doc.purpose == 'Other') {
+		unhide_field('get_items');
+		hide_field(['from_warehouse', 'to_warehouse','purchase_receipt_no', 
+			'delivery_note_no', 'sales_invoice_no','warehouse_html', 
+			'transporter', 'is_excisable_goods', 'excisable_goods']);
+		if (doc.purpose=='Production Order') unhide_field(['production_order', 'process']);
+		else {
+			doc.production_order = doc.process = '';
+			hide_field(['production_order', 'process']);
+		}
 
-  if (doc.purpose == 'Production Order' || doc.purpose == 'Other'){
-    unhide_field('get_items');
-    hide_field(['from_warehouse', 'to_warehouse','purchase_receipt_no','delivery_note_no', 'sales_invoice_no','warehouse_html', 'transporter', 'is_excisable_goods', 'excisable_goods']);
-	if (doc.purpose=='Production Order') unhide_field(['production_order', 'process']);
-	else hide_field(['production_order', 'process']);
-
-	doc.from_warehouse = '';
-    doc.to_warehouse = '';
-	refresh_field(['from_warehosue', 'to_warehouse']);
-    if (doc.process == 'Backflush' || doc.purpose == 'Other'){
-      unhide_field('fg_completed_qty');
-    }
-    else{
-      hide_field('fg_completed_qty');
-      doc.fg_completed_qty = 0;
-    }
-  }
-  else{
-    unhide_field(['from_warehouse', 'to_warehouse']);
-    hide_field(['production_order', 'process', 'get_items', 'fg_completed_qty','purchase_receipt_no','delivery_note_no', 'sales_invoice_no']);
-    doc.production_order = '';
-    doc.process = '';
-    doc.fg_completed_qty = 0;
-  }
-  
+		doc.from_warehouse = '';
+		doc.to_warehouse = '';
+		refresh_field(['from_warehosue', 'to_warehouse']);
+		if (doc.process == 'Backflush' || doc.purpose == 'Other') {
+			unhide_field('fg_completed_qty');
+		}
+		else{
+			hide_field('fg_completed_qty');
+			doc.fg_completed_qty = 0;
+		}
+	} else {
+		unhide_field(['from_warehouse', 'to_warehouse']);
+		hide_field(['production_order', 'process', 'get_items',	'fg_completed_qty', 
+			'purchase_receipt_no','delivery_note_no', 'sales_invoice_no']);
+		doc.production_order = '';
+		doc.process = '';
+		doc.fg_completed_qty = 0;
+	}
+	
  
-  if(doc.purpose == 'Purchase Return'){
-    doc.customer=doc.customer_name = doc.customer_address=doc.delivery_note_no=doc.sales_invoice_no='';
-    unhide_field(['supplier','supplier_name','supplier_address','purchase_receipt_no']);
-	$(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
-  }
-  else if(doc.purpose == 'Sales Return'){
-    doc.supplier=doc.supplier_name = doc.supplier_address=doc.purchase_receipt_no='';
-    unhide_field(['customer','customer_name','customer_address','delivery_note_no', 'sales_invoice_no']);
-	$(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
-  } else{
-    doc.customer=doc.customer_name=doc.customer_address=doc.delivery_note_no=doc.sales_invoice_no='';
-	doc.supplier=doc.supplier_name = doc.supplier_address=doc.purchase_receipt_no='';
-  }
-  refresh_many(lst);
+	if(doc.purpose == 'Purchase Return') {
+		doc.customer = doc.customer_name = doc.customer_address = 
+			doc.delivery_note_no = doc.sales_invoice_no = '';
+		unhide_field(['supplier','supplier_name','supplier_address','purchase_receipt_no']);
+		$(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
+	}
+	else if(doc.purpose == 'Sales Return'){
+		doc.supplier=doc.supplier_name = doc.supplier_address=doc.purchase_receipt_no='';
+		unhide_field(['customer', 'customer_name', 'customer_address', 
+			'delivery_note_no', 'sales_invoice_no']);
+		$(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
+	} else{
+		doc.customer = doc.customer_name = doc.customer_address = 
+			doc.delivery_note_no = doc.sales_invoice_no = doc.supplier = 
+			doc.supplier_name = doc.supplier_address = doc.purchase_receipt_no = '';
+	}
+	refresh_many(lst);
 }
 
 //Refresh
@@ -77,47 +86,44 @@
 	erpnext.hide_naming_series();
 
 	//India related
-	excise_flds = ['is_excisable_goods', 'excisable_goods', 'under_rule']
+	excise_flds = ['is_excisable_goods', 'excisable_goods', 'under_rule'];
 	if(wn.control_panel.country == 'India') unhide_field(excise_flds);
 	else hide_field(excise_flds);
 }
 
-
 cur_frm.cscript.delivery_note_no = function(doc,cdt,cdn){
-  if(doc.delivery_note_no) get_server_fields('get_cust_values','','',doc,cdt,cdn,1);
+	if(doc.delivery_note_no) 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) get_server_fields('get_cust_values','','',doc,cdt,cdn,1);
+	if(doc.sales_invoice_no) get_server_fields('get_cust_values','','',doc,cdt,cdn,1);
 }
 
 cur_frm.cscript.customer = function(doc,cdt,cdn){
-  if(doc.customer)  get_server_fields('get_cust_addr','','',doc,cdt,cdn,1);
+	if(doc.customer)	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)  get_server_fields('get_supp_values','','',doc,cdt,cdn,1);
+	if(doc.purchase_receipt_no)	get_server_fields('get_supp_values','','',doc,cdt,cdn,1);
 }
 
 cur_frm.cscript.supplier = function(doc,cdt,cdn){
-  if(doc.supplier)  get_server_fields('get_supp_addr','','',doc,cdt,cdn,1);
+	if(doc.supplier)	get_server_fields('get_supp_addr','','',doc,cdt,cdn,1);
 
 }
 
 cur_frm.fields_dict['production_order'].get_query = function(doc) {
-   return 'SELECT DISTINCT `tabProduction Order`.`name` FROM `tabProduction Order` WHERE `tabProduction Order`.`docstatus` = 1 AND `tabProduction Order`.`qty` > ifnull(`tabProduction Order`.`produced_qty`,0) AND `tabProduction Order`.`name` like "%s" ORDER BY `tabProduction Order`.`name` DESC LIMIT 50';
+	 return 'SELECT DISTINCT `tabProduction Order`.`name` FROM `tabProduction Order` WHERE `tabProduction Order`.`docstatus` = 1 AND `tabProduction Order`.`qty` > ifnull(`tabProduction Order`.`produced_qty`,0) AND `tabProduction Order`.`name` like "%s" ORDER BY `tabProduction Order`.`name` DESC LIMIT 50';
 }
 
 cur_frm.cscript.purpose = function(doc, cdt, cdn) {
-  cfn_set_fields(doc, cdt, cdn);
+	cfn_set_fields(doc, cdt, cdn);
 }
 
-
 cur_frm.cscript.process = function(doc, cdt, cdn) {
-  cfn_set_fields(doc, cdt, cdn);
+	cfn_set_fields(doc, cdt, cdn);
 }
 
-//
 // item code - only if quantity present in source warehosue
 //
 var fld = cur_frm.fields_dict['mtn_details'].grid.get_field('item_code');
@@ -147,9 +153,7 @@
 	}
 }
 
-//
 // copy over source and target warehouses
-//
 cur_frm.fields_dict['mtn_details'].grid.onrowadd = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
 	if(!d.s_warehouse && doc.from_warehouse) {
@@ -162,73 +166,88 @@
 	}
 }
 
-//========================= Overloaded query for link batch_no =============================================================
-cur_frm.fields_dict['mtn_details'].grid.get_field('batch_no').get_query= function(doc, cdt, cdn) {
-  var d = locals[cdt][cdn];
-  if(d.item_code){
-    return "SELECT tabBatch.name, tabBatch.description FROM tabBatch WHERE tabBatch.docstatus != 2 AND tabBatch.item = '"+ d.item_code +"' AND `tabBatch`.`name` like '%s' ORDER BY `tabBatch`.`name` DESC LIMIT 50"
-  }
-  else{
-    alert("Please enter Item Code.");
-  }
+// Overloaded query for link batch_no
+cur_frm.fields_dict['mtn_details'].grid.get_field('batch_no').get_query = function(doc, cdt, cdn) {
+	var d = locals[cdt][cdn];		
+	if(d.item_code) {
+		if (d.s_warehouse) {
+			return "select batch_no from `tabStock Ledger Entry` sle \
+				where item_code = '" + d.item_code + "' and warehouse = '" + d.s_warehouse +
+				"' and ifnull(is_cancelled, 'No') = 'No' and batch_no like '%s' \
+				and exists(select * from `tabBatch` where \
+				name = sle.batch_no and expiry_date >= '" + doc.posting_date + 
+				"' and docstatus != 2) group by batch_no having sum(actual_qty) > 0 \
+				order by batch_no desc limit 50";
+		} else {
+			return "SELECT name FROM tabBatch WHERE docstatus != 2 AND item = '" + 
+				d.item_code + "' and expiry_date >= '" + doc.posting_date + 
+				"' AND name like '%s' ORDER BY name DESC LIMIT 50";
+		}		
+	} else {
+		msgprint("Please enter Item Code to get batch no");
+	}
 }
 
-//==================================================================================================================
-
 cur_frm.cscript.item_code = function(doc, cdt, cdn) {
-  var d = locals[cdt][cdn];
-  // get values
-  args = {
-  	'item_code'		: d.item_code,
-  	'warehouse'		: cstr(d.s_warehouse),
-  	'transfer_qty'	: d.transfer_qty,
-  	'serial_no'		: d.serial_no
-  };
-  get_server_fields('get_item_details',JSON.stringify(args),'mtn_details',doc,cdt,cdn,1);
+	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,
+		'fg_item'		: d.fg_item,
+		'bom_no'		: d.bom_no
+	};
+	get_server_fields('get_item_details',JSON.stringify(args),'mtn_details',doc,cdt,cdn,1);
 }
 
-//==================================================================================================================
+cur_frm.cscript.s_warehouse = 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,
+		'fg_item'		: d.fg_item,
+		'bom_no'		: d.bom_no
+	}
+	get_server_fields('get_warehouse_details', JSON.stringify(args), 
+		'mtn_details', doc, cdt, cdn, 1);
+}
+
+cur_frm.cscript.t_warehouse = cur_frm.cscript.s_warehouse;
 
 cur_frm.cscript.transfer_qty = function(doc,cdt,cdn) {
-  var d = locals[cdt][cdn];
-  if (doc.from_warehouse && (flt(d.transfer_qty) > flt(d.actual_qty))) {
-    alert("Transfer Quantity is more than Available Qty");
-  }
+	var d = locals[cdt][cdn];
+	if (doc.from_warehouse && (flt(d.transfer_qty) > flt(d.actual_qty))) {
+		alert("Transfer Quantity is more than Available Qty");
+	}
 }
 
-
-//==================================================================================================================
-
 cur_frm.cscript.qty = function(doc, cdt, cdn) {
-  var d = locals[cdt][cdn];
-  set_multiple('Stock Entry Detail', d.name, {'transfer_qty': flt(d.qty) * flt(d.conversion_factor)}, 'mtn_details');
-  refresh_field('mtn_details');
+	var d = locals[cdt][cdn];
+	set_multiple('Stock Entry Detail', d.name, {'transfer_qty': flt(d.qty) * flt(d.conversion_factor)}, 'mtn_details');
+	refresh_field('mtn_details');
 }
 
-//==================================================================================================================
-
 cur_frm.cscript.uom = function(doc, cdt, cdn) {
-  var d = locals[cdt][cdn];
-  if(d.uom && d.item_code){
-    var arg = {'item_code':d.item_code, 'uom':d.uom, 'qty':d.qty}
-    get_server_fields('get_uom_details',JSON.stringify(arg),'mtn_details', doc, cdt, cdn, 1);
-  }
+	var d = locals[cdt][cdn];
+	if(d.uom && d.item_code){
+		var arg = {'item_code':d.item_code, 'uom':d.uom, 'qty':d.qty}
+		get_server_fields('get_uom_details',JSON.stringify(arg),'mtn_details', doc, cdt, cdn, 1);
+	}
 }
 
-//==================================================================================================================
-//validate
 cur_frm.cscript.validate = function(doc, cdt, cdn) {
-  cur_frm.cscript.validate_items(doc);
+	cur_frm.cscript.validate_items(doc);
 }
 
-//==================================================================================================================
-//validate items
 cur_frm.cscript.validate_items = function(doc) {
-  cl =  getchildren('Stock Entry Detail',doc.name,'mtn_details');
-  if (!cl.length) {
-    alert("Item table can not be blank");
-    validated = false;
-  }
+	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 = erpnext.utils.customer_query;
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 29f58bc..67f1643 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -35,8 +35,6 @@
 		self.item_dict = {}
 		self.fname = 'mtn_details' 
   
-	# get item details
-	# ----------------
 	def get_item_details(self, arg):
 		import json
 		arg, actual_qty, in_rate = json.loads(arg), 0, 0
@@ -44,28 +42,24 @@
 		item = sql("select stock_uom, description, item_name 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: 
 			msgprint("Item is not active", raise_exception=1)
-			
-		if arg.get('warehouse'):
-			actual_qty = self.get_as_on_stock(arg.get('item_code'), arg.get('warehouse'), self.doc.posting_date, self.doc.posting_time)
-			in_rate = self.get_incoming_rate(arg.get('item_code'), arg.get('warehouse'), self.doc.posting_date, self.doc.posting_time, arg.get('transfer_qty'), arg.get('serial_no')) or 0
-			
+						
 		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 '',
-			'actual_qty'		  	: actual_qty,
 			'qty'					: 0,
 			'transfer_qty'			: 0,
-			'incoming_rate'	  		: in_rate,
 			'conversion_factor'		: 1,
-     		'batch_no'          	: ''
+     		'batch_no'          	: '',
+			'actual_qty'			: 0,
+			'incoming_rate'			: 0
 		}
+		stock_and_rate = arg.get('warehouse') and self.get_warehouse_details(json.dumps(arg)) or {}
+		ret.update(stock_and_rate)
 		return ret
 
 
-	# Get UOM Details
-	# ----------------
 	def get_uom_details(self, arg = ''):
 		arg, ret = eval(arg), {}
 		uom = sql("select conversion_factor from `tabUOM Conversion Detail` where parent = %s and uom = %s", (arg['item_code'],arg['uom']), as_dict = 1)
@@ -78,28 +72,44 @@
 				'transfer_qty'			: flt(arg['qty']) * flt(uom[0]['conversion_factor']),
 			}
 		return ret
-
 		
-
-	# get stock and incoming rate on posting date
-	# ---------------------------------------------
+	def get_warehouse_details(self, arg):
+		import json
+		arg, actual_qty, in_rate = json.loads(arg), 0, 0
+		ret = {
+			"actual_qty" : self.get_as_on_stock(arg.get('item_code'), arg.get('warehouse'),
+			 	self.doc.posting_date, self.doc.posting_time),
+			"incoming_rate" : 	self.get_incoming_rate(arg.get('item_code'), 
+			 	arg.get('warehouse'), self.doc.posting_date, self.doc.posting_time, 
+			 	arg.get('transfer_qty'), arg.get('serial_no'), arg.get('fg_item'),
+			 	arg.get('bom_no')) or 0
+		}
+		return ret
+			
+	
 	def get_stock_and_rate(self, bom_no = ''):
+		""" get stock and incoming rate on posting date"""
 		for d in getlist(self.doclist, 'mtn_details'):
 			# assign parent warehouse
-			d.s_warehouse = cstr(d.s_warehouse) or self.doc.purpose != 'Production Order' and self.doc.from_warehouse or ''
-			d.t_warehouse = cstr(d.t_warehouse) or self.doc.purpose != 'Production Order' and self.doc.to_warehouse or ''
+			d.s_warehouse = cstr(d.s_warehouse) or self.doc.purpose != 'Production Order' \
+				and self.doc.from_warehouse or ''
+			d.t_warehouse = cstr(d.t_warehouse) or self.doc.purpose != 'Production Order' \
+				and self.doc.to_warehouse or ''
 			
 			# get current stock at source warehouse
-			d.actual_qty = d.s_warehouse and self.get_as_on_stock(d.item_code, d.s_warehouse, self.doc.posting_date, self.doc.posting_time) or 0
+			d.actual_qty = self.get_as_on_stock(d.item_code, d.s_warehouse or d.t_warehouse, 
+				self.doc.posting_date, self.doc.posting_time) or 0
 
 			# get incoming rate
 			if not flt(d.incoming_rate):
-				d.incoming_rate = self.get_incoming_rate(d.item_code, d.s_warehouse, self.doc.posting_date, self.doc.posting_time, d.transfer_qty, d.serial_no, d.fg_item, d.bom_no or bom_no)
+				d.incoming_rate = self.get_incoming_rate(d.item_code, 
+					d.s_warehouse or d.t_warehouse, self.doc.posting_date, 
+					self.doc.posting_time, d.transfer_qty, d.serial_no, 
+					d.fg_item, d.bom_no or bom_no)
 
 
-	# Get stock qty on any date
-	# ---------------------------
 	def get_as_on_stock(self, item, wh, dt, tm):
+		"""Get stock qty on any date"""
 		bin = sql("select name from tabBin where item_code = %s and warehouse = %s", (item, wh))
 		bin_id = bin and bin[0][0] or ''
 		prev_sle = bin_id and get_obj('Bin', bin_id).get_prev_sle(dt, tm) or {}		
@@ -107,17 +117,15 @@
 		return qty
 
 
-	# Get incoming rate
-	# -------------------
-	def get_incoming_rate(self, item, wh, dt, tm, qty = 0, serial_no = '', fg_item = 0, bom_no = ''):
+	def get_incoming_rate(self, item, wh, dt, tm, qty=0, serial_no='', fg_item=0, bom_no=''):
 		in_rate = 0
 		if fg_item and bom_no:
-			# re-calculate cost for production item from bom
-			get_obj('BOM Control').calculate_cost(bom_no)
-			bom_obj = get_obj('BOM', bom_no)
-			in_rate = flt(bom_obj.doc.total_cost) / (flt(bom_obj.doc.quantity) or 1)
+			in_rate = webnotes.conn.sql("""select ifnull(total_cost, 0) / ifnull(quantity, 1) 
+				from `tabBOM` where name = %s and docstatus=1""", bom_no, debug=1)
+			in_rate = in_rate and in_rate[0][0] or 0
 		elif wh:
-			in_rate = get_obj('Valuation Control').get_incoming_rate(dt, tm, item, wh, qty, serial_no)
+			in_rate = get_obj('Valuation Control').get_incoming_rate(dt, tm, 
+				item, wh, qty, serial_no)
 		
 		return in_rate
 
@@ -205,6 +213,10 @@
 
 	def validate_bom_no(self):
 		if self.doc.bom_no:
+			if not webnotes.conn.sql("""select name from tabBOM where name = %s and docstatus = 1
+			 		and ifnull(is_active, 'No') = 'Yes'""", self.doc.bom_no):
+				msgprint("""BOM: %s not found, may be it has been cancelled or inactivated""" %
+					self.doc.bom_no, raise_exception=1)
 			if not self.doc.fg_completed_qty:
 				msgprint("Please enter FG Completed Qty", raise_exception=1)
 
@@ -215,7 +227,8 @@
 			self.validate_for_production_order(pro_obj)
 
 			bom_no = pro_obj.doc.bom_no
-			fg_qty = (self.doc.process == 'Backflush') and flt(self.doc.fg_completed_qty) or flt(pro_obj.doc.qty)
+			fg_qty = (self.doc.process == 'Backflush') and flt(self.doc.fg_completed_qty) \
+				or flt(pro_obj.doc.qty)
 			use_multi_level_bom = pro_obj.doc.use_multi_level_bom
 		elif self.doc.purpose == 'Other':
 			self.validate_bom_no()
@@ -234,22 +247,30 @@
 		if self.doc.process == 'Backflush':
 			sw = ''
 			tw = cstr(pro_obj.doc.fg_warehouse)	
-			fg_item_dict = {cstr(pro_obj.doc.production_item) : [self.doc.fg_completed_qty, pro_obj.doc.description, pro_obj.doc.stock_uom]}
+			fg_item_dict = {
+				cstr(pro_obj.doc.production_item) : [self.doc.fg_completed_qty,
+				 	pro_obj.doc.description, pro_obj.doc.stock_uom]
+			}
 		elif self.doc.purpose == 'Other' and self.doc.bom_no:
 			sw, tw = '', ''
 			item = sql("select item, description, uom from `tabBOM` where name = %s", self.doc.bom_no, as_dict=1)
-			fg_item_dict = {item[0]['item'] : [self.doc.fg_completed_qty, item[0]['description'], item[0]['uom']]}
+			fg_item_dict = {
+				item[0]['item'] : [self.doc.fg_completed_qty, 
+					item[0]['description'], item[0]['uom']]
+			}
 
 		if fg_item_dict:
 			self.add_to_stock_entry_detail(sw, tw, fg_item_dict, fg_item = 1, bom_no = bom_no)
 			
+		self.get_stock_and_rate()
+			
 
 
 	def validate_transfer_qty(self):
 		for d in getlist(self.doclist, 'mtn_details'):
 			if flt(d.transfer_qty) <= 0:
-				msgprint("Transfer Quantity can not be less than or equal to zero at Row No " + cstr(d.idx))
-				raise Exception
+				msgprint("Transfer Quantity can not be less than or equal to zero \
+				 at Row No " + cstr(d.idx), raise_exception=1)
 
 
 	def calc_amount(self):
@@ -326,8 +347,10 @@
 		self.validate_incoming_rate()
 		self.validate_bom_belongs_to_item()
 		self.calc_amount()
-		get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date')
-		
+		get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year, 
+			self.doc.posting_date, 'Posting Date')
+		if self.doc.purpose == 'Other':
+			self.validate_bom_no()
 	
 	# If target warehouse exists, incoming rate is mandatory
 	# --------------------------------------------------------
diff --git a/stock/doctype/stock_entry/stock_entry.txt b/stock/doctype/stock_entry/stock_entry.txt
index 24412b8..5d2a79d 100644
--- a/stock/doctype/stock_entry/stock_entry.txt
+++ b/stock/doctype/stock_entry/stock_entry.txt
@@ -4,7 +4,7 @@
   "docstatus": 0, 
   "creation": "2012-11-28 11:26:22", 
   "modified_by": "Administrator", 
-  "modified": "2012-11-30 14:10:02"
+  "modified": "2012-12-03 12:00:59"
  }, 
  {
   "is_submittable": 1, 
@@ -414,7 +414,9 @@
  }, 
  {
   "print_hide": 1, 
+  "description": "Get valuation rate and available stock at source/target warehouse on mentioned posting date-time. If serialized item, please press this button after entering serial nos.", 
   "oldfieldtype": "Button", 
+  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Get Stock and Rate", 
   "options": "get_stock_and_rate", 
diff --git a/stock/doctype/stock_entry_detail/stock_entry_detail.txt b/stock/doctype/stock_entry_detail/stock_entry_detail.txt
index 031bd8f..503dd5b 100644
--- a/stock/doctype/stock_entry_detail/stock_entry_detail.txt
+++ b/stock/doctype/stock_entry_detail/stock_entry_detail.txt
@@ -1,266 +1,218 @@
-# DocType, Stock Entry Detail
 [
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-04-13 11:56:38',
-		'docstatus': 0,
-		'modified': '2012-05-01 16:16:20',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'autoname': u'MTND/.######',
-		'colour': u'White:FFF',
-		'default_print_format': u'Standard',
-		'doctype': 'DocType',
-		'istable': 1,
-		'module': u'Stock',
-		'name': '__common__',
-		'section_style': u'Tray',
-		'server_code_error': u' ',
-		'show_in_menu': 0,
-		'version': 1
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Stock Entry Detail',
-		'parentfield': u'fields',
-		'parenttype': u'DocType'
-	},
-
-	# DocType, Stock Entry Detail
-	{
-		'doctype': 'DocType',
-		'name': u'Stock Entry Detail'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u's_warehouse',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Source Warehouse',
-		'oldfieldname': u's_warehouse',
-		'oldfieldtype': u'Link',
-		'options': u'Warehouse',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u't_warehouse',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Target Warehouse',
-		'oldfieldname': u't_warehouse',
-		'oldfieldtype': u'Link',
-		'options': u'Warehouse',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'item_code',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Item Code',
-		'oldfieldname': u'item_code',
-		'oldfieldtype': u'Link',
-		'options': u'Item',
-		'permlevel': 0,
-		'reqd': 1,
-		'search_index': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'description',
-		'fieldtype': u'Text',
-		'label': u'Description',
-		'oldfieldname': u'description',
-		'oldfieldtype': u'Text',
-		'permlevel': 0,
-		'width': u'300px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'qty',
-		'fieldtype': u'Currency',
-		'label': u'Qty',
-		'oldfieldname': u'qty',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0,
-		'reqd': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'uom',
-		'fieldtype': u'Link',
-		'label': u'UOM',
-		'oldfieldname': u'uom',
-		'oldfieldtype': u'Link',
-		'options': u'UOM',
-		'permlevel': 0,
-		'reqd': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'incoming_rate',
-		'fieldtype': u'Currency',
-		'label': u'Incoming Rate',
-		'oldfieldname': u'incoming_rate',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0,
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amount',
-		'fieldtype': u'Currency',
-		'label': u'Amount',
-		'oldfieldname': u'amount',
-		'oldfieldtype': u'Currency',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'serial_no',
-		'fieldtype': u'Text',
-		'label': u'Serial No',
-		'no_copy': 1,
-		'oldfieldname': u'serial_no',
-		'oldfieldtype': u'Text',
-		'permlevel': 0,
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'batch_no',
-		'fieldtype': u'Link',
-		'label': u'Batch No',
-		'oldfieldname': u'batch_no',
-		'oldfieldtype': u'Link',
-		'options': u'Batch',
-		'permlevel': 0,
-		'print_hide': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'reqd_qty',
-		'fieldtype': u'Currency',
-		'in_filter': 0,
-		'label': u'Reqd Qty',
-		'oldfieldname': u'reqd_qty',
-		'oldfieldtype': u'Currency',
-		'permlevel': 3,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'actual_qty',
-		'fieldtype': u'Read Only',
-		'in_filter': 1,
-		'label': u'Actual Qty (at source)',
-		'no_copy': 1,
-		'oldfieldname': u'actual_qty',
-		'oldfieldtype': u'Read Only',
-		'permlevel': 1,
-		'print_hide': 1,
-		'reqd': 0,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'conversion_factor',
-		'fieldtype': u'Currency',
-		'label': u'Conversion Factor',
-		'oldfieldname': u'conversion_factor',
-		'oldfieldtype': u'Currency',
-		'permlevel': 1,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'transfer_qty',
-		'fieldtype': u'Currency',
-		'label': u'Stock Qty',
-		'oldfieldname': u'transfer_qty',
-		'oldfieldtype': u'Currency',
-		'permlevel': 1,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'stock_uom',
-		'fieldtype': u'Link',
-		'in_filter': 0,
-		'label': u'Stock UOM',
-		'oldfieldname': u'stock_uom',
-		'oldfieldtype': u'Link',
-		'options': u'UOM',
-		'permlevel': 1,
-		'reqd': 1,
-		'search_index': 0
-	},
-
-	# DocField
-	{
-		'description': u'BOM No. for a Finished Good Item',
-		'doctype': u'DocField',
-		'fieldname': u'bom_no',
-		'fieldtype': u'Link',
-		'label': u'BOM No.',
-		'options': u'BOM',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'fg_item',
-		'fieldtype': u'Check',
-		'in_filter': 1,
-		'label': u'FG Item',
-		'oldfieldname': u'fg_item',
-		'oldfieldtype': u'Check',
-		'permlevel': 0,
-		'print_hide': 1
-	}
+ {
+  "owner": "Administrator", 
+  "docstatus": 0, 
+  "creation": "2012-07-03 13:29:47", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-03 11:37:17"
+ }, 
+ {
+  "istable": 1, 
+  "autoname": "MTND/.######", 
+  "name": "__common__", 
+  "default_print_format": "Standard", 
+  "doctype": "DocType", 
+  "module": "Stock"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "Stock Entry Detail", 
+  "doctype": "DocField", 
+  "parenttype": "DocType", 
+  "parentfield": "fields"
+ }, 
+ {
+  "name": "Stock Entry Detail", 
+  "doctype": "DocType"
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "doctype": "DocField", 
+  "label": "Source Warehouse", 
+  "oldfieldname": "s_warehouse", 
+  "options": "Warehouse", 
+  "fieldname": "s_warehouse", 
+  "fieldtype": "Link", 
+  "permlevel": 0, 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "doctype": "DocField", 
+  "label": "Target Warehouse", 
+  "oldfieldname": "t_warehouse", 
+  "options": "Warehouse", 
+  "fieldname": "t_warehouse", 
+  "fieldtype": "Link", 
+  "permlevel": 0, 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "doctype": "DocField", 
+  "label": "Item Code", 
+  "oldfieldname": "item_code", 
+  "permlevel": 0, 
+  "trigger": "Client", 
+  "fieldname": "item_code", 
+  "fieldtype": "Link", 
+  "search_index": 1, 
+  "reqd": 1, 
+  "options": "Item", 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Text", 
+  "doctype": "DocField", 
+  "label": "Description", 
+  "oldfieldname": "description", 
+  "width": "300px", 
+  "fieldname": "description", 
+  "fieldtype": "Text", 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Currency", 
+  "doctype": "DocField", 
+  "label": "Qty", 
+  "oldfieldname": "qty", 
+  "trigger": "Client", 
+  "fieldname": "qty", 
+  "fieldtype": "Currency", 
+  "reqd": 1, 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "UOM", 
+  "oldfieldname": "uom", 
+  "trigger": "Client", 
+  "fieldname": "uom", 
+  "fieldtype": "Link", 
+  "reqd": 1, 
+  "options": "UOM", 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Currency", 
+  "doctype": "DocField", 
+  "label": "Valuation Rate", 
+  "oldfieldname": "incoming_rate", 
+  "fieldname": "incoming_rate", 
+  "fieldtype": "Currency", 
+  "reqd": 0, 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Currency", 
+  "doctype": "DocField", 
+  "label": "Amount", 
+  "oldfieldname": "amount", 
+  "fieldname": "amount", 
+  "fieldtype": "Currency", 
+  "permlevel": 1
+ }, 
+ {
+  "no_copy": 1, 
+  "oldfieldtype": "Text", 
+  "doctype": "DocField", 
+  "label": "Serial No", 
+  "oldfieldname": "serial_no", 
+  "fieldname": "serial_no", 
+  "fieldtype": "Text", 
+  "reqd": 0, 
+  "permlevel": 0
+ }, 
+ {
+  "print_hide": 1, 
+  "oldfieldtype": "Link", 
+  "doctype": "DocField", 
+  "label": "Batch No", 
+  "oldfieldname": "batch_no", 
+  "trigger": "Client", 
+  "fieldname": "batch_no", 
+  "fieldtype": "Link", 
+  "options": "Batch", 
+  "permlevel": 0
+ }, 
+ {
+  "print_hide": 1, 
+  "oldfieldtype": "Currency", 
+  "doctype": "DocField", 
+  "label": "Reqd Qty", 
+  "oldfieldname": "reqd_qty", 
+  "fieldname": "reqd_qty", 
+  "fieldtype": "Currency", 
+  "permlevel": 3, 
+  "in_filter": 0
+ }, 
+ {
+  "print_hide": 1, 
+  "no_copy": 1, 
+  "oldfieldtype": "Read Only", 
+  "doctype": "DocField", 
+  "label": "Actual Qty (at source/target)", 
+  "oldfieldname": "actual_qty", 
+  "fieldname": "actual_qty", 
+  "fieldtype": "Read Only", 
+  "search_index": 1, 
+  "reqd": 0, 
+  "permlevel": 1, 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Currency", 
+  "doctype": "DocField", 
+  "label": "Conversion Factor", 
+  "oldfieldname": "conversion_factor", 
+  "fieldname": "conversion_factor", 
+  "fieldtype": "Currency", 
+  "reqd": 1, 
+  "permlevel": 1
+ }, 
+ {
+  "oldfieldtype": "Currency", 
+  "doctype": "DocField", 
+  "label": "Stock Qty", 
+  "oldfieldname": "transfer_qty", 
+  "fieldname": "transfer_qty", 
+  "fieldtype": "Currency", 
+  "reqd": 1, 
+  "permlevel": 1
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "doctype": "DocField", 
+  "label": "Stock UOM", 
+  "oldfieldname": "stock_uom", 
+  "options": "UOM", 
+  "fieldname": "stock_uom", 
+  "fieldtype": "Link", 
+  "search_index": 0, 
+  "reqd": 1, 
+  "permlevel": 1, 
+  "in_filter": 0
+ }, 
+ {
+  "description": "BOM No. for a Finished Good Item", 
+  "doctype": "DocField", 
+  "label": "BOM No", 
+  "options": "BOM", 
+  "fieldname": "bom_no", 
+  "fieldtype": "Link", 
+  "permlevel": 0
+ }, 
+ {
+  "print_hide": 1, 
+  "oldfieldtype": "Check", 
+  "doctype": "DocField", 
+  "label": "FG Item", 
+  "oldfieldname": "fg_item", 
+  "fieldname": "fg_item", 
+  "fieldtype": "Check", 
+  "permlevel": 0, 
+  "in_filter": 1
+ }
 ]
\ No newline at end of file
diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index facd052..e6c4dee 100644
--- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -37,15 +37,12 @@
 
 			if (batch_bal + self.doc.actual_qty) < 0:
 				msgprint("""Not enough quantity (requested: %(actual_qty)s, current: %(batch_bal)s in Batch 
-		<b>%(batch_no)s</b> for Item <b>%(item_code)s</b> at Warehouse<b>%(warehouse)s</b> 
+		<b>%(batch_no)s</b> for Item <b>%(item_code)s</b> at Warehouse <b>%(warehouse)s</b> 
 		as on %(posting_date)s %(posting_time)s""" % self.doc.fields, raise_exception = 1)
 
 			self.doc.fields.pop('batch_bal')
 			 
 
-	# mandatory
-	# ---------
-	
 	def validate_mandatory(self):		
 		mandatory = ['warehouse','transaction_date','posting_date','voucher_type','voucher_no','actual_qty','company','fiscal_year']
 		for k in mandatory:
@@ -55,9 +52,6 @@
 				if not sql("select name from tabWarehouse where name = '%s'" % self.doc.fields.get(k)):
 					msgprint("Warehouse: '%s' does not exist in the system. Please check." % self.doc.fields.get(k), raise_exception = 1)
 
-	# validate for item
-	# -----------------
-	
 	def validate_item(self):
 		item_det = sql("select name, has_batch_no, docstatus from tabItem where name = '%s'" % self.doc.item_code)
 
