diff --git a/material_management/__init__.pyc b/material_management/__init__.pyc
new file mode 100644
index 0000000..38edace
--- /dev/null
+++ b/material_management/__init__.pyc
Binary files differ
diff --git a/material_management/doctype/__init__.pyc b/material_management/doctype/__init__.pyc
new file mode 100644
index 0000000..ceda4b0
--- /dev/null
+++ b/material_management/doctype/__init__.pyc
Binary files differ
diff --git a/material_management/doctype/stock_entry/stock_entry.py b/material_management/doctype/stock_entry/stock_entry.py
index b671781..a07f769 100644
--- a/material_management/doctype/stock_entry/stock_entry.py
+++ b/material_management/doctype/stock_entry/stock_entry.py
@@ -16,7 +16,6 @@
 	
 # -----------------------------------------------------------------------------------------
 
-
 class DocType:
 	def __init__(self, doc, doclist=[]):
 		self.doc = doc
@@ -59,6 +58,7 @@
 
 
 	# 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)
@@ -252,7 +252,7 @@
 		self.validate_for_production_order(pro_obj)
 		self.validate_incoming_rate()
 		self.validate_warehouse(pro_obj)
-		self.get_current_stock(pro_obj.doc.bom_no)
+		self.get_stock_and_rate(pro_obj and pro_obj.doc.bom_no or '')
 		self.calc_amount()
 		get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date')
 				
diff --git a/material_management/doctype/stock_entry/stock_entry.py~ b/material_management/doctype/stock_entry/stock_entry.py~
new file mode 100644
index 0000000..e90cdce
--- /dev/null
+++ b/material_management/doctype/stock_entry/stock_entry.py~
@@ -0,0 +1,429 @@
+# Please edit this list and import only required elements
+import webnotes
+
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.model import db_exists, delete_doc
+from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
+from webnotes.model.doclist import getlist, copy_doclist
+from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
+from webnotes import session, form, is_testing, msgprint, errprint
+
+set = webnotes.conn.set
+sql = webnotes.conn.sql
+get_value = webnotes.conn.get_value
+in_transaction = webnotes.conn.in_transaction
+convert_to_lists = webnotes.conn.convert_to_lists
+	
+# -----------------------------------------------------------------------------------------
+
+class DocType:
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
+		self.item_dict = {}
+		self.fname = 'mtn_details' 
+
+	# Autoname
+	# ---------
+	def autoname(self):
+		self.doc.name = make_autoname(self.doc.naming_series+'.#####')
+
+  
+	# get item details
+	# ----------------
+	def get_item_details(self, arg):
+		arg, actual_qty, in_rate = eval(arg), 0, 0
+
+		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'          	: ''
+		}
+		return str(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)
+		if not uom:
+			msgprint("There is no Conversion Factor for UOM '%s' in Item '%s'" % (arg['uom'], arg['item_code']))
+			ret = {'uom' : ''}
+		else:
+			ret = {
+				'conversion_factor'		: flt(uom[0]['conversion_factor']),
+				'transfer_qty'			: flt(arg['qty']) * flt(uom[0]['conversion_factor']),
+			}
+		return str(ret)
+
+		
+	# get stock and incoming rate on posting date
+	# ---------------------------------------------
+	def get_stock_and_rate(self, bom_no = ''):
+		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 ''
+			
+			# 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
+
+			# get incoming rate
+			if not flt(d.incoming_rate):
+				msgprint(1)
+				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, bom_no)
+			
+	# Get stock qty on any date
+	# ---------------------------
+	def get_as_on_stock(self, item, wh, dt, tm):
+		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 = get_obj('Bin', bin_id).get_prev_sle(dt, tm)
+		qty = flt(prev_sle.get('bin_aqat', 0))
+		return qty
+
+	# Get incoming rate
+	# -------------------
+	def get_incoming_rate(self, item, wh, dt, tm, qty = 0, serial_no = '', fg_item = 'No', bom_no = ''):
+		msgprint(wh)
+		in_rate = 0
+		if fg_item == 'Yes':
+			# re-calculate cost for production item from bom
+			get_obj('BOM Control').calculate_cost(bom_no)
+			in_rate = get_value('Bill Of Materials', bom_no, 'cost_as_per_mar')
+		elif wh:
+			msgprint(1)
+			in_rate = get_obj('Valuation Control').get_incoming_rate(dt, tm, item, wh, qty, serial_no)
+		
+		return in_rate
+
+	# makes dict of unique items with it's qty
+	#-----------------------------------------
+	def make_items_dict(self, items_list):
+		# items_list = [[item_name, qty]]
+		for i in items_list:
+			if self.item_dict.has_key(i[0]):
+				self.item_dict[i[0]][0] = flt(self.item_dict[i[0]][0]) + flt(i[1])
+			else:
+				self.item_dict[i[0]] = [flt(i[1]), cstr(i[2]), cstr(i[3])]
+				
+	def get_raw_materials(self,pro_obj):
+		# get all items from flat bom except, child items of sub-contracted and sub assembly items and sub assembly items itself.
+		flat_bom_items = sql("select item_code, ifnull(sum(qty_consumed_per_unit), 0) * '%s', description, stock_uom	from `tabFlat BOM Detail` where parent = '%s' and parent_bom = '%s' and is_pro_applicable = 'No' and docstatus < 2 group by item_code" % ((self.doc.process == 'Backflush') and flt(self.doc.fg_completed_qty) or flt(pro_obj.doc.qty), cstr(pro_obj.doc.bom_no), cstr(pro_obj.doc.bom_no)))
+		self.make_items_dict(flat_bom_items)
+		if pro_obj.doc.consider_sa_items == 'Yes':
+			# get all Sub Assembly items only from flat bom
+			fl_bom_sa_items = sql("select item_code, ifnull(sum(qty_consumed_per_unit), 0) * '%s', description, stock_uom from `tabFlat BOM Detail` where parent = '%s' and parent_bom != '%s' and is_pro_applicable = 'Yes' and docstatus < 2 group by item_code" % ((self.doc.process == 'Backflush') and flt(self.doc.fg_completed_qty) or flt(pro_obj.doc.qty), cstr(pro_obj.doc.bom_no), cstr(pro_obj.doc.bom_no)))
+			self.make_items_dict(fl_bom_sa_items)
+		
+		if pro_obj.doc.consider_sa_items == 'No':
+			# get all sub assembly childs only from flat bom
+			fl_bom_sa_child_item = sql("select item_code, ifnull(sum(qty_consumed_per_unit), 0) * '%s', description, stock_uom from `tabFlat BOM Detail` where parent = '%s' and parent_bom in (select distinct parent_bom from `tabFlat BOM Detail` where parent = '%s' and parent_bom != '%s' and is_pro_applicable = 'Yes' and docstatus < 2 ) and is_pro_applicable = 'No' and docstatus < 2 group by item_code" % ((self.doc.process == 'Backflush') and flt(self.doc.fg_completed_qty) or flt(pro_obj.doc.qty), cstr(pro_obj.doc.bom_no), cstr(pro_obj.doc.bom_no), cstr(pro_obj.doc.bom_no)))
+			self.make_items_dict(fl_bom_sa_child_item)
+
+	def add_to_stock_entry_detail(self, pro_obj, item_dict, fg_item = 0):
+		sw, tw = '', ''
+		if self.doc.process == 'Material Transfer':
+			tw = cstr(pro_obj.doc.wip_warehouse)
+		if self.doc.process == 'Backflush':
+			tw = fg_item and cstr(pro_obj.doc.fg_warehouse) or ''
+			if not fg_item: sw = cstr(pro_obj.doc.wip_warehouse)
+		for d in item_dict:
+			se_child = addchild(self.doc, 'mtn_details', 'Stock Entry Detail', 0, self.doclist)
+			se_child.s_warehouse = sw
+			se_child.t_warehouse = tw
+			se_child.fg_item	= fg_item
+			se_child.item_code = cstr(d)
+			se_child.description = item_dict[d][1]
+			se_child.uom = item_dict[d][2]
+			se_child.stock_uom = item_dict[d][2]
+			se_child.reqd_qty = flt(item_dict[d][0])
+			se_child.qty = flt(item_dict[d][0])
+			se_child.transfer_qty = flt(item_dict[d][0])
+			se_child.conversion_factor = 1.00
+
+	
+	# get items 
+	#------------------
+	def get_items(self):
+		pro_obj = self.doc.production_order and get_obj('Production Order', self.doc.production_order) or ''
+		
+		self.validate_for_production_order(pro_obj)
+		self.get_raw_materials(pro_obj)
+		
+		self.doc.clear_table(self.doclist, 'mtn_details', 1)
+		
+		self.add_to_stock_entry_detail(pro_obj, self.item_dict)
+		if self.doc.process == 'Backflush':
+			item_dict = {cstr(pro_obj.doc.production_item) : [self.doc.fg_completed_qty, pro_obj.doc.description, pro_obj.doc.stock_uom]}
+			self.add_to_stock_entry_detail(pro_obj, item_dict, fg_item = 1)
+
+	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
+			if d.s_warehouse:
+				if flt(d.transfer_qty) > flt(d.actual_qty):
+					msgprint("Transfer Quantity is more than Available Qty at Row No " + cstr(d.idx))
+					raise Exception
+	
+	def calc_amount(self):
+		total_amount = 0
+		for d in getlist(self.doclist, 'mtn_details'):
+			d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
+			total_amount += flt(d.amount)
+		self.doc.total_amount = flt(total_amount)
+
+	def add_to_values(self, d, wh, qty, is_cancelled):
+		self.values.append({
+				'item_code'			    : d.item_code,
+				'warehouse'			    : wh,
+				'transaction_date'	: self.doc.transfer_date,
+				'posting_date'		  : self.doc.posting_date,
+				'posting_time'		  : self.doc.posting_time,
+				'voucher_type'		  : 'Stock Entry',
+				'voucher_no'		    : self.doc.name, 
+				'voucher_detail_no'	: d.name,
+				'actual_qty'		    : qty,
+				'incoming_rate'		  : flt(d.incoming_rate) or 0,
+				'stock_uom'			    : d.stock_uom,
+				'company'			      : self.doc.company,
+				'fiscal_year'		    : self.doc.fiscal_year,
+				'is_cancelled'		  : (is_cancelled ==1) and 'Yes' or 'No',
+				'batch_no'			    : d.batch_no,
+        'serial_no'         : d.serial_no
+		})
+
+	
+	def update_stock_ledger(self, is_cancelled=0):
+		self.values = []			
+		for d in getlist(self.doclist, 'mtn_details'):
+			if cstr(d.s_warehouse):
+				self.add_to_values(d, cstr(d.s_warehouse), -flt(d.transfer_qty), is_cancelled)
+			if cstr(d.t_warehouse):
+				self.add_to_values(d, cstr(d.t_warehouse), flt(d.transfer_qty), is_cancelled)
+		get_obj('Stock Ledger', 'Stock Ledger').update_stock(self.values)
+
+	
+	def validate_for_production_order(self, pro_obj):
+		if self.doc.purpose == 'Production Order' or self.doc.process or self.doc.production_order or flt(self.doc.fg_completed_qty):
+			if self.doc.purpose != 'Production Order':
+				msgprint("Purpose should be 'Production Order'.")
+				raise Exception
+			if not self.doc.process:
+				msgprint("Process Field is mandatory.")
+				raise Exception
+			if self.doc.process == 'Backflush' and not flt(self.doc.fg_completed_qty):
+				msgprint("FG Completed Qty is mandatory as the process selected is 'Backflush'")
+				raise Exception
+			if self.doc.process == 'Material Transfer' and flt(self.doc.fg_completed_qty):
+				msgprint("FG Completed Qty should be zero. As the Process selected is 'Material Transfer'.")
+				raise Exception
+			if not self.doc.production_order:
+				msgprint("Production Order field is mandatory")
+				raise Exception
+			if flt(pro_obj.doc.qty) < flt(pro_obj.doc.produced_qty) + flt(self.doc.fg_completed_qty) :
+				msgprint("error:Already Produced Qty for %s is %s and maximum allowed Qty is %s" % (pro_obj.doc.production_item, cstr(pro_obj.doc.produced_qty) or 0.00 , cstr(pro_obj.doc.qty)))
+				raise Exception
+	
+	# Validate
+	# ------------------
+	def validate(self):
+		sl_obj = get_obj("Stock Ledger", "Stock Ledger")
+		sl_obj.scrub_serial_nos(self)
+		sl_obj.validate_serial_no(self, 'mtn_details')
+		pro_obj = ''
+		if self.doc.production_order:
+			pro_obj = get_obj('Production Order', self.doc.production_order)
+		self.validate_for_production_order(pro_obj)
+		self.validate_incoming_rate()
+		self.validate_warehouse(pro_obj)
+		self.get_stock_and_rate(pro_obj and pro_obj.doc.bom_no or '')
+		self.calc_amount()
+		get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date')
+				
+	# If target warehouse exists, incoming rate is mandatory
+	# --------------------------------------------------------
+	def validate_incoming_rate(self):
+		for d in getlist(self.doclist, 'mtn_details'):
+			if not flt(d.incoming_rate) and d.t_warehouse:
+				msgprint("Rate is mandatory for Item: %s at row %s" % (d.item_code, d.idx), raise_exception=1)
+
+	# Validate warehouse
+	# -----------------------------------
+	def validate_warehouse(self, pro_obj):
+		fg_qty = 0
+		for d in getlist(self.doclist, 'mtn_details'):
+			if not d.s_warehouse and not d.t_warehouse:
+				d.s_warehouse = self.doc.from_warehouse
+				d.t_warehouse = self.doc.to_warehouse
+
+			if not (d.s_warehouse or d.t_warehouse):
+				msgprint("Atleast one warehouse is mandatory for Stock Entry ")
+				raise Exception
+			if d.s_warehouse and not sql("select name from tabWarehouse where name = '%s'" % d.s_warehouse):
+				msgprint("Invalid Warehouse: %s" % self.doc.s_warehouse)
+				raise Exception
+			if d.t_warehouse and not sql("select name from tabWarehouse where name = '%s'" % d.t_warehouse):
+				msgprint("Invalid Warehouse: %s" % self.doc.t_warehouse)
+				raise Exception
+			if d.s_warehouse == d.t_warehouse:
+				msgprint("Source and Target Warehouse Cannot be Same.")
+				raise Exception
+			if self.doc.purpose == 'Material Issue':
+				if not cstr(d.s_warehouse):
+					msgprint("Source Warehouse is Mandatory for Purpose => 'Material Issue'")
+					raise Exception
+				if cstr(d.t_warehouse):
+					msgprint("Target Warehouse is not Required for Purpose => 'Material Issue'")
+					raise Exception
+			if self.doc.purpose == 'Material Transfer':
+				if not cstr(d.s_warehouse) or not cstr(d.t_warehouse):
+					msgprint("Source Warehouse and Target Warehouse both are Mandatory for Purpose => 'Material Transfer'")
+					raise Exception
+			if self.doc.purpose == 'Material Receipt':
+				if not cstr(d.t_warehouse):
+					msgprint("Target Warehouse is Mandatory for Purpose => 'Material Receipt'")
+					raise Exception
+				if cstr(d.s_warehouse):
+					msgprint("Source Warehouse is not Required for Purpose => 'Material Receipt'")
+					raise Exception
+			if self.doc.process == 'Material Transfer':
+				if cstr(d.t_warehouse) != (pro_obj.doc.wip_warehouse):
+					msgprint(" Target Warehouse should be same as WIP Warehouse %s in Production Order %s at Row No %s" % (cstr(pro_obj.doc.wip_warehouse), cstr(pro_obj.doc.name), cstr(d.idx)) )
+					raise Exception
+				if not cstr(d.s_warehouse):
+					msgprint("Please Enter Source Warehouse at Row No %s is mandatory." % (cstr(d.idx)))
+					raise Exception
+			if self.doc.process == 'Backflush':
+				if flt(d.fg_item):
+					if cstr(pro_obj.doc.production_item) != cstr(d.item_code):
+						msgprint("Item %s in Stock Entry Detail as Row No %s do not match with Item %s in Production Order %s" % (cstr(d.item_code), cstr(d.idx), cstr(pro_obj.doc.production_item), cstr(pro_obj.doc.name)))
+						raise Exception
+					fg_qty = flt(fg_qty) + flt(d.transfer_qty)
+					if cstr(d.t_warehouse) != cstr(pro_obj.doc.fg_warehouse):
+						msgprint("As Item %s is FG Item. Target Warehouse should be same as FG Warehouse %s in Production Order %s, at Row No %s. " % ( cstr(d.item_code), cstr(pro_obj.doc.fg_warehouse), cstr(pro_obj.doc.name), cstr(d.idx)))
+						raise Exception
+					if cstr(d.s_warehouse):
+						msgprint("As Item %s is a FG Item. There should be no Source Warehouse at Row No %s" % (cstr(d.item_code), cstr(d.idx)))
+						raise Exception
+				if not flt(d.fg_item):
+					if cstr(d.t_warehouse):
+						msgprint("As Item %s is not a FG Item. There should no Tareget Warehouse at Row No %s" % (cstr(d.item_code), cstr(d.idx)))
+						raise Exception
+					if cstr(d.s_warehouse) != cstr(pro_obj.doc.wip_warehouse):
+						msgprint("As Item %s is Raw Material. Source Warehouse should be same as WIP Warehouse %s in Production Order %s, at Row No %s. " % ( cstr(d.item_code), cstr(pro_obj.doc.wip_warehouse), cstr(pro_obj.doc.name), cstr(d.idx)))
+						raise Exception
+			d.save()
+		if self.doc.fg_completed_qty and flt(self.doc.fg_completed_qty) != flt(fg_qty):
+			msgprint("The Total of FG Qty %s in Stock Entry Detail do not match with FG Completed Qty %s" % (flt(fg_qty), flt(self.doc.fg_completed_qty)))
+			raise Exception
+
+	def update_production_order(self, is_submit):
+		if self.doc.production_order:
+			pro_obj = get_obj("Production Order", self.doc.production_order)
+			if flt(pro_obj.doc.docstatus) != 1:
+				msgprint("One cannot do any transaction against Production Order : %s, as it's not submitted" % (pro_obj.doc.name))
+				raise Exception
+			if pro_obj.doc.status == 'Stopped':
+				msgprint("One cannot do any transaction against Production Order : %s, as it's status is 'Stopped'" % (pro_obj.doc.name))
+				raise Exception
+			if getdate(pro_obj.doc.posting_date) > getdate(self.doc.posting_date):
+				msgprint("Posting Date of Stock Entry cannot be before Posting Date of Production Order "+ cstr(self.doc.production_order))
+				raise Exception
+			if self.doc.process == 'Backflush':
+				pro_obj.doc.produced_qty = flt(pro_obj.doc.produced_qty) + (is_submit and 1 or -1 ) * flt(self.doc.fg_completed_qty)
+				get_obj('Warehouse',	pro_obj.doc.fg_warehouse).update_bin(0, 0, 0, 0, (is_submit and 1 or -1 ) *	flt(self.doc.fg_completed_qty), pro_obj.doc.production_item, now())
+			pro_obj.doc.status = (flt(pro_obj.doc.qty) == flt(pro_obj.doc.produced_qty)) and	'Completed' or 'In Process'
+			pro_obj.doc.save()
+	
+	# Create / Update Serial No
+	# ----------------------------------
+	def update_serial_no(self, is_submit):
+		sl_obj = get_obj('Stock Ledger')
+		for d in getlist(self.doclist, 'mtn_details'):
+			if d.serial_no:
+				serial_nos = sl_obj.get_sr_no_list(d.serial_no)
+				for x in serial_nos:
+					serial_no = x.strip()
+					if d.s_warehouse:
+						sl_obj.update_serial_delivery_details(self, d, serial_no, is_submit)
+					if d.t_warehouse:
+						sl_obj.update_serial_purchase_details(self, d, serial_no, is_submit, (self.doc.purpose in ['Material Transfer', 'Sales Return']) and 1 or 0)
+					
+					if self.doc.purpose == 'Purchase Return':
+						delete_doc("Serial No", serial_no)
+
+	# On Submit
+	# ------------------
+	def on_submit(self):
+		self.validate_transfer_qty()
+		# Check for Approving Authority
+		get_obj('Authorization Control').validate_approving_authority(self.doc.doctype, self.doc.company, self.doc.total_amount)
+		self.update_serial_no(1)
+		self.update_stock_ledger(0)
+		# update Production Order
+		self.update_production_order(1)
+
+	# On Cancel
+	# -------------------
+	def on_cancel(self):
+		self.update_serial_no(0)
+		self.update_stock_ledger(1)
+		# update Production Order
+		self.update_production_order(0)
+		
+	def get_cust_values(self):
+		tbl = self.doc.delivery_note_no and 'Delivery Note' or 'Receivable Voucher'
+		record_name = self.doc.delivery_note_no or self.doc.sales_invoice_no
+		res = sql("select customer,customer_name, customer_address from `tab%s` where name = '%s'" % (tbl, record_name))
+		ret = {
+			'customer'				 : res and res[0][0] or '',
+			'customer_name'		: res and res[0][1] or '',
+			'customer_address' : res and res[0][2] or ''}
+
+		return str(ret)
+
+
+	def get_cust_addr(self):
+		res = sql("select customer_name,address from `tabCustomer` where name = '%s'"%self.doc.customer)
+		ret = { 
+			'customer_name'		: res and res[0][0] or '',
+			'customer_address' : res and res[0][1] or ''}
+
+		return str(ret)
+
+
+		
+	def get_supp_values(self):
+		res = sql("select supplier,supplier_name,supplier_address from `tabPurchase Receipt` where name = '%s'"%self.doc.purchase_receipt_no)
+		ret = {
+			'supplier' : res and res[0][0] or '',
+			'supplier_name' :res and res[0][1] or '',
+			'supplier_address' : res and res[0][2] or ''}
+		return str(ret)
+		
+
+	def get_supp_addr(self):
+		res = sql("select supplier_name,address from `tabSupplier` where name = '%s'"%self.doc.supplier)
+		ret = {
+			'supplier_name' : res and res[0][0] or '',
+			'supplier_address' : res and res[0][1] or ''}
+		return str(ret)
diff --git a/material_management/doctype/stock_entry/stock_entry.txt b/material_management/doctype/stock_entry/stock_entry.txt
index 09617ab..448693c 100644
--- a/material_management/doctype/stock_entry/stock_entry.txt
+++ b/material_management/doctype/stock_entry/stock_entry.txt
@@ -1,6 +1,6 @@
 [
 	{
-		'_last_update': '1301989672',
+		'_last_update': '1308034183',
 		'allow_attach': None,
 		'allow_copy': None,
 		'allow_email': None,
@@ -29,7 +29,7 @@
 		'istable': None,
 		'max_attachments': None,
 		'menu_index': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'module': 'Material Management',
 		'name': 'Stock Entry',
@@ -50,10 +50,10 @@
 		'server_code_error': ' ',
 		'show_in_menu': 0,
 		'smallicon': None,
-		'subject': 'eval:"%(remarks)s | " + ("%(from_warehouse)s" ? "From %(from_warehouse)s" : "") + ("%(to_warehouse)s" ? "To %(to_warehouse)s" : "")',
+		'subject': '%(remarks)s',
 		'tag_fields': 'purpose',
 		'use_template': None,
-		'version': 227
+		'version': 243
 	},
 	{
 		'amend': 1,
@@ -65,7 +65,7 @@
 		'execute': None,
 		'idx': 1,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00541',
 		'owner': 'Administrator',
@@ -88,7 +88,7 @@
 		'execute': None,
 		'idx': 2,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00542',
 		'owner': 'Administrator',
@@ -111,7 +111,7 @@
 		'execute': None,
 		'idx': 3,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00543',
 		'owner': 'Administrator',
@@ -134,7 +134,7 @@
 		'execute': None,
 		'idx': 4,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00544',
 		'owner': 'Administrator',
@@ -157,7 +157,7 @@
 		'execute': None,
 		'idx': 5,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00545',
 		'owner': 'jai@webnotestech.com',
@@ -180,7 +180,7 @@
 		'execute': None,
 		'idx': 6,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00546',
 		'owner': 'jai@webnotestech.com',
@@ -203,7 +203,7 @@
 		'execute': None,
 		'idx': 7,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00547',
 		'owner': 'jai@webnotestech.com',
@@ -226,7 +226,7 @@
 		'execute': None,
 		'idx': 8,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00548',
 		'owner': 'jai@webnotestech.com',
@@ -249,7 +249,7 @@
 		'execute': None,
 		'idx': 9,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00549',
 		'owner': 'jai@webnotestech.com',
@@ -272,7 +272,7 @@
 		'execute': None,
 		'idx': 10,
 		'match': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'PERM00550',
 		'owner': 'jai@webnotestech.com',
@@ -301,7 +301,7 @@
 		'idx': 1,
 		'in_filter': None,
 		'label': 'Warehouse',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03366',
 		'no_column': None,
@@ -337,7 +337,7 @@
 		'idx': 2,
 		'in_filter': None,
 		'label': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03367',
 		'no_column': None,
@@ -361,7 +361,7 @@
 		'allow_on_submit': None,
 		'colour': 'White:FFF',
 		'creation': '2010-08-08 17:09:25',
-		'default': 'STE',
+		'default': None,
 		'depends_on': None,
 		'description': 'To manage multiple series please go to Setup > Manage Series',
 		'docstatus': 0,
@@ -373,7 +373,7 @@
 		'idx': 3,
 		'in_filter': None,
 		'label': 'Series',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03368',
 		'no_column': None,
@@ -409,7 +409,7 @@
 		'idx': 4,
 		'in_filter': None,
 		'label': 'Amendment Date',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03369',
 		'no_column': None,
@@ -445,7 +445,7 @@
 		'idx': 5,
 		'in_filter': 1,
 		'label': 'Purpose',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03370',
 		'no_column': None,
@@ -481,7 +481,7 @@
 		'idx': 6,
 		'in_filter': None,
 		'label': 'Delivery Note No',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03371',
 		'no_column': None,
@@ -517,7 +517,7 @@
 		'idx': 7,
 		'in_filter': None,
 		'label': 'Purchase Receipt No',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03372',
 		'no_column': None,
@@ -540,7 +540,7 @@
 	{
 		'allow_on_submit': None,
 		'colour': None,
-		'creation': '2011-02-04 17:22:22',
+		'creation': '2011-02-01 14:10:05',
 		'default': None,
 		'depends_on': None,
 		'description': None,
@@ -553,9 +553,9 @@
 		'idx': 8,
 		'in_filter': None,
 		'label': 'Sales Invoice No',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
-		'name': 'FL04499',
+		'name': 'FL04464',
 		'no_column': None,
 		'no_copy': None,
 		'oldfieldname': None,
@@ -589,7 +589,7 @@
 		'idx': 9,
 		'in_filter': None,
 		'label': 'Supplier',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03373',
 		'no_column': None,
@@ -612,7 +612,7 @@
 	{
 		'allow_on_submit': None,
 		'colour': None,
-		'creation': '2010-09-01 15:47:54',
+		'creation': '2010-09-01 15:48:04',
 		'default': None,
 		'depends_on': None,
 		'description': None,
@@ -625,9 +625,9 @@
 		'idx': 10,
 		'in_filter': None,
 		'label': 'Supplier Name',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
-		'name': 'FL03788',
+		'name': 'FL03800',
 		'no_column': None,
 		'no_copy': None,
 		'oldfieldname': 'supplier_name',
@@ -661,7 +661,7 @@
 		'idx': 11,
 		'in_filter': None,
 		'label': 'Supplier Address',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03374',
 		'no_column': None,
@@ -697,7 +697,7 @@
 		'idx': 12,
 		'in_filter': None,
 		'label': 'Customer',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03375',
 		'no_column': None,
@@ -720,7 +720,7 @@
 	{
 		'allow_on_submit': None,
 		'colour': None,
-		'creation': '2010-09-01 15:47:54',
+		'creation': '2010-09-01 15:48:04',
 		'default': None,
 		'depends_on': None,
 		'description': None,
@@ -733,9 +733,9 @@
 		'idx': 13,
 		'in_filter': None,
 		'label': 'Customer Name',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
-		'name': 'FL03789',
+		'name': 'FL03801',
 		'no_column': None,
 		'no_copy': None,
 		'oldfieldname': 'customer_name',
@@ -769,7 +769,7 @@
 		'idx': 14,
 		'in_filter': None,
 		'label': 'Customer Address',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03376',
 		'no_column': None,
@@ -805,7 +805,7 @@
 		'idx': 15,
 		'in_filter': 1,
 		'label': 'Process',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03377',
 		'no_column': None,
@@ -841,7 +841,7 @@
 		'idx': 16,
 		'in_filter': 1,
 		'label': 'Production Order',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03378',
 		'no_column': None,
@@ -877,7 +877,7 @@
 		'idx': 17,
 		'in_filter': None,
 		'label': 'FG Completed Qty',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03379',
 		'no_column': None,
@@ -913,7 +913,7 @@
 		'idx': 18,
 		'in_filter': None,
 		'label': 'Warehouse HTML',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03380',
 		'no_column': None,
@@ -949,7 +949,7 @@
 		'idx': 19,
 		'in_filter': None,
 		'label': 'Source Warehouse',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03381',
 		'no_column': None,
@@ -985,7 +985,7 @@
 		'idx': 20,
 		'in_filter': 0,
 		'label': 'Target Warehouse',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03382',
 		'no_column': None,
@@ -1008,42 +1008,6 @@
 	{
 		'allow_on_submit': None,
 		'colour': None,
-		'creation': '2010-12-14 10:33:05',
-		'default': None,
-		'depends_on': None,
-		'description': None,
-		'docstatus': 0,
-		'doctype': 'DocField',
-		'fieldname': 'project_name',
-		'fieldtype': 'Link',
-		'hidden': None,
-		'icon': None,
-		'idx': 21,
-		'in_filter': 1,
-		'label': 'Project Name',
-		'modified': '2011-05-19 09:46:27',
-		'modified_by': 'Administrator',
-		'name': 'FL04203',
-		'no_column': None,
-		'no_copy': None,
-		'oldfieldname': 'project_name',
-		'oldfieldtype': 'Link',
-		'options': 'Project',
-		'owner': 'ashwini@webnotestech.com',
-		'parent': 'Stock Entry',
-		'parentfield': 'fields',
-		'parenttype': 'DocType',
-		'permlevel': 0,
-		'print_hide': None,
-		'report_hide': None,
-		'reqd': None,
-		'search_index': None,
-		'trigger': None,
-		'width': None
-	},
-	{
-		'allow_on_submit': None,
-		'colour': None,
 		'creation': '2010-08-08 17:09:25',
 		'default': None,
 		'depends_on': None,
@@ -1054,10 +1018,10 @@
 		'fieldtype': 'Column Break',
 		'hidden': None,
 		'icon': None,
-		'idx': 22,
+		'idx': 21,
 		'in_filter': None,
 		'label': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03383',
 		'no_column': None,
@@ -1090,10 +1054,10 @@
 		'fieldtype': 'Date',
 		'hidden': None,
 		'icon': None,
-		'idx': 23,
+		'idx': 22,
 		'in_filter': 1,
 		'label': 'Transfer Date',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03384',
 		'no_column': None,
@@ -1126,10 +1090,10 @@
 		'fieldtype': 'Date',
 		'hidden': None,
 		'icon': None,
-		'idx': 24,
+		'idx': 23,
 		'in_filter': 1,
 		'label': 'Posting Date',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03385',
 		'no_column': None,
@@ -1162,10 +1126,10 @@
 		'fieldtype': 'Time',
 		'hidden': None,
 		'icon': None,
-		'idx': 25,
+		'idx': 24,
 		'in_filter': 0,
 		'label': 'Posting Time',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03386',
 		'no_column': None,
@@ -1198,10 +1162,10 @@
 		'fieldtype': 'Link',
 		'hidden': None,
 		'icon': None,
-		'idx': 26,
+		'idx': 25,
 		'in_filter': None,
 		'label': 'Amended From',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03387',
 		'no_column': None,
@@ -1234,10 +1198,10 @@
 		'fieldtype': 'Data',
 		'hidden': None,
 		'icon': None,
-		'idx': 27,
+		'idx': 26,
 		'in_filter': None,
 		'label': 'Transporter',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03388',
 		'no_column': None,
@@ -1270,10 +1234,10 @@
 		'fieldtype': 'Select',
 		'hidden': None,
 		'icon': None,
-		'idx': 28,
+		'idx': 27,
 		'in_filter': None,
 		'label': 'Is Excisable Goods',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03389',
 		'no_column': None,
@@ -1306,10 +1270,10 @@
 		'fieldtype': 'Select',
 		'hidden': None,
 		'icon': None,
-		'idx': 29,
+		'idx': 28,
 		'in_filter': None,
 		'label': 'Excisable Goods',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03390',
 		'no_column': None,
@@ -1342,10 +1306,10 @@
 		'fieldtype': 'Select',
 		'hidden': 1,
 		'icon': None,
-		'idx': 30,
+		'idx': 29,
 		'in_filter': None,
 		'label': 'Under Rule',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03391',
 		'no_column': None,
@@ -1378,10 +1342,10 @@
 		'fieldtype': 'Text',
 		'hidden': None,
 		'icon': None,
-		'idx': 31,
+		'idx': 30,
 		'in_filter': None,
 		'label': 'Remarks',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03392',
 		'no_column': None,
@@ -1414,10 +1378,10 @@
 		'fieldtype': 'Data',
 		'hidden': 1,
 		'icon': None,
-		'idx': 32,
+		'idx': 31,
 		'in_filter': 0,
 		'label': 'Cancel Reason',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03393',
 		'no_column': None,
@@ -1450,10 +1414,10 @@
 		'fieldtype': 'Section Break',
 		'hidden': None,
 		'icon': None,
-		'idx': 33,
+		'idx': 32,
 		'in_filter': None,
 		'label': 'Items',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03394',
 		'no_column': None,
@@ -1486,17 +1450,17 @@
 		'fieldtype': 'Button',
 		'hidden': None,
 		'icon': None,
-		'idx': 34,
+		'idx': 33,
 		'in_filter': None,
-		'label': 'Get Current Stock',
-		'modified': '2011-05-19 09:46:27',
+		'label': 'Get Stock and Rate',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03395',
 		'no_column': None,
 		'no_copy': None,
 		'oldfieldname': None,
 		'oldfieldtype': 'Button',
-		'options': 'get_current_stock',
+		'options': 'get_stock_and_rate',
 		'owner': 'Administrator',
 		'parent': 'Stock Entry',
 		'parentfield': 'fields',
@@ -1522,10 +1486,10 @@
 		'fieldtype': 'Column Break',
 		'hidden': None,
 		'icon': None,
-		'idx': 35,
+		'idx': 34,
 		'in_filter': None,
 		'label': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03396',
 		'no_column': None,
@@ -1558,10 +1522,10 @@
 		'fieldtype': 'Button',
 		'hidden': 0,
 		'icon': None,
-		'idx': 36,
+		'idx': 35,
 		'in_filter': None,
 		'label': 'Get Items',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03397',
 		'no_column': None,
@@ -1594,10 +1558,10 @@
 		'fieldtype': 'Section Break',
 		'hidden': None,
 		'icon': None,
-		'idx': 37,
+		'idx': 36,
 		'in_filter': None,
 		'label': None,
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03398',
 		'no_column': None,
@@ -1630,10 +1594,10 @@
 		'fieldtype': 'Table',
 		'hidden': None,
 		'icon': None,
-		'idx': 38,
+		'idx': 37,
 		'in_filter': None,
 		'label': 'MTN Details',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03399',
 		'no_column': None,
@@ -1666,10 +1630,10 @@
 		'fieldtype': 'Currency',
 		'hidden': None,
 		'icon': None,
-		'idx': 39,
+		'idx': 38,
 		'in_filter': None,
 		'label': 'Total Amount',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03400',
 		'no_column': None,
@@ -1702,10 +1666,10 @@
 		'fieldtype': 'Section Break',
 		'hidden': None,
 		'icon': None,
-		'idx': 40,
+		'idx': 39,
 		'in_filter': None,
 		'label': 'Other Details',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03401',
 		'no_column': None,
@@ -1738,10 +1702,10 @@
 		'fieldtype': 'Link',
 		'hidden': None,
 		'icon': None,
-		'idx': 41,
+		'idx': 40,
 		'in_filter': 1,
 		'label': 'Company',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03402',
 		'no_column': None,
@@ -1774,10 +1738,10 @@
 		'fieldtype': 'Select',
 		'hidden': None,
 		'icon': None,
-		'idx': 42,
+		'idx': 41,
 		'in_filter': 0,
 		'label': 'Fiscal Year',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
 		'name': 'FL03403',
 		'no_column': None,
@@ -1800,7 +1764,7 @@
 	{
 		'allow_on_submit': None,
 		'colour': None,
-		'creation': '2010-08-19 11:08:48',
+		'creation': '2010-08-19 11:08:49',
 		'default': None,
 		'depends_on': None,
 		'description': None,
@@ -1810,12 +1774,12 @@
 		'fieldtype': 'Link',
 		'hidden': None,
 		'icon': None,
-		'idx': 43,
+		'idx': 42,
 		'in_filter': None,
 		'label': 'Select Print Heading',
-		'modified': '2011-05-19 09:46:27',
+		'modified': '2011-06-14 12:50:12',
 		'modified_by': 'Administrator',
-		'name': 'FL03754',
+		'name': 'FL03766',
 		'no_column': None,
 		'no_copy': None,
 		'oldfieldname': 'select_print_heading',
diff --git a/material_management/doctype/valuation_control/valuation_control.py b/material_management/doctype/valuation_control/valuation_control.py
index c23753f..131c71b 100644
--- a/material_management/doctype/valuation_control/valuation_control.py
+++ b/material_management/doctype/valuation_control/valuation_control.py
@@ -69,7 +69,6 @@
 		in_rate = 0
 		val_method = self.get_valuation_method(item)
 		bin_obj = get_obj('Warehouse',warehouse).get_bin(item)
-		
 		if serial_no:
 			in_rate = self.get_serializable_inventory_rate(serial_no)
 		elif val_method == 'FIFO':
@@ -77,7 +76,7 @@
 			if qty:
 				prev_sle = bin_obj.get_prev_sle(posting_date, posting_time)
 				fcfs_stack = eval(prev_sle.get('fcfs_stack', '[]') or '[]')
-				in_rate = fcfs_stack and self.get_fifo_rate(fcfs_stack, qty) or 0				
+				in_rate = fcfs_stack and self.get_fifo_rate(fcfs_stack, qty) or 0
 		elif val_method == 'Moving Average':
 			prev_sle = bin_obj.get_prev_sle(posting_date, posting_time)
 			in_rate = prev_sle and prev_sle.get('valuation_rate', 0) or 0
diff --git a/material_management/doctype/valuation_control/valuation_control.py~ b/material_management/doctype/valuation_control/valuation_control.py~
new file mode 100644
index 0000000..82e7fb9
--- /dev/null
+++ b/material_management/doctype/valuation_control/valuation_control.py~
@@ -0,0 +1,87 @@
+# Please edit this list and import only required elements
+import webnotes
+
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.model import db_exists
+from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
+from webnotes.model.doclist import getlist, copy_doclist
+from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
+from webnotes import session, form, is_testing, msgprint, errprint
+
+set = webnotes.conn.set
+sql = webnotes.conn.sql
+get_value = webnotes.conn.get_value
+in_transaction = webnotes.conn.in_transaction
+convert_to_lists = webnotes.conn.convert_to_lists
+	
+# -----------------------------------------------------------------------------------------
+
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
+
+	# Get FIFO Rate from Stack
+	# -------------------------
+	def get_fifo_rate(self, fcfs_stack, qty):
+		fcfs_val = 0
+		withdraw = flt(qty)
+		while withdraw:
+			batch = fcfs_stack[0]				
+			if batch[0] <= withdraw:
+				# not enough or exactly same qty in current batch, clear batch
+				withdraw -= batch[0]
+				fcfs_val += (flt(batch[0]) * flt(batch[1]))
+				fcfs_stack.pop(0)
+			else:
+				# all from current batch
+				fcfs_val += (flt(withdraw) * flt(batch[1]))
+				batch[0] -= withdraw
+				withdraw = 0
+		fcfs_rate = flt(fcfs_val) / flt(qty)
+		return fcfs_rate
+
+	# --------------------------------
+	# get serializable inventory rate
+	# --------------------------------
+	def get_serializable_inventory_rate(self, serial_no):
+		sr_nos = get_obj("Stock Ledger").get_sr_no_list(serial_no)
+		tot = 0
+		for s in sr_nos:
+			serial_no = s.strip()
+			tot += flt(get_value('Serial No', serial_no, 'purchase_rate'))
+		return tot / len(sr_nos)
+
+
+	# ---------------------
+	# get valuation method
+	# ---------------------
+	def get_valuation_method(self, item_code):
+		val_method = webnotes.conn.get_value('Item', item_code, 'valuation_method')
+		if not val_method:
+			val_method = get_defaults().get('valuation_method', 'FIFO')
+		return val_method
+		
+
+	# Get Incoming Rate based on valuation method
+	# --------------------------------------------
+	def get_incoming_rate(self, posting_date, posting_time, item, warehouse, qty = 0, serial_no = ''):
+		msgprint(1)
+		in_rate = 0
+		val_method = self.get_valuation_method(item)
+		bin_obj = get_obj('Warehouse',warehouse).get_bin(item)
+		if serial_no:
+			in_rate = self.get_serializable_inventory_rate(serial_no)
+		elif val_method == 'FIFO':
+			in_rate = 0
+			if qty:
+				prev_sle = bin_obj.get_prev_sle(posting_date, posting_time)
+				msgprint(prev_sle)
+				fcfs_stack = eval(prev_sle.get('fcfs_stack', '[]') or '[]')
+				msgprint(fcfs_stack)
+				in_rate = fcfs_stack and self.get_fifo_rate(fcfs_stack, qty) or 0
+				msgprint(in_rate)
+		elif val_method == 'Moving Average':
+			prev_sle = bin_obj.get_prev_sle(posting_date, posting_time)
+			in_rate = prev_sle and prev_sle.get('valuation_rate', 0) or 0
+		return in_rate
diff --git a/patches/patch.py b/patches/patch.py
index 9b9255b..bb670a4 100644
--- a/patches/patch.py
+++ b/patches/patch.py
@@ -1,6 +1,6 @@
 # REMEMBER to update this
 # ========================
-last_patch = 277
+last_patch = 278
 
 #-------------------------------------------
 
@@ -1108,4 +1108,5 @@
 		delete_pages = ('Chat User Gallery', 'Badge Info', 'Home', 'Website Setup', 'Test Page', 'Setup Masters', 'Service', 'Selling', 'Sales Reports', 'Organize','My Cart', 'My Activity', 'Manage Users', 'Maintenance', 'Getting Started', 'Gantt Test', 'Custom Reports - Stock', 'Custom Reports - Selling', 'Custom Reports - Production', 'Custom Reports - Payroll', 'Custom Reports - Maintenance', 'Custom Reports - Buying', 'Custom Reports - Accounts', 'CRM Setup', 'CRM Reports')
 		for p in delete_pages:
 		  webnotes.model.delete_doc('Page',p)
-		
\ No newline at end of file
+	elif patch_no == 278:
+		sql("update tabDocTrigger set method = 'home.update_feed' where method = 'event_updates.update_feed'")
