diff --git a/accounts/search_criteria/accounts_receivable/accounts_receivable.py b/accounts/search_criteria/accounts_receivable/accounts_receivable.py
index 7d13d00..34aafe5 100644
--- a/accounts/search_criteria/accounts_receivable/accounts_receivable.py
+++ b/accounts/search_criteria/accounts_receivable/accounts_receivable.py
@@ -165,4 +165,4 @@
 	t_row[col_idx['Voucher No']] = 'Total'
 	t_row[col_idx['Opening Amt']] = total_booking_amt
 	t_row[col_idx['Outstanding Amt']] = total_outstanding_amt
-	out.append(t_row)
+	out.append(t_row)
\ No newline at end of file
diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py
index 814d646..092640d 100644
--- a/buying/doctype/purchase_order/purchase_order.py
+++ b/buying/doctype/purchase_order/purchase_order.py
@@ -162,42 +162,50 @@
 		# Check for stopped status
 		self.check_for_stopped_status(pc_obj)
 		
-			
 		 # get total in words
 		dcc = TransactionBase().get_company_currency(self.doc.company)
 		self.doc.in_words = pc_obj.get_total_in_words(dcc, self.doc.grand_total)
 		self.doc.in_words_import = pc_obj.get_total_in_words(self.doc.currency, self.doc.grand_total_import)
 	
-	# update bin
-	# ----------
+
 	def update_bin(self, is_submit, is_stopped = 0):
 		pc_obj = get_obj('Purchase Common')
 		for d in getlist(self.doclist, 'po_details'):
 			#1. Check if is_stock_item == 'Yes'
-			if sql("select is_stock_item from tabItem where name=%s", d.item_code)[0][0]=='Yes':
-				
+			if webnotes.conn.get_value("Item", d.item_code, "is_stock_item") == "Yes":
 				ind_qty, po_qty = 0, flt(d.qty) * flt(d.conversion_factor)
 				if is_stopped:
-					po_qty = flt(d.qty) > flt(d.received_qty) and flt( flt(flt(d.qty) - flt(d.received_qty)) * flt(d.conversion_factor))or 0 
+					po_qty = flt(d.qty) > flt(d.received_qty) and \
+						flt( flt(flt(d.qty) - flt(d.received_qty))*flt(d.conversion_factor)) or 0 
 				
 				# No updates in Purchase Request on Stop / Unstop
 				if cstr(d.prevdoc_doctype) == 'Purchase Request' and not is_stopped:
 					# get qty and pending_qty of prevdoc 
-					curr_ref_qty = pc_obj.get_qty( d.doctype, 'prevdoc_detail_docname', d.prevdoc_detail_docname, 'Purchase Request Item', 'Purchase Request - Purchase Order', self.doc.name)
-					max_qty, qty, curr_qty = flt(curr_ref_qty.split('~~~')[1]), flt(curr_ref_qty.split('~~~')[0]), 0
+					curr_ref_qty = pc_obj.get_qty(d.doctype, 'prevdoc_detail_docname',
+					 	d.prevdoc_detail_docname, 'Purchase Request Item', 
+						'Purchase Request - Purchase Order', self.doc.name)
+					max_qty, qty, curr_qty = flt(curr_ref_qty.split('~~~')[1]), \
+					 	flt(curr_ref_qty.split('~~~')[0]), 0
 					
 					if flt(qty) + flt(po_qty) > flt(max_qty):
 						curr_qty = flt(max_qty) - flt(qty)
-						# special case as there is no restriction for Purchase Request - Purchase Order 
-						curr_qty = (curr_qty > 0) and curr_qty or 0
+						# special case as there is no restriction 
+						# for Purchase Request - Purchase Order 
+						curr_qty = curr_qty > 0 and curr_qty or 0
 					else:
 						curr_qty = flt(po_qty)
 					
 					ind_qty = -flt(curr_qty)
 
-				#==> Update Bin's Purchase Request Qty by +- ind_qty and Ordered Qty by +- qty
-				get_obj('Warehouse', d.warehouse).update_bin(0, 0, (is_submit and 1 or -1) * flt(po_qty), (is_submit and 1 or -1) * flt(ind_qty), 0, d.item_code, self.doc.transaction_date)
-
+				# Update ordered_qty and indented_qty in bin
+				args = {
+					"item_code" : d.item_code,
+					"ordered_qty" : (is_submit and 1 or -1) * flt(po_qty),
+					"indented_qty" : (is_submit and 1 or -1) * flt(ind_qty),
+					"posting_date": self.doc.transaction_date
+				}
+				get_obj("Warehouse", d.warehouse).update_bin(args)
+				
 	def check_modified_date(self):
 		mod_db = sql("select modified from `tabPurchase Order` where name = '%s'" % self.doc.name)
 		date_diff = sql("select TIMEDIFF('%s', '%s')" % ( mod_db[0][0],cstr(self.doc.modified)))
diff --git a/buying/doctype/purchase_request/purchase_request.py b/buying/doctype/purchase_request/purchase_request.py
index a1b0985..a4373a8 100644
--- a/buying/doctype/purchase_request/purchase_request.py
+++ b/buying/doctype/purchase_request/purchase_request.py
@@ -167,32 +167,29 @@
 		# Validate qty against SO
 		self.validate_qty_against_so()
 
-
-	# On Submit Functions
-	#----------------------------------------------------------------------------
 	
-	# Update Quantity Requested for Purchase in Bin
 	def update_bin(self, is_submit, is_stopped):
+		""" Update Quantity Requested for Purchase in Bin"""
+		
 		for d in getlist(self.doclist, 'indent_details'):
-			# Step 1:=> Check if is_stock_item == 'Yes'
-			if cstr(sql("select is_stock_item from `tabItem` where name = '%s'" % cstr(d.item_code))[0][0]) == 'Yes':
+			if webnotes.conn.get_value("Item", d.item_code, "is_stock_item") == "Yes":
 				if not d.warehouse:
-					msgprint('Please Enter Warehouse for Item %s as it is stock item.' % cstr(d.item_code))
-					raise Exception
-				# Step 2:=> Set Qty 
+					msgprint("Please Enter Warehouse for Item %s as it is stock item" 
+						% cstr(d.item_code), raise_exception=1)
+						
 				qty =flt(d.qty)
 				if is_stopped:
-					qty = (d.qty > d.ordered_qty) and flt(flt(d.qty) - flt(d.ordered_qty)) or 0 
-				# Step 3 :=> Update Bin's Purchase Request Qty by +- qty 
-				get_obj('Warehouse', d.warehouse).update_bin(0, 0, 0, (is_submit and 1 or -1) * flt(qty), 0, d.item_code, self.doc.transaction_date)		
+					qty = (d.qty > d.ordered_qty) and flt(flt(d.qty) - flt(d.ordered_qty)) or 0
+				
+				args = {
+					"item_code": d.item_code,
+					"indented_qty": (is_submit and 1 or -1) * flt(qty),
+					"posting_date": self.doc.transaction_date
+				}
+				get_obj('Warehouse', d.warehouse).update_bin(args)		
 		
-	# On Submit			
-	#---------------------------------------------------------------------------
 	def on_submit(self):
-		# Step 1:=> Set Status
 		set(self.doc,'status','Submitted')
-
-		# Step 2:=> Update Bin
 		self.update_bin(is_submit = 1, is_stopped = 0)
 	
 	def check_modified_date(self):
@@ -202,9 +199,7 @@
 		if date_diff and date_diff[0][0]:
 			msgprint(cstr(self.doc.doctype) +" => "+ cstr(self.doc.name) +" has been modified. Please Refresh. ")
 			raise Exception
-	
-	# On Stop / unstop
-	#------------------------------------------------------------------------------
+
 	def update_status(self, status):
 		self.check_modified_date()
 		# Step 1:=> Update Bin
@@ -216,8 +211,7 @@
 		# Step 3:=> Acknowledge User
 		msgprint(self.doc.doctype + ": " + self.doc.name + " has been %s." % ((status == 'Submitted') and 'Unstopped' or cstr(status)) )
  
-	# On Cancel
-	#-----------------------------------------------------------------------------
+
 	def on_cancel(self):
 		# Step 1:=> Get Purchase Common Obj
 		pc_obj = get_obj(dt='Purchase Common')
diff --git a/patches/july_2012/repost_stock_due_to_wrong_packing_list.py b/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
index 449dd1f..b202902 100644
--- a/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
+++ b/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
@@ -24,27 +24,33 @@
 		i += 1
 		print i
 		reserved_qty = webnotes.conn.sql("""
-			select sum((dnpi_qty / so_item_qty) * (so_item_qty - so_item_delivered_qty))
-			from (select
-			qty as dnpi_qty,
-			(
-				select qty from `tabSales Order Item`
-				where name = dnpi.parent_detail_docname
-			) as so_item_qty,
-			(
-				select ifnull(delivered_qty, 0) from `tabSales Order Item`
-				where name = dnpi.parent_detail_docname
-			) as so_item_delivered_qty
+			select 
+				sum((dnpi_qty / so_item_qty) * (so_item_qty - so_item_delivered_qty))
 			from 
-			(
-				select qty, parent_detail_docname
-				from `tabDelivery Note Packing Item` dnpi_in
-				where item_code = %s and warehouse = %s
-				and parenttype="Sales Order"
-				and exists (select * from `tabSales Order` so
-				where name = dnpi_in.parent and docstatus = 1 and status != 'Stopped')
-			) dnpi) tab
-			where so_item_qty >= so_item_delivered_qty""", (d[0], d[1]))
+				(
+					select
+						qty as dnpi_qty,
+						(
+							select qty from `tabSales Order Item`
+							where name = dnpi.parent_detail_docname
+						) as so_item_qty,
+						(
+							select ifnull(delivered_qty, 0) from `tabSales Order Item`
+							where name = dnpi.parent_detail_docname
+						) as so_item_delivered_qty
+					from 
+					(
+						select qty, parent_detail_docname
+						from `tabDelivery Note Packing Item` dnpi_in
+						where item_code = %s and warehouse = %s
+						and parenttype="Sales Order"
+						and exists (select * from `tabSales Order` so
+						where name = dnpi_in.parent and docstatus = 1 and status != 'Stopped')
+					) dnpi
+				) tab 
+			where 
+				so_item_qty >= so_item_delivered_qty
+		""", (d[0], d[1]))
 
 		if flt(d[3]) != flt(reserved_qty[0][0]):
 			print d[3], reserved_qty[0][0]
diff --git a/production/doctype/production_order/production_order.py b/production/doctype/production_order/production_order.py
index 915c80d..5be3edc 100644
--- a/production/doctype/production_order/production_order.py
+++ b/production/doctype/production_order/production_order.py
@@ -58,57 +58,63 @@
 
 	def validate(self):
 		if self.doc.production_item :
-			item_detail = sql("select name from `tabItem` where name = '%s' and docstatus != 2" % self.doc.production_item, as_dict = 1)
+			item_detail = sql("select name from `tabItem` where name = '%s' and docstatus != 2"
+			 	% self.doc.production_item, as_dict = 1)
 			if not item_detail:
-				msgprint("Item '%s' does not exist or cancelled in the system." % cstr(self.doc.production_item))
-				raise Exception
+				msgprint("Item '%s' does not exist or cancelled in the system." 
+					% cstr(self.doc.production_item), raise_exception=1)
 
 		if self.doc.bom_no:
 			bom = sql("""select name from `tabBOM`	where name = %s and docstatus = 1 
-				and is_active = 'Yes' and item = %s""", (self.doc.bom_no, self.doc.production_item), as_dict =1)
+				and is_active = 'Yes' and item = %s"""
+				, (self.doc.bom_no, self.doc.production_item), as_dict =1)
 			if not bom:
 				msgprint("""Incorrect BOM: %s entered. 
-					May be BOM not exists or inactive or not submitted or for some other item.""" % cstr(self.doc.bom_no))
-				raise Exception
+					May be BOM not exists or inactive or not submitted 
+					or for some other item.""" % cstr(self.doc.bom_no), raise_exception=1)
 
 
 	def stop_unstop(self, status):
 		""" Called from client side on Stop/Unstop event"""
 		self.update_status(status)
-		# Update Planned Qty of Production Item
-		qty = (flt(self.doc.qty) - flt(self.doc.produced_qty)) * ((status == 'Stopped') and -1 or 1)
-		get_obj('Warehouse', self.doc.fg_warehouse).update_bin(0, 0, 0, 0, flt(qty), self.doc.production_item, now())
+		qty = (flt(self.doc.qty)-flt(self.doc.produced_qty)) * ((status == 'Stopped') and -1 or 1)
+		self.update_planned_qty(qty)
 		msgprint("Production Order has been %s" % status)
 
 
-
 	def update_status(self, status):
 		if status == 'Stopped':
-			set(self.doc, 'status', cstr(status))
+			webnotes.conn.set(self.doc, 'status', cstr(status))
 		else:
 			if flt(self.doc.qty) == flt(self.doc.produced_qty):
-				set(self.doc, 'status', 'Completed')
+				webnotes.conn.set(self.doc, 'status', 'Completed')
 			if flt(self.doc.qty) > flt(self.doc.produced_qty):
-				set(self.doc, 'status', 'In Process')
+				webnotes.conn.set(self.doc, 'status', 'In Process')
 			if flt(self.doc.produced_qty) == 0:
-				set(self.doc, 'status', 'Submitted')
+				webnotes.conn.set(self.doc, 'status', 'Submitted')
 
 
 	def on_submit(self):
-		set(self.doc,'status', 'Submitted')
-		# increase Planned Qty of Prooduction Item by Qty
-		get_obj('Warehouse', self.doc.fg_warehouse).update_bin(0, 0, 0, 0,flt(self.doc.qty), self.doc.production_item, now())
-
-
+		webnotes.conn.set(self.doc,'status', 'Submitted')
+		self.update_planned_qty(self.doc.qty)
+		
 
 	def on_cancel(self):
 		# Check whether any stock entry exists against this Production Order
-		st = sql("select name from `tabStock Entry` where production_order = '%s' and docstatus = 1" % cstr(self.doc.name))
-		if st and st[0][0]:
+		stock_entry = sql("""select name from `tabStock Entry` 
+			where production_order = %s and docstatus = 1""", self.doc.name)
+		if stock_entry:
 			msgprint("""Submitted Stock Entry %s exists against this production order. 
-				Hence can not be cancelled.""" % st[0][0])
-			raise Exception
+				Hence can not be cancelled.""" % stock_entry[0][0], raise_exception=1)
 
-		set(self.doc,'status', 'Cancelled')
-		# decrease Planned Qty of Prooduction Item by Qty
-		get_obj('Warehouse', self.doc.fg_warehouse).update_bin(0, 0, 0, 0,-flt(self.doc.qty), self.doc.production_item, now())
+		webnotes.conn.set(self.doc,'status', 'Cancelled')
+		self.update_planned_qty(-self.doc.qty)
+
+	def update_planned_qty(self, qty):
+		"""update planned qty in bin"""
+		args = {
+			"item_code": self.doc.production_item,
+			"posting_date": nowdate(),
+			"planned_qty": flt(qty)
+		}
+		get_obj('Warehouse', self.doc.fg_warehouse).update_bin(args)
\ No newline at end of file
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index 7b677c5..f05500d 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -350,7 +350,6 @@
 	def on_submit(self):
 		self.check_prev_docstatus()		
 		self.update_stock_ledger(update_stock = 1)
-		self.set_sms_msg(1)
 		# update customer's last sales order no.
 		update_customer = sql("update `tabCustomer` set last_sales_order = '%s', modified = '%s' where name = '%s'" %(self.doc.name, self.doc.modified, self.doc.customer))
 		get_obj('Sales Common').check_credit(self,self.doc.grand_total)
@@ -373,7 +372,6 @@
 			raise Exception
 		self.check_nextdoc_docstatus()
 		self.update_stock_ledger(update_stock = -1)
-		self.set_sms_msg()
 		
 		#update prevdoc status
 		self.update_prevdoc_status('cancel')
@@ -405,75 +403,44 @@
 	def check_modified_date(self):
 		mod_db = sql("select modified from `tabSales Order` where name = '%s'" % self.doc.name)
 		date_diff = sql("select TIMEDIFF('%s', '%s')" % ( mod_db[0][0],cstr(self.doc.modified)))
-		
 		if date_diff and date_diff[0][0]:
-			msgprint(cstr(self.doc.doctype) +" => "+ cstr(self.doc.name) +" has been modified. Please Refresh. ")
-			raise Exception
+			msgprint("%s: %s has been modified after you have opened. Please Refresh"
+				% (self.doc.doctype, self.doc.name), raise_exception=1)
 
-	# STOP SALES ORDER
-	# ==============================================================================================			
-	# Stops Sales Order & no more transactions will be created against this Sales Order
 	def stop_sales_order(self):
 		self.check_modified_date()
 		self.update_stock_ledger(update_stock = -1,clear = 1)
-		# ::::::::: SET SO STATUS ::::::::::
 		set(self.doc, 'status', 'Stopped')
-		msgprint(self.doc.doctype + ": " + self.doc.name + " has been Stopped. To make transactions against this Sales Order you need to Unstop it.")
+		msgprint("""%s: %s has been Stopped. To make transactions against this Sales Order 
+			you need to Unstop it.""" % (self.doc.doctype, self.doc.name))
 
-	# UNSTOP SALES ORDER
-	# ==============================================================================================			
-	# Unstops Sales Order & now transactions can be continued against this Sales Order
 	def unstop_sales_order(self):
 		self.check_modified_date()
 		self.update_stock_ledger(update_stock = 1,clear = 1)
-		# ::::::::: SET SO STATUS ::::::::::
 		set(self.doc, 'status', 'Submitted')
-		msgprint(self.doc.doctype + ": " + self.doc.name + " has been Unstopped.")
+		msgprint("%s: %s has been Unstopped" % (self.doc.doctype, self.doc.name))
 
-	# UPDATE STOCK LEDGER
-	# ===============================================================================================
+
 	def update_stock_ledger(self, update_stock, clear = 0):
 		for d in self.get_item_list(clear):
-			stock_item = sql("SELECT is_stock_item FROM tabItem where name = '%s'"%(d['item_code']),as_dict = 1)
-			# stock ledger will be updated only if it is a stock item
-			if stock_item and stock_item[0]['is_stock_item'] == "Yes":
+			if webnotes.conn.get_value("Item", d['item_code'], "is_stock_item") == "Yes":
 				if not d['reserved_warehouse']:
-					msgprint("Message: Please enter Reserved Warehouse for item %s as it is stock item."% d['item_code'])
-					raise Exception
-				bin = get_obj('Warehouse', d['reserved_warehouse']).update_bin( 0, flt(update_stock) * flt(d['qty']), \
-					0, 0, 0, d['item_code'], self.doc.transaction_date,doc_type=self.doc.doctype,\
-					doc_name=self.doc.name, is_amended = (self.doc.amended_from and 'Yes' or 'No'))
-	
-	# Gets Items from packing list
-	#=================================
+					msgprint("""Please enter Reserved Warehouse for item %s 
+						as it is stock ite""" % d['item_code'], raise_exception=1)
+						
+				args = {
+					"item_code": d['item_code'],
+					"reserved_qty": flt(update_stock) * flt(d['qty']),
+					"posting_date": self.doc.transaction_date,
+					"doc_type": self.doc.doctype,
+					"doc_name": self.doc.name,
+					"is_amended": self.doc.amended_from and 'Yes' or 'No'
+				}
+				get_obj('Warehouse', d['reserved_warehouse']).update_bin(args)
+				
+				
 	def get_item_list(self, clear):
 		return get_obj('Sales Common').get_item_list( self, clear)
-		
-	# SET MESSAGE FOR SMS
-	#======================
-	def set_sms_msg(self, is_submitted = 0):
-		if is_submitted:
-			if not self.doc.amended_from:
-				msg = 'Sales Order: '+self.doc.name+' has been made against PO no: '+cstr(self.doc.po_no)
-				set(self.doc, 'message', msg)
-			else:
-				msg = 'Sales Order has been amended. New SO no:'+self.doc.name
-				set(self.doc, 'message', msg)
-		else:
-			msg = 'Sales Order: '+self.doc.name+' has been cancelled.'
-			set(self.doc, 'message', msg)
-		
-	# SEND SMS
-	# =========
-	def send_sms(self):
-		if not self.doc.customer_mobile_no:
-			msgprint("Please enter customer mobile no")
-		elif not self.doc.message:
-			msgprint("Please enter the message you want to send")
-		else:
-			msgprint(get_obj("SMS Control", "SMS Control").send_sms([self.doc.customer_mobile_no,], self.doc.message))
 
-	# on update
 	def on_update(self):
-		pass
-
+		pass
\ No newline at end of file
diff --git a/setup/doctype/global_defaults/global_defaults.txt b/setup/doctype/global_defaults/global_defaults.txt
index d1175b7..f68c6d3 100644
--- a/setup/doctype/global_defaults/global_defaults.txt
+++ b/setup/doctype/global_defaults/global_defaults.txt
@@ -3,11 +3,11 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-20 14:02:53',
-		'docstatus': 0,
-		'modified': '2012-05-22 14:11:21',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
+		u'creation': '2012-07-03 13:30:02',
+		u'docstatus': 0,
+		u'modified': '2012-10-23 10:57:41',
+		u'modified_by': u'Administrator',
+		u'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
@@ -18,12 +18,12 @@
 		'allow_print': 1,
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
-		'doctype': 'DocType',
+		u'doctype': u'DocType',
 		'hide_toolbar': 0,
 		'in_create': 1,
 		'issingle': 1,
 		'module': u'Setup',
-		'name': '__common__',
+		u'name': u'__common__',
 		'read_only': 1,
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
@@ -33,8 +33,8 @@
 
 	# These values are common for all DocField
 	{
-		'doctype': u'DocField',
-		'name': '__common__',
+		u'doctype': u'DocField',
+		u'name': u'__common__',
 		'parent': u'Global Defaults',
 		'parentfield': u'fields',
 		'parenttype': u'DocType',
@@ -43,8 +43,8 @@
 
 	# These values are common for all DocPerm
 	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
+		u'doctype': u'DocPerm',
+		u'name': u'__common__',
 		'parent': u'Global Defaults',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
@@ -53,57 +53,13 @@
 
 	# DocType, Global Defaults
 	{
-		'doctype': 'DocType',
-		'name': u'Global Defaults'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'System Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'System Manager',
-		'write': 1
+		u'doctype': u'DocType',
+		u'name': u'Global Defaults'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'company',
 		'fieldtype': u'Section Break',
 		'label': u'Company'
@@ -111,7 +67,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_company',
 		'fieldtype': u'Link',
 		'label': u'Default Company',
@@ -121,7 +77,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'current_fiscal_year',
 		'fieldtype': u'Link',
 		'label': u'Current Fiscal Year',
@@ -131,7 +87,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'date_format',
 		'fieldtype': u'Select',
 		'label': u'Date Format',
@@ -140,7 +96,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break1',
 		'fieldtype': u'Column Break',
 		'width': u'50%'
@@ -149,7 +105,7 @@
 	# DocField
 	{
 		'default': u'INR',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_currency',
 		'fieldtype': u'Select',
 		'label': u'Default Currency',
@@ -159,7 +115,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_currency_format',
 		'fieldtype': u'Select',
 		'label': u'Default Currency Format',
@@ -168,7 +124,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_currency_fraction',
 		'fieldtype': u'Data',
 		'label': u'Default Currency Fraction'
@@ -176,7 +132,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'stock',
 		'fieldtype': u'Section Break',
 		'label': u'Stock'
@@ -184,7 +140,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break2',
 		'fieldtype': u'Column Break',
 		'width': u'50%'
@@ -192,7 +148,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_item_group',
 		'fieldtype': u'Link',
 		'label': u'Default Item Group',
@@ -201,7 +157,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'ighelp',
 		'fieldtype': u'HTML',
 		'label': u'IGHelp',
@@ -210,7 +166,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_stock_uom',
 		'fieldtype': u'Link',
 		'label': u'Default Stock UOM',
@@ -219,18 +175,9 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'default_valuation_method',
-		'fieldtype': u'Select',
-		'label': u'Default Valuation Method',
-		'options': u'FIFO\nMoving Average'
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
 		'description': u'Applicable only if valuation method is moving average',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'allow_negative_stock',
 		'fieldtype': u'Check',
 		'label': u'Allow Negative Stock'
@@ -238,7 +185,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_warehouse_type',
 		'fieldtype': u'Link',
 		'label': u'Default Warehouse Type',
@@ -247,7 +194,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'auto_indent',
 		'fieldtype': u'Check',
 		'label': u'Raise Purchase Request when stock reaches re-order level'
@@ -256,7 +203,7 @@
 	# DocField
 	{
 		'default': u'1',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break3',
 		'fieldtype': u'Column Break',
 		'width': u'50%'
@@ -266,7 +213,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Percentage you are allowed to receive or deliver more against the quantity ordered. <p>For example: If you have ordered 100 units. and your Allowance is 10% then you are allowed to receive 110 units</p>',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'tolerance',
 		'fieldtype': u'Currency',
 		'label': u'Allowance Percent'
@@ -276,7 +223,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Stock level frozen up to this date, nobody can do / modify entry except authorized person',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'stock_frozen_upto',
 		'fieldtype': u'Date',
 		'label': u'Stock Frozen Upto'
@@ -286,7 +233,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Users with this role are allowed to do / modify stock entry before frozen date',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'stock_auth_role',
 		'fieldtype': u'Link',
 		'label': u'Authorized Role (Frozen Entry)',
@@ -295,7 +242,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'accounts',
 		'fieldtype': u'Section Break',
 		'label': u'Accounts'
@@ -305,7 +252,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Accounting entry frozen up to this date, nobody can do / modify entry except authorized person',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'acc_frozen_upto',
 		'fieldtype': u'Date',
 		'label': u'Accounts Frozen Upto'
@@ -315,7 +262,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Users with this role are allowed to do / modify accounting entry before frozen date',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'bde_auth_role',
 		'fieldtype': u'Link',
 		'label': u'Authourized Role (Frozen Entry)',
@@ -324,7 +271,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'credit_controller',
 		'fieldtype': u'Link',
 		'label': u'Credit Controller',
@@ -333,14 +280,14 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break4',
 		'fieldtype': u'Column Break'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'account_info',
 		'fieldtype': u'HTML',
 		'label': u'Account Info',
@@ -349,7 +296,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'selling',
 		'fieldtype': u'Section Break',
 		'label': u'Selling'
@@ -359,7 +306,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'Customer Name',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'cust_master_name',
 		'fieldtype': u'Select',
 		'label': u'Customer Master created by ',
@@ -368,7 +315,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_customer_group',
 		'fieldtype': u'Link',
 		'label': u'Default Customer Group',
@@ -377,7 +324,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'cghelp',
 		'fieldtype': u'HTML',
 		'label': u'CGHelp',
@@ -386,7 +333,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_territory',
 		'fieldtype': u'Link',
 		'label': u'Default Territory',
@@ -395,7 +342,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'territoryhelp',
 		'fieldtype': u'HTML',
 		'label': u'TerritoryHelp',
@@ -404,7 +351,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break5',
 		'fieldtype': u'Column Break',
 		'width': u'50%'
@@ -412,7 +359,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_price_list',
 		'fieldtype': u'Link',
 		'label': u'Default Price List',
@@ -421,7 +368,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_price_list_currency',
 		'fieldtype': u'Link',
 		'label': u'Default Price List Currency',
@@ -432,7 +379,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'No',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'so_required',
 		'fieldtype': u'Select',
 		'label': u'Sales Order Required',
@@ -443,7 +390,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'No',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'dn_required',
 		'fieldtype': u'Select',
 		'label': u'Delivery Note Required',
@@ -452,7 +399,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'buying',
 		'fieldtype': u'Section Break',
 		'label': u'Buying'
@@ -460,7 +407,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_supplier_type',
 		'fieldtype': u'Link',
 		'label': u'Default Supplier Type',
@@ -471,7 +418,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'Supplier Name',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'supp_master_name',
 		'fieldtype': u'Select',
 		'label': u'Supplier Master created by ',
@@ -480,7 +427,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break6',
 		'fieldtype': u'Column Break',
 		'width': u'50%'
@@ -490,7 +437,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'No',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'po_required',
 		'fieldtype': u'Select',
 		'label': u'Purchase Order Required',
@@ -501,7 +448,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'No',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'pr_required',
 		'fieldtype': u'Select',
 		'label': u'Purchase Receipt Required',
@@ -510,7 +457,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'maintain_same_rate',
 		'fieldtype': u'Check',
 		'label': u'Maintain same rate throughout purchase cycle'
@@ -518,7 +465,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'hr',
 		'fieldtype': u'Section Break',
 		'label': u'HR',
@@ -529,7 +476,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Employee record is created using selected field. ',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'emp_created_by',
 		'fieldtype': u'Select',
 		'label': u'Employee Records to be created by ',
@@ -538,7 +485,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'system',
 		'fieldtype': u'Section Break',
 		'label': u'System'
@@ -546,9 +493,53 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'sms_sender_name',
 		'fieldtype': u'Data',
 		'label': u'SMS Sender Name'
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'System Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'System Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'All'
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'System Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 2,
+		'role': u'System Manager',
+		'write': 1
 	}
 ]
\ No newline at end of file
diff --git a/stock/doctype/bin/bin.py b/stock/doctype/bin/bin.py
index 648d581..8da6e9c 100644
--- a/stock/doctype/bin/bin.py
+++ b/stock/doctype/bin/bin.py
@@ -23,47 +23,45 @@
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 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, msgprint, errprint
-
-
-set = webnotes.conn.set
+from webnotes import msgprint, errprint
 sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-
-
-
-# -----------------------------------------------------------------------------------------
 
 
 class DocType:	
 	def __init__(self, doc, doclist=[]):
 		self.doc = doc
 		self.doclist = doclist
-
-	def update_stock(self, actual_qty=0, reserved_qty=0, ordered_qty=0, indented_qty=0, \
-	 		planned_qty=0, dt=None, sle_id='', posting_time='', serial_no = '', \
-			is_cancelled = 'No',doc_type='',doc_name='',is_amended='No'):
-		if not dt: 
-			dt = nowdate()
-			
-		# update the stock values (for current quantities)
-		self.doc.actual_qty = flt(self.doc.actual_qty) + flt(actual_qty)
-		self.doc.ordered_qty = flt(self.doc.ordered_qty) + flt(ordered_qty)
-		self.doc.reserved_qty = flt(self.doc.reserved_qty) + flt(reserved_qty)
-		self.doc.indented_qty = flt(self.doc.indented_qty) + flt(indented_qty)
-		self.doc.planned_qty = flt(self.doc.planned_qty) + flt(planned_qty)
-		self.doc.projected_qty = flt(self.doc.actual_qty) + flt(self.doc.ordered_qty) + flt(self.doc.indented_qty) + flt(self.doc.planned_qty) - flt(self.doc.reserved_qty)
-		self.doc.save()
-		if(( flt(actual_qty)<0 or flt(reserved_qty)>0 ) and is_cancelled == 'No' and is_amended=='No'):
-			self.reorder_item(doc_type,doc_name)
 		
-		if actual_qty:
+	def update_stock(self, args):
+		if not args.get("posting_date"):
+			posting_date = nowdate()
+			
+		self.update_qty(args)
+		
+		if (flt(args.get("actual_qty")) < 0 or flt(args.get("reserved_qty")) > 0) \
+				and args.get("is_cancelled") == 'No' and args.get("is_amended")=='No':
+			self.reorder_item(args.get("doc_type"), args.get("doc_name"))
+		
+		if args.get("actual_qty"):
 			# check actual qty with total number of serial no
-			if serial_no:
+			if args.get("serial_no"):
 				self.check_qty_with_serial_no()
 				
 			# update valuation and qty after transaction for post dated entry
-			self.update_entries_after(dt, posting_time)
+			self.update_entries_after(args.get("posting_date"), args.get("posting_time"))
+		
+	def update_qty(self, args):
+		# update the stock values (for current quantities)
+		self.doc.actual_qty = flt(self.doc.actual_qty) + flt(args.get("actual_qty", 0))
+		self.doc.ordered_qty = flt(self.doc.ordered_qty) + flt(args.get("ordered_qty", 0))
+		self.doc.reserved_qty = flt(self.doc.reserved_qty) + flt(args.get("reserved_qty"))
+		self.doc.indented_qty = flt(self.doc.indented_qty) + flt(args.get("indented_qty"))
+		self.doc.planned_qty = flt(self.doc.planned_qty) + flt(args.get("planned_qty"))
+		
+		self.doc.projected_qty = flt(self.doc.actual_qty) + flt(self.doc.ordered_qty) + \
+		 	flt(self.doc.indented_qty) + flt(self.doc.planned_qty) - flt(self.doc.reserved_qty)
+		
+		self.doc.save()
 
 	def check_qty_with_serial_no(self):
 		"""
@@ -327,7 +325,7 @@
 	def reorder_item(self,doc_type,doc_name):
 		""" Reorder item if stock reaches reorder level"""
 
-		if get_value('Global Defaults', None, 'auto_indent'):
+		if webnotes.conn.get_value('Global Defaults', None, 'auto_indent'):
 			#check if re-order is required
 			ret = sql("""select re_order_level, item_name, description, brand, item_group,
 			 	lead_time_days, min_order_qty, email_notify, re_order_qty 
@@ -371,7 +369,7 @@
 		indent_details_child.save()
 		indent_obj = get_obj('Purchase Request',indent.name,with_children=1)
 		indent_obj.validate()
-		set(indent_obj.doc,'docstatus',1)
+		webnotes.conn.set(indent_obj.doc,'docstatus',1)
 		indent_obj.on_submit()
 		msgprint("""Item: %s is to be re-ordered. Purchase Request %s raised. 
 			It was generated from %s %s""" % 
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 1e0116f..bb444ec 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -244,7 +244,7 @@
 
 	def on_submit(self):
 		self.validate_packed_qty()
-		set(self.doc, 'message', 'Items against your Order #%s have been delivered. Delivery #%s: ' % (self.doc.po_no, self.doc.name))
+
 		# Check for Approving Authority
 		get_obj('Authorization Control').validate_approving_authority(self.doc.doctype, self.doc.company, self.doc.grand_total, self)
 		
@@ -342,16 +342,22 @@
 	def update_stock_ledger(self, update_stock, is_stopped = 0):
 		self.values = []
 		for d in self.get_item_list(is_stopped):
-			stock_item = sql("SELECT is_stock_item, is_sample_item FROM tabItem where name = '%s'"%(d['item_code']), as_dict = 1) # stock ledger will be updated only if it is a stock item
-			if stock_item[0]['is_stock_item'] == "Yes":
+			if webnotes.conn.get_value("Item", d['item_code'], "is_stock_item") == "Yes":
 				if not d['warehouse']:
-					msgprint("Message: Please enter Warehouse for item %s as it is stock item."% d['item_code'])
-					raise Exception
+					msgprint("Please enter Warehouse for item %s as it is stock item"
+						% d['item_code'], raise_exception=1)
+						
 				if d['reserved_qty'] < 0 :
 					# Reduce reserved qty from reserved warehouse mentioned in so
-					bin = get_obj('Warehouse', d['reserved_warehouse']).update_bin(0, flt(update_stock) * flt(d['reserved_qty']), \
-						0, 0, 0, d['item_code'], self.doc.transaction_date,doc_type=self.doc.doctype, \
-						doc_name=self.doc.name, is_amended = (self.doc.amended_from and 'Yes' or 'No'))
+					args = {
+						"item_code": d['item_code'],
+						"doc_type": self.doc.doctype,
+						"doc_name": self.doc.name,
+						"reserved_qty": flt(update_stock) * flt(d['reserved_qty']),
+						"posting_date": self.doc.posting_date,
+						"is_amended": self.doc.amended_from and 'Yes' or 'No'
+					}
+					get_obj("Warehouse", d["reserved_warehouse"]).update_bin(args)
 						
 				# Reduce actual qty from warehouse
 				self.make_sl_entry(d, d['warehouse'], - flt(d['qty']) , 0, update_stock)
@@ -383,15 +389,6 @@
 		})
 
 
-	def send_sms(self):
-		if not self.doc.customer_mobile_no:
-			msgprint("Please enter customer mobile no")
-		elif not self.doc.message:
-			msgprint("Please enter the message you want to send")
-		else:
-			msgprint(get_obj("SMS Control", "SMS Control").send_sms([self.doc.customer_mobile_no,], self.doc.message))
-
-
 	def credit_limit(self):
 		"""check credit limit of items in DN Detail which are not fetched from sales order"""
 		amount, total = 0, 0
@@ -407,5 +404,4 @@
 		self.doclist = get_obj('Sales Common').make_packing_list(self,'delivery_note_details')
 		sl = get_obj('Stock Ledger')
 		sl.scrub_serial_nos(self)
-		sl.scrub_serial_nos(self, 'packing_details')
-
+		sl.scrub_serial_nos(self, 'packing_details')
\ No newline at end of file
diff --git a/stock/doctype/item/item.txt b/stock/doctype/item/item.txt
index c624fc1..a605821 100644
--- a/stock/doctype/item/item.txt
+++ b/stock/doctype/item/item.txt
@@ -3,11 +3,11 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-07-03 13:30:46',
-		'docstatus': 0,
-		'modified': '2012-07-11 09:57:42',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
+		u'creation': '2012-07-12 22:19:45',
+		u'docstatus': 0,
+		u'modified': '2012-10-23 11:02:09',
+		u'modified_by': u'Administrator',
+		u'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
@@ -18,11 +18,11 @@
 		'autoname': u'field:item_code',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
-		'doctype': 'DocType',
+		u'doctype': u'DocType',
 		'document_type': u'Master',
 		'max_attachments': 1,
 		'module': u'Stock',
-		'name': '__common__',
+		u'name': u'__common__',
 		'search_fields': u'item_name,description,item_group,customer_code',
 		'section_style': u'Tray',
 		'server_code_error': u' ',
@@ -34,8 +34,8 @@
 
 	# These values are common for all DocField
 	{
-		'doctype': u'DocField',
-		'name': '__common__',
+		u'doctype': u'DocField',
+		u'name': u'__common__',
 		'parent': u'Item',
 		'parentfield': u'fields',
 		'parenttype': u'DocType'
@@ -43,8 +43,8 @@
 
 	# These values are common for all DocPerm
 	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
+		u'doctype': u'DocPerm',
+		u'name': u'__common__',
 		'parent': u'Item',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
@@ -53,97 +53,13 @@
 
 	# DocType, Item
 	{
-		'doctype': 'DocType',
-		'name': u'Item'
-	},
-
-	# DocPerm
-	{
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material Master Manager',
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Master Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'System Manager'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
+		u'doctype': u'DocType',
+		u'name': u'Item'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item',
 		'fieldtype': u'Section Break',
 		'label': u'Item',
@@ -154,7 +70,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'trash_reason',
 		'fieldtype': u'Small Text',
 		'label': u'Trash Reason',
@@ -167,7 +83,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Item will be saved by this name in the data base.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_code',
 		'fieldtype': u'Data',
 		'in_filter': 0,
@@ -181,7 +97,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_name',
 		'fieldtype': u'Data',
 		'in_filter': 1,
@@ -197,7 +113,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'<a href="#!Sales Browser/Item Group">Manage Item Groups</a>',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_group',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -211,7 +127,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'brand',
 		'fieldtype': u'Link',
 		'hidden': 0,
@@ -226,7 +142,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'barcode',
 		'fieldtype': u'Data',
 		'label': u'Barcode',
@@ -235,7 +151,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break0',
 		'fieldtype': u'Column Break',
 		'permlevel': 0
@@ -243,7 +159,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'description',
 		'fieldtype': u'Text',
 		'in_filter': 0,
@@ -258,7 +174,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'description_html',
 		'fieldtype': u'Text',
 		'label': u'Description HTML',
@@ -269,7 +185,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Generates HTML to include image (1st attachment) in the description',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'add_image',
 		'fieldtype': u'Button',
 		'label': u'Add Image',
@@ -278,7 +194,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'inventory',
 		'fieldtype': u'Section Break',
 		'label': u'Inventory',
@@ -290,7 +206,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Enter unit of measurement in which stock of this item is maintained in your warehouse.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'stock_uom',
 		'fieldtype': u'Link',
 		'label': u'Default UoM',
@@ -306,7 +222,7 @@
 		'colour': u'White:FFF',
 		'default': u'Yes',
 		'description': u'Select "Yes" if you are maintaining stock of this item in your Inventory.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_stock_item',
 		'fieldtype': u'Select',
 		'label': u'Is Stock Item',
@@ -319,19 +235,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'valuation_method',
-		'fieldtype': u'Select',
-		'label': u'Valuation Method',
-		'oldfieldname': u'valuation_method',
-		'oldfieldtype': u'Select',
-		'options': u'\nFIFO\nMoving Average',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_warehouse',
 		'fieldtype': u'Link',
 		'label': u'Default Warehouse',
@@ -345,7 +249,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Percentage variation in quantity to be allowed while receiving or delivering this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'tolerance',
 		'fieldtype': u'Currency',
 		'label': u'Allowance Percent',
@@ -358,7 +262,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'The system will generate auto indent when stock reaches re-order level.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u're_order_level',
 		'fieldtype': u'Currency',
 		'label': u'Re-Order Level',
@@ -371,7 +275,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'The system will create auto indent of re-order quantity when stock reaches re-order level',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u're_order_qty',
 		'fieldtype': u'Currency',
 		'label': u'Re-Order Qty',
@@ -380,7 +284,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'email_notify',
 		'fieldtype': u'Check',
 		'label': u'Send Email Notification when stock reaches re-order level',
@@ -392,7 +296,7 @@
 		'colour': u'White:FFF',
 		'default': u'0.00',
 		'description': u'You can enter the minimum quantity of this item to be ordered.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'min_order_qty',
 		'fieldtype': u'Currency',
 		'hidden': 0,
@@ -404,7 +308,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break1',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -417,7 +321,7 @@
 		'colour': u'White:FFF',
 		'default': u'No',
 		'description': u'Select "Yes" if this item is used for some internal purpose in your company.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_asset_item',
 		'fieldtype': u'Select',
 		'label': u'Is Asset Item',
@@ -432,7 +336,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'No',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'has_batch_no',
 		'fieldtype': u'Select',
 		'label': u'Has Batch No',
@@ -448,7 +352,7 @@
 		'colour': u'White:FFF',
 		'default': u'No',
 		'description': u'Selecting "Yes" will give a unique identity to each entity of this item which can be viewed in the Serial No master.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'has_serial_no',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -462,7 +366,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'warranty_period',
 		'fieldtype': u'Data',
 		'label': u'Warranty Period (in days)',
@@ -473,7 +377,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'end_of_life',
 		'fieldtype': u'Date',
 		'label': u'End of Life',
@@ -485,7 +389,7 @@
 	# DocField
 	{
 		'description': u'Net Weight of each Item',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'net_weight',
 		'fieldtype': u'Float',
 		'label': u'Net Weight',
@@ -494,7 +398,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'weight_uom',
 		'fieldtype': u'Link',
 		'label': u'Weight UOM',
@@ -505,7 +409,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'purchase_details',
 		'fieldtype': u'Section Break',
 		'label': u'Purchase Details',
@@ -518,7 +422,7 @@
 		'colour': u'White:FFF',
 		'default': u'Yes',
 		'description': u'Selecting "Yes" will allow this item to appear in Purchase Order , Purchase Receipt.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_purchase_item',
 		'fieldtype': u'Select',
 		'label': u'Is Purchase Item',
@@ -533,7 +437,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Lead Time days is number of days by which this item is expected in your warehouse. This days is fetched in Purchase Request when you select this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'lead_time_days',
 		'fieldtype': u'Int',
 		'label': u'Lead Time Days',
@@ -547,7 +451,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Default Purchase Account in which cost of the item will be debited.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'purchase_account',
 		'fieldtype': u'Link',
 		'label': u'Default Expense Account',
@@ -562,7 +466,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Default Cost Center for tracking expense for this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'cost_center',
 		'fieldtype': u'Link',
 		'label': u'Default Cost Center',
@@ -576,7 +480,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Buying Cost will be updated from Purchase Orders and Purchase Receipts. <br>The buying cost will calculated by moving average method.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'buying_cost',
 		'fieldtype': u'Currency',
 		'label': u'Buying Cost',
@@ -589,7 +493,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'last_purchase_rate',
 		'fieldtype': u'Currency',
 		'label': u'Last Purchase Rate',
@@ -601,7 +505,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'standard_rate',
 		'fieldtype': u'Currency',
 		'label': u'Standard Rate',
@@ -612,7 +516,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break2',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -622,7 +526,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'uom_conversion_details',
 		'fieldtype': u'Table',
 		'label': u'UOM Conversion Details',
@@ -634,7 +538,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'manufacturer',
 		'fieldtype': u'Data',
 		'label': u'Manufacturer',
@@ -643,7 +547,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'manufacturer_part_no',
 		'fieldtype': u'Data',
 		'label': u'Manufacturer Part Number',
@@ -652,7 +556,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_supplier_details',
 		'fieldtype': u'Table',
 		'label': u'Item Supplier Details',
@@ -662,7 +566,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'sales_details',
 		'fieldtype': u'Section Break',
 		'label': u'Sales Details',
@@ -675,7 +579,7 @@
 		'colour': u'White:FFF',
 		'default': u'Yes',
 		'description': u'Selecting "Yes" will allow this item to figure in Sales Order, Delivery Note',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_sales_item',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -692,7 +596,7 @@
 		'colour': u'White:FFF',
 		'default': u'No',
 		'description': u'Select "Yes" if this item represents some work like training, designing, consulting etc.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_service_item',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -709,7 +613,7 @@
 		'colour': u'White:FFF',
 		'default': u'No',
 		'description': u'Select "Yes" if this item is to be sent to a customer or received from a supplier as a sample. Delivery notes and Purchase Receipts will update stock levels but there will be no invoice against this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_sample_item',
 		'fieldtype': u'Select',
 		'label': u'Allow Samples',
@@ -722,7 +626,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'max_discount',
 		'fieldtype': u'Currency',
 		'label': u'Max Discount (%)',
@@ -733,7 +637,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_income_account',
 		'fieldtype': u'Link',
 		'label': u'Default Income Account',
@@ -743,7 +647,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_sales_cost_center',
 		'fieldtype': u'Link',
 		'label': u'Cost Center',
@@ -753,7 +657,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'sales_rate',
 		'fieldtype': u'Currency',
 		'hidden': 1,
@@ -765,7 +669,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break3',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -777,7 +681,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Create a price list from Price List master and enter standard ref rates against each of them. On selection of a price list in Quotation, Sales Order or Delivery Note, corresponding ref rate will be fetched for this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'ref_rate_details',
 		'fieldtype': u'Table',
 		'label': u'Item Prices',
@@ -790,7 +694,7 @@
 	# DocField
 	{
 		'description': u'For the convenience of customers, these codes can be used in print formats like Invoices and Delivery Notes',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_customer_details',
 		'fieldtype': u'Table',
 		'label': u'Customer Codes',
@@ -800,7 +704,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_tax_section_break',
 		'fieldtype': u'Section Break',
 		'label': u'Item Tax',
@@ -810,7 +714,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_tax',
 		'fieldtype': u'Table',
 		'label': u'Item Tax1',
@@ -822,7 +726,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'inspection_criteria',
 		'fieldtype': u'Section Break',
 		'label': u'Inspection Criteria',
@@ -833,7 +737,7 @@
 	# DocField
 	{
 		'default': u'No',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'inspection_required',
 		'fieldtype': u'Select',
 		'label': u'Inspection Required',
@@ -847,7 +751,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'item_specification_details',
 		'fieldtype': u'Table',
 		'label': u'Item Quality Inspection Parameter',
@@ -859,7 +763,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'manufacturing',
 		'fieldtype': u'Section Break',
 		'label': u'Manufacturing',
@@ -872,7 +776,7 @@
 		'colour': u'White:FFF',
 		'default': u'No',
 		'description': u'Selecting "Yes" will allow you to create Bill of Material showing raw material and operational costs incurred to manufacture this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_manufactured_item',
 		'fieldtype': u'Select',
 		'label': u'Allow Bill of Materials',
@@ -886,7 +790,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'default_bom',
 		'fieldtype': u'Link',
 		'label': u'Default BOM',
@@ -902,7 +806,7 @@
 		'colour': u'White:FFF',
 		'default': u'No',
 		'description': u'Selecting "Yes" will allow you to make a Production Order for this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_pro_applicable',
 		'fieldtype': u'Select',
 		'label': u'Allow Production Order',
@@ -918,7 +822,7 @@
 		'colour': u'White:FFF',
 		'default': u'No',
 		'description': u'Select "Yes" if you supply raw materials to your supplier to manufacture this item.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'is_sub_contracted_item',
 		'fieldtype': u'Select',
 		'label': u'Is Sub Contracted Item',
@@ -931,7 +835,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'file_list',
 		'fieldtype': u'Text',
 		'hidden': 1,
@@ -943,7 +847,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'customer_code',
 		'fieldtype': u'Data',
 		'hidden': 1,
@@ -956,7 +860,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'website_section',
 		'fieldtype': u'Section Break',
 		'label': u'Website',
@@ -965,7 +869,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'show_in_website',
 		'fieldtype': u'Check',
 		'label': u'Show in Website',
@@ -976,7 +880,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'website page link',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'page_name',
 		'fieldtype': u'Data',
 		'label': u'Page Name',
@@ -985,7 +889,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'website_image',
 		'fieldtype': u'Select',
 		'label': u'Image',
@@ -995,7 +899,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'web_short_description',
 		'fieldtype': u'Text',
 		'label': u'Short Description',
@@ -1004,11 +908,95 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'web_long_description',
 		'fieldtype': u'Code',
 		'label': u'Long Description',
 		'options': u'Markdown',
 		'permlevel': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'System Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material Master Manager',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material Master Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'System Manager'
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
 	}
 ]
\ No newline at end of file
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 20eed3b..13b2111 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -218,16 +218,17 @@
 		pc_obj = get_obj('Purchase Common')
 		self.values = []
 		for d in getlist(self.doclist, 'purchase_receipt_details'):
-			# Check if is_stock_item == 'Yes'
-			if sql("select is_stock_item from tabItem where name=%s", d.item_code)[0][0]=='Yes':
+			if webnotes.conn.get_value("Item", d.item_code, "is_stock_item") == "Yes":
 				ord_qty = 0
 				pr_qty = flt(d.qty) * flt(d.conversion_factor)
 
-				# Check If Prevdoc Doctype is Purchase Order
 				if cstr(d.prevdoc_doctype) == 'Purchase Order':
 					# get qty and pending_qty of prevdoc
-					curr_ref_qty = pc_obj.get_qty( d.doctype, 'prevdoc_detail_docname', d.prevdoc_detail_docname, 'Purchase Order Item', 'Purchase Order - Purchase Receipt', self.doc.name)
-					max_qty, qty, curr_qty = flt(curr_ref_qty.split('~~~')[1]), flt(curr_ref_qty.split('~~~')[0]), 0
+					curr_ref_qty = pc_obj.get_qty( d.doctype, 'prevdoc_detail_docname',
+					 	d.prevdoc_detail_docname, 'Purchase Order Item', 
+						'Purchase Order - Purchase Receipt', self.doc.name)
+					max_qty, qty, curr_qty = flt(curr_ref_qty.split('~~~')[1]), \
+					 	flt(curr_ref_qty.split('~~~')[0]), 0
 
 					if flt(qty) + flt(pr_qty) > flt(max_qty):
 						curr_qty = (flt(max_qty) - flt(qty)) * flt(d.conversion_factor)
@@ -235,11 +236,18 @@
 						curr_qty = flt(pr_qty)
 
 					ord_qty = -flt(curr_qty)
-					# update order qty in bin
-					bin = get_obj('Warehouse', d.warehouse).update_bin(0, 0, (is_submit and 1 or -1) * flt(ord_qty), 0, 0, d.item_code, self.doc.posting_date)
+					
+					# update ordered qty in bin
+					args = {
+						"item_code": d.item_code,
+						"posting_date": self.doc.posting_date,
+						"ordered_qty": (is_submit and 1 or -1) * flt(ord_qty)
+					}
+					get_obj("Warehouse", d.warehouse).update_bin(args)
 
 				# UPDATE actual qty to warehouse by pr_qty
 				self.make_sl_entry(d, d.warehouse, flt(pr_qty), d.valuation_rate, is_submit)
+				
 				# UPDATE actual to rejected warehouse by rejected qty
 				if flt(d.rejected_qty) > 0:
 					self.make_sl_entry(d, self.doc.rejected_warehouse, flt(d.rejected_qty) * flt(d.conversion_factor), d.valuation_rate, is_submit, rejected = 1)
diff --git a/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py
index e811d73..931e0fe 100644
--- a/stock/doctype/serial_no/serial_no.py
+++ b/stock/doctype/serial_no/serial_no.py
@@ -73,8 +73,10 @@
 		self.validate_item()
 
 	def on_update(self):
-		if self.doc.warehouse and self.doc.status == 'In Store' and cint(self.doc.sle_exists) == 0 and \
-			not sql("select name from `tabStock Ledger Entry` where serial_no = %s and ifnull(is_cancelled, 'No') = 'No'", self.doc.name):
+		if self.doc.warehouse and self.doc.status == 'In Store' \
+				and cint(self.doc.sle_exists) == 0 and \
+				not sql("""select name from `tabStock Ledger Entry` where serial_no = %s and 
+				 	ifnull(is_cancelled, 'No') = 'No'""", self.doc.name):
 			self.make_stock_ledger_entry(1)
 			webnotes.conn.set(self.doc, 'sle_exists', 1)
 
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 6d3afb1..cc0f906 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -440,18 +440,30 @@
 		if self.doc.production_order:
 			pro_obj = get_obj("Production Order", self.doc.production_order)
 			if flt(pro_obj.doc.docstatus) != 1:
-				msgprint("You cannot do any transaction against Production Order : %s, as it's not submitted" % (pro_obj.doc.name))
-				raise Exception
+				msgprint("""You cannot do any transaction against 
+					Production Order : %s, as it's not submitted"""
+					% (pro_obj.doc.name), raise_exception=1)
+					
 			if pro_obj.doc.status == 'Stopped':
-				msgprint("You cannot do any transaction against Production Order : %s, as it's status is 'Stopped'" % (pro_obj.doc.name))
-				raise Exception
+				msgprint("""You cannot do any transaction against Production Order : %s, 
+					as it's status is 'Stopped'"""% (pro_obj.doc.name), raise_exception=1)
+					
 			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
+				msgprint("""Posting Date of Stock Entry cannot be before Posting Date of 
+					Production Order: %s"""% cstr(self.doc.production_order), raise_exception=1)
+					
 			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.produced_qty = flt(pro_obj.doc.produced_qty) + \
+					(is_submit and 1 or -1 ) * flt(self.doc.fg_completed_qty)
+				args = {
+					"item_code": pro_obj.doc.production_item,
+					"posting_date": self.doc.posting_date,
+					"planned_qty": (is_submit and -1 or 1 ) * flt(self.doc.fg_completed_qty)
+				}
+				get_obj('Warehouse', pro_obj.doc.fg_warehouse).update_bin(args)
+				
+			pro_obj.doc.status = (flt(pro_obj.doc.qty)==flt(pro_obj.doc.produced_qty)) \
+				and 'Completed' or 'In Process'
 			pro_obj.doc.save()
 	
 
diff --git a/stock/doctype/stock_ledger/stock_ledger.py b/stock/doctype/stock_ledger/stock_ledger.py
index e8a279b..1c52019 100644
--- a/stock/doctype/stock_ledger/stock_ledger.py
+++ b/stock/doctype/stock_ledger/stock_ledger.py
@@ -230,8 +230,12 @@
 			if v["actual_qty"]:
 				sle_id = self.make_entry(v)
 
-			get_obj('Warehouse', v["warehouse"]).update_bin(flt(v["actual_qty"]), 0, 0, 0, 0, v["item_code"], \
-				v["posting_date"], sle_id, v["posting_time"], '', v["is_cancelled"],v["voucher_type"],v["voucher_no"], is_amended)
+			args = v.copy()
+			args.update({
+				"sle_id": sle_id,
+				"is_amended": is_amended
+			})
+			get_obj('Warehouse', v["warehouse"]).update_bin(args)
 
 
 	def make_entry(self, args):
diff --git a/stock/doctype/warehouse/warehouse.js b/stock/doctype/warehouse/warehouse.js
index 0017c75..0e9cd33 100644
--- a/stock/doctype/warehouse/warehouse.js
+++ b/stock/doctype/warehouse/warehouse.js
@@ -16,4 +16,16 @@
 
 cur_frm.cscript.refresh = function(doc) {
 	cur_frm.toggle_display('warehouse_name', doc.__islocal);
+}
+
+cur_frm.cscript.merge = function(doc, cdt, cdn) {
+	if (!doc.merge_with) {
+		msgprint("Please enter the warehouse to which you want to merge?");
+		return;
+	}
+	var check = confirm("Are you sure you want to merge this warehouse into " 
+		+ doc.merge_with + "?");
+	if (check) {
+		$c_obj(make_doclist(cdt, cdn), 'merge_warehouses', '', '');
+	}
 }
\ No newline at end of file
diff --git a/stock/doctype/warehouse/warehouse.py b/stock/doctype/warehouse/warehouse.py
index 6e7883d..7ad297c 100644
--- a/stock/doctype/warehouse/warehouse.py
+++ b/stock/doctype/warehouse/warehouse.py
@@ -18,106 +18,186 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, 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, getchildren, make_autoname
-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, msgprint, errprint
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, flt, get_defaults, getdate, has_common, month_name, now, nowdate, set_default, validate_email_add
+from webnotes.model.doc import Document, addchild, getchildren
+from webnotes.model.doclist import getlist
+from webnotes.model.code import get_obj
+from webnotes import 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
 		
-	def get_bin(self, item_code):
+	def get_bin(self, item_code, warehouse=None):
+		warehouse = warehouse or self.doc.name
 		bin = sql("select name from tabBin where item_code = %s and \
-				warehouse = %s", (item_code, self.doc.name))
+				warehouse = %s", (item_code, warehouse))
 		bin = bin and bin[0][0] or ''
 		if not bin:
-			if not self.doc.warehouse_type :
-				msgprint("[Warehouse Type is Mandatory] Please Enter warehouse type in Warehouse " + self.doc.name)
-				raise Exception
 			bin = Document('Bin')
 			bin.item_code = item_code
-			bin.stock_uom = get_value('Item', item_code, 'stock_uom')
-			bin.warehouse = self.doc.name
-			bin.warehouse_type = self.doc.warehouse_type
+			bin.stock_uom = webnotes.conn.get_value('Item', item_code, 'stock_uom')
+			bin.warehouse = warehouse
+			bin.warehouse_type = webnotes.conn.get_value("Warehouse", warehouse, "warehouse_type")
 			bin_obj = get_obj(doc=bin)
 			bin_obj.validate()
 			bin.save(1)
 			bin = bin.name
 		else:
-			bin_obj = get_obj('Bin',bin)
-
+			bin_obj = get_obj('Bin', bin)
 		return bin_obj
 	
 
 	def validate_asset(self, item_code):
-		if sql("select is_asset_item from tabItem where name=%s", item_code)[0][0] == 'Yes' and self.doc.warehouse_type != 'Fixed Asset':
-			msgprint("Fixed Asset Item %s can only be transacted in a Fixed Asset type Warehouse" % item_code)
-			raise Exception
+		if webnotes.conn.get_value("Item", item_code, "is_asset_item") == 'Yes' \
+				and self.doc.warehouse_type != 'Fixed Asset':
+			msgprint("""Fixed Asset Item %s can only be transacted in a 
+				Fixed Asset type Warehouse""" % item_code, raise_exception=1)
 
-
-	# update bin
-	# ----------
-	def update_bin(self, actual_qty, reserved_qty, ordered_qty, indented_qty, planned_qty, item_code, dt, sle_id = '',posting_time = '', serial_no = '', is_cancelled = 'No',doc_type='',doc_name='',is_amended='No'):
-		self.validate_asset(item_code)
-		it_det = get_value('Item', item_code, 'is_stock_item')
-		if it_det and it_det == 'Yes':
-			bin = self.get_bin(item_code)
-			bin.update_stock(actual_qty, reserved_qty, ordered_qty, indented_qty, planned_qty, dt, sle_id, posting_time, serial_no, is_cancelled,doc_type,doc_name,is_amended)
+	def update_bin(self, args):
+		self.validate_asset(args.get("item_code"))
+		is_stock_item = webnotes.conn.get_value('Item', args.get("item_code"), 'is_stock_item')
+		if is_stock_item == 'Yes':
+			bin = self.get_bin(args.get("item_code"))
+			bin.update_stock(args)
 			return bin
 		else:
-			msgprint("[Stock Update] Ignored %s since it is not a stock item" % item_code)
-
-	# repost stock
-	# ------------
-	def repost_stock(self):
-		bl = sql("select name from tabBin where warehouse=%s", self.doc.name)
-		for b in bl:
-			bobj = get_obj('Bin',b[0])
-			bobj.update_entries_after(posting_date = '0000-00-00', posting_time = '00:00')
-
-			sql("COMMIT")
-			sql("START TRANSACTION")
+			msgprint("[Stock Update] Ignored %s since it is not a stock item" 
+				% args.get("item_code"))
 
 	def check_state(self):
-		return "\n" + "\n".join([i[0] for i in sql("select state_name from `tabState` where `tabState`.country='%s' " % self.doc.country)])
+		return "\n" + "\n".join([i[0] for i in sql("""
+			select state_name from `tabState` where country=%s""", self.doc.country)])
 
 	def validate(self):
-		if self.doc.email_id:
-			if not validate_email_add(self.doc.email_id):
-				msgprint("Please enter valid Email Id.")
-				raise Exception
+		if self.doc.email_id and not validate_email_add(self.doc.email_id):
+				msgprint("Please enter valid Email Id", raise_exception=1)
 		if not self.doc.warehouse_type:
-			msgprint("[Warehouse Type is Mandatory] Please Enter	Please Entry warehouse type in Warehouse " + self.doc.name)
-			raise Exception
-		wt = sql("select warehouse_type from `tabWarehouse` where name ='%s'" % self.doc.name)
-		if cstr(self.doc.warehouse_type) != cstr(wt and wt[0][0] or ''):
-			sql("update `tabStock Ledger Entry` set warehouse_type = '%s' where warehouse = '%s'" % (self.doc.warehouse_type, self.doc.name))
-			msgprint("All Stock Ledger Entries Updated.")
+			msgprint("Warehouse Type is Mandatory", raise_exception=1)
 			
+		wt = sql("select warehouse_type from `tabWarehouse` where name ='%s'" % self.doc.name)
+		if wt and cstr(self.doc.warehouse_type) != cstr(wt[0][0]):
+			sql("""update `tabStock Ledger Entry` set warehouse_type = %s 
+				where warehouse = %s""", (self.doc.warehouse_type, self.doc.name))
+	
+	def merge_warehouses(self):
+		webnotes.conn.auto_commit_on_many_writes = 1
+		
+		# get items which dealt with current warehouse
+		items = webnotes.conn.sql("select item_code from tabBin where warehouse=%s"	, self.doc.name)
+		# delete old bins
+		webnotes.conn.sql("delete from tabBin where warehouse=%s", self.doc.name)
+		
+		# replace link fields
+		from webnotes.model import rename_doc
+		link_fields = rename_doc.get_link_fields('Warehouse')
+		rename_doc.update_link_field_values(link_fields, self.doc.name, self.doc.merge_with)
+		
+		for item_code in items:
+			self.repost(item_code[0], self.doc.merge_with)
+			
+		webnotes.conn.auto_commit_on_many_writes = 0
+
+	def repost(self, item_code, warehouse=None):
+		bin = self.get_bin(item_code, warehouse)
+		self.repost_actual_qty(bin)
+		self.repost_reserved_qty(bin)
+		self.repost_indented_qty(bin)
+		self.repost_ordered_qty(bin)
+		self.repost_planned_qty(bin)
+		bin.doc.projected_qty = flt(bin.doc.actual_qty) + flt(bin.doc.planned_qty) \
+			+ flt(bin.doc.indented_qty) + flt(bin.doc.ordered_qty) - flt(bin.doc.reserved_qty)
+		bin.doc.save()
+			
+
+	def repost_actual_qty(self, bin):
+		bin.update_entries_after(posting_date = '0000-00-00', posting_time = '00:00')
+
+	def repost_reserved_qty(self, bin):
+		reserved_qty = webnotes.conn.sql("""
+			select 
+				sum((dnpi_qty / so_item_qty) * (so_item_qty - so_item_delivered_qty))
+			from 
+				(
+					select
+						qty as dnpi_qty,
+						(
+							select qty from `tabSales Order Item`
+							where name = dnpi.parent_detail_docname
+						) as so_item_qty,
+						(
+							select ifnull(delivered_qty, 0) from `tabSales Order Item`
+							where name = dnpi.parent_detail_docname
+						) as so_item_delivered_qty
+					from 
+					(
+						select qty, parent_detail_docname
+						from `tabDelivery Note Packing Item` dnpi_in
+						where item_code = %s and warehouse = %s
+						and parenttype="Sales Order"
+						and exists (select * from `tabSales Order` so
+						where name = dnpi_in.parent and docstatus = 1 and status != 'Stopped')
+					) dnpi
+				) tab 
+			where 
+				so_item_qty >= so_item_delivered_qty
+		""", (bin.doc.item_code, bin.doc.warehouse))
+
+		if flt(bin.doc.reserved_qty) != flt(reserved_qty[0][0]):
+			webnotes.conn.set_value("Bin", bin.doc.name, "reserved_qty", flt(reserved_qty[0][0]))
+
+
+	def repost_indented_qty(self, bin):
+		indented_qty = webnotes.conn.sql("""select sum(pr_item.qty - pr_item.ordered_qty)
+			from `tabPurchase Request Item` pr_item, `tabPurchase Request` pr
+			where pr_item.item_code=%s and pr_item.warehouse=%s 
+			and pr_item.qty > pr_item.ordered_qty and pr_item.parent=pr.name 
+			and pr.status!='Stopped' and pr.docstatus=1"""
+			, (bin.doc.item_code, bin.doc.warehouse))
+			
+		if flt(bin.doc.indented_qty) != flt(indented_qty[0][0]):
+			webnotes.conn.set_value("Bin", bin.doc.name, "indented_qty", flt(indented_qty[0][0]))
+		
+	
+	def repost_ordered_qty(self, bin):
+		ordered_qty = webnotes.conn.sql("""
+			select sum((po_item.qty - po_item.received_qty)*po_item.conversion_factor)
+			from `tabPurchase Order Item` po_item, `tabPurchase Order` po
+			where po_item.item_code=%s and po_item.warehouse=%s 
+			and po_item.qty > po_item.received_qty and po_item.parent=po.name 
+			and po.status!='Stopped' and po.docstatus=1"""
+			, (bin.doc.item_code, bin.doc.warehouse))
+			
+		if flt(bin.doc.ordered_qty) != flt(ordered_qty[0][0]):
+			webnotes.conn.set_value("Bin", bin.doc.name, "ordered_qty", flt(ordered_qty[0][0]))
+
+	def repost_planned_qty(self, bin):
+		planned_qty = webnotes.conn.sql("""
+			select sum(qty - produced_qty) from `tabProduction Order` 
+			where production_item = %s and fg_warehouse = %s and status != "Stopped"
+			and docstatus=1""", (bin.doc.item_code, bin.doc.warehouse))
+
+		if flt(bin.doc.planned_qty) != flt(planned_qty[0][0]):
+			webnotes.conn.set_value("Bin", bin.doc.name, "planned_qty", flt(planned_qty[0][0]))
+
 	def on_trash(self):
 		# delete bin
 		bins = sql("select * from `tabBin` where warehouse = %s", self.doc.name, as_dict=1)
 		for d in bins:
-			if d['actual_qty'] or d['reserved_qty'] or d['ordered_qty'] or d['indented_qty'] or d['projected_qty'] or d['planned_qty']:
-				msgprint("Warehouse: %s can not be deleted as qty exists for item: %s" % (self.doc.name, d['item_code']), raise_exception=1)
+			if d['actual_qty'] or d['reserved_qty'] or d['ordered_qty'] or \
+					d['indented_qty'] or d['projected_qty'] or d['planned_qty']:
+				msgprint("""Warehouse: %s can not be deleted as qty exists for item: %s""" 
+					% (self.doc.name, d['item_code']), raise_exception=1)
 			else:
 				sql("delete from `tabBin` where name = %s", d['name'])
 				
 		# delete cancelled sle
-		if sql("select name from `tabStock Ledger Entry` where warehouse = %s and ifnull('is_cancelled', '') = 'No'", self.doc.name):
-			mdgprint("Warehosue can not be deleted as stock ledger entry exists for this warehosue.", raise_exception=1)
+		if sql("""select name from `tabStock Ledger Entry` 
+				where warehouse = %s and ifnull('is_cancelled', '') = 'No'""", self.doc.name):
+			mdgprint("""Warehosue can not be deleted as stock ledger entry 
+				exists for this warehosue.""", raise_exception=1)
 		else:
-			sql("delete from `tabStock Ledger Entry` where warehouse = %s", self.doc.name)
+			sql("delete from `tabStock Ledger Entry` where warehouse = %s", self.doc.name)
\ No newline at end of file
diff --git a/stock/doctype/warehouse/warehouse.txt b/stock/doctype/warehouse/warehouse.txt
index 844e3f3..c51cfa8 100644
--- a/stock/doctype/warehouse/warehouse.txt
+++ b/stock/doctype/warehouse/warehouse.txt
@@ -3,11 +3,11 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-07-03 13:30:45',
-		'docstatus': 0,
-		'modified': '2012-07-11 10:18:07',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
+		u'creation': '2012-10-10 12:07:10',
+		u'docstatus': 0,
+		u'modified': '2012-10-25 15:03:49',
+		u'modified_by': u'Administrator',
+		u'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
@@ -18,10 +18,10 @@
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
 		'description': u'A logical Warehouse against which stock entries are made.\n\nThere are two main Warehouse Types that are significant in ERPNext.\n\n1. **Stores:** These are where your incoming **Items** are kept before they are consumed or sold. You can have as many \u201cStores\u201d type **Warehouses** as you wish. Stores type warehouses are significant because if you set an Item for automatic re-order, ERPNext will check its quantities in all \u201cStores\u201d type **Warehouses** when deciding whether to re-order or not.\n\n2. **Asset**: **Items** marked as type \u201cFixed Asset\u201d are maintained in Asset Type **Warehouses**. This helps you separate them for the **Items** that are consumed as a part of your regular operations or \u201cCost of Goods Sold\u201d.\n',
-		'doctype': 'DocType',
+		u'doctype': u'DocType',
 		'document_type': u'Master',
 		'module': u'Stock',
-		'name': '__common__',
+		u'name': u'__common__',
 		'search_fields': u'warehouse_type',
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
@@ -31,8 +31,8 @@
 
 	# These values are common for all DocField
 	{
-		'doctype': u'DocField',
-		'name': '__common__',
+		u'doctype': u'DocField',
+		u'name': u'__common__',
 		'parent': u'Warehouse',
 		'parentfield': u'fields',
 		'parenttype': u'DocType'
@@ -40,8 +40,8 @@
 
 	# These values are common for all DocPerm
 	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
+		u'doctype': u'DocPerm',
+		u'name': u'__common__',
 		'parent': u'Warehouse',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
@@ -50,130 +50,13 @@
 
 	# DocType, Warehouse
 	{
-		'doctype': 'DocType',
-		'name': u'Warehouse'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Master Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material Master Manager'
-	},
-
-	# DocPerm
-	{
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'System Manager',
-		'write': 1
+		u'doctype': u'DocType',
+		u'name': u'Warehouse'
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'warehouse_detail',
 		'fieldtype': u'Section Break',
 		'label': u'Warehouse Detail',
@@ -183,7 +66,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'warehouse_name',
 		'fieldtype': u'Data',
 		'label': u'Warehouse Name',
@@ -196,7 +79,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'warehouse_type',
 		'fieldtype': u'Link',
 		'label': u'Warehouse Type',
@@ -210,7 +93,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'company',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -226,7 +109,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'For Reference Only.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'warehouse_contact_info',
 		'fieldtype': u'Section Break',
 		'label': u'Warehouse Contact Info',
@@ -235,7 +118,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'email_id',
 		'fieldtype': u'Data',
 		'hidden': 1,
@@ -248,7 +131,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'phone_no',
 		'fieldtype': u'Data',
 		'label': u'Phone No',
@@ -260,7 +143,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'mobile_no',
 		'fieldtype': u'Data',
 		'label': u'Mobile No',
@@ -272,7 +155,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break0',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -281,7 +164,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'address_line_1',
 		'fieldtype': u'Data',
 		'label': u'Address Line 1',
@@ -292,7 +175,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'address_line_2',
 		'fieldtype': u'Data',
 		'label': u'Address Line 2',
@@ -303,7 +186,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'city',
 		'fieldtype': u'Data',
 		'label': u'City',
@@ -316,7 +199,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'state',
 		'fieldtype': u'Data',
 		'label': u'State',
@@ -328,7 +211,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'pin',
 		'fieldtype': u'Int',
 		'label': u'PIN',
@@ -340,24 +223,92 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'description': u'For Admin use only. Please report errors to support@erpnext.com',
-		'doctype': u'DocField',
-		'fieldname': u'repost_stock',
+		'description': u'This feature is for merging duplicate warehouses. It will replace all the links of this warehouse by "Merge With" warehouse. After merging you can delete this warehouse, as stock level for this warehouse will be zero.',
+		u'doctype': u'DocField',
+		'fieldname': u'merge_warehouses_section',
 		'fieldtype': u'Section Break',
-		'label': u'Repost Stock',
-		'oldfieldtype': u'Section Break',
+		'label': u'Merge Warehouses',
 		'permlevel': 2
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'repost_stock_ledger',
-		'fieldtype': u'Button',
-		'hidden': 0,
-		'label': u'Repost Stock Ledger',
-		'oldfieldtype': u'Button',
-		'options': u'repost_stock',
+		u'doctype': u'DocField',
+		'fieldname': u'merge_with',
+		'fieldtype': u'Link',
+		'label': u'Merge With',
+		'options': u'Warehouse',
 		'permlevel': 2
+	},
+
+	# DocField
+	{
+		u'doctype': u'DocField',
+		'fieldname': u'merge',
+		'fieldtype': u'Button',
+		'label': u'Merge',
+		'permlevel': 2
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material Master Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'System Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'All'
+	},
+
+	# DocPerm
+	{
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 2,
+		'role': u'System Manager',
+		'write': 1
 	}
 ]
\ No newline at end of file
