Merge branch 'sales_purchase_return'
diff --git a/accounts/__init__.py b/accounts/__init__.py
index 707203f..145ad6b 100644
--- a/accounts/__init__.py
+++ b/accounts/__init__.py
@@ -32,209 +32,3 @@
 		WHERE name=%s AND docstatus<2""", company)
 	
 	if res: return res[0][0]
-
-@webnotes.whitelist()
-def get_new_jv_details():
-	"""
-		Get details which will help create new jv on sales/purchase return
-	"""
-	doclist = webnotes.form_dict.get('doclist')
-	fiscal_year = webnotes.form_dict.get('fiscal_year')
-	if not (isinstance(doclist, basestring) and isinstance(fiscal_year, basestring)): return
-
-	import json
-	doclist = json.loads(doclist)
-	doc, children = doclist[0], doclist[1:]
-
-	if doc.get('return_type')=='Sales Return':
-		if doc.get('sales_invoice_no'):
-			return get_invoice_details(doc, children, fiscal_year)
-		elif doc.get('delivery_note_no'):
-			return get_delivery_note_details(doc, children, fiscal_year)
-
-	elif doc.get('purchase_receipt_no'):
-		return get_purchase_receipt_details(doc, children, fiscal_year)
-
-
-def get_invoice_details(doc, children, fiscal_year):
-	"""
-		Gets details from an invoice to make new jv
-		Returns [{
-			'account': ,
-			'balance': ,
-			'debit': ,
-			'credit': ,
-			'against_invoice': ,
-			'against_payable': 
-		}, { ... }, ...]
-	"""
-	if doc.get('return_type')=='Sales Return':
-		obj = get_obj('Sales Invoice', doc.get('sales_invoice_no'), with_children=1)
-	else:
-		obj = get_obj('Purchase Invoice', doc.get('purchase_invoice_no'), with_children=1)
-	if not obj.doc.docstatus==1: return
-
-	# Build invoice account jv detail record
-	invoice_rec = get_invoice_account_jv_record(doc, children, fiscal_year, obj)
-
-	# Build item accountwise jv detail records
-	item_accountwise_list = get_item_accountwise_jv_record(doc, children, fiscal_year, obj)
-
-	return [invoice_rec] + item_accountwise_list
-
-
-def get_invoice_account_jv_record(doc, children, fiscal_year, obj):
-	"""
-		Build customer/supplier account jv detail record
-	"""
-	# Calculate total return amount
-	total_amt = sum([(flt(ch.get('rate')) * flt(ch.get('returned_qty'))) for ch in children])
-
-	ret = {}
-
-	if doc.get('return_type')=='Sales Return':
-		account = obj.doc.debit_to
-		ret['against_invoice'] = doc.get('sales_invoice_no')
-		ret['credit'] = total_amt
-	else:
-		account = obj.doc.credit_to
-		ret['against_voucher'] = doc.get('purchase_invoice_no')
-		ret['debit'] = total_amt
-	
-	ret.update({
-		'account': account,
-		'balance': get_balance_on(account, doc.get("return_date"))
-	})
-
-	return ret
-
-
-def get_item_accountwise_jv_record(doc, children, fiscal_year, obj):
-	"""
-		Build item accountwise jv detail records
-	"""
-	if doc.get('return_type')=='Sales Return':
-		amt_field = 'debit'
-		ac_field = 'income_account'
-	else:
-		amt_field = 'credit'
-		ac_field = 'expense_head'
-	
-	inv_children = dict([[ic.fields.get('item_code'), ic] for ic in obj.doclist if ic.fields.get('item_code')])
-
-	accwise_list = []
-	
-	for ch in children:
-		inv_ch = inv_children.get(ch.get('item_code'))
-		if not inv_ch: continue
-
-		amount = flt(ch.get('rate')) * flt(ch.get('returned_qty'))
-
-		accounts = [[jvd['account'], jvd['cost_center']] for jvd in accwise_list]
-		
-		if [inv_ch.fields.get(ac_field), inv_ch.fields.get('cost_center')] not in accounts:
-			rec = {
-				'account': inv_ch.fields.get(ac_field),
-				'cost_center': inv_ch.fields.get('cost_center'),
-				'balance': get_balance_on(inv_ch.fields.get(ac_field),
-					doc.get("return_date"))
-			}
-			rec[amt_field] = amount
-			accwise_list.append(rec)
-		else:
-			rec = accwise_list[accounts.index([inv_ch.fields.get(ac_field), inv_ch.fields.get('cost_center')])]
-			rec[amt_field] = rec[amt_field] + amount
-		
-	return accwise_list
-
-
-def get_jv_details_from_inv_list(doc, children, fiscal_year, inv_list, jv_details_list):
-	"""
-		Get invoice details and make jv detail records
-	"""
-	for inv in inv_list:
-		if not inv[0]: continue
-
-		if doc.get('return_type')=='Sales Return':
-			doc['sales_invoice_no'] = inv[0]
-		else:
-			doc['purchase_invoice_no'] = inv[0]
-		
-		jv_details = get_invoice_details(doc, children, fiscal_year)
-		
-		if jv_details and len(jv_details)>1: jv_details_list.extend(jv_details)
-
-	return jv_details_list
-
-
-def get_prev_doc_list(obj, prev_doctype):
-	"""
-		Returns a list of previous doc's names
-	"""
-	prevdoc_list = []
-	for ch in obj.doclist:
-		if ch.fields.get('prevdoc_docname') and ch.fields.get('prevdoc_doctype')==prev_doctype:
-			prevdoc_list.append(ch.fields.get('prevdoc_docname'))
-	return prevdoc_list
-
-
-def get_inv_list(table, field, value):
-	"""
-		Returns invoice list
-	"""
-	if isinstance(value, basestring):
-		return webnotes.conn.sql("""\
-			SELECT DISTINCT parent FROM `%s`
-			WHERE %s='%s' AND docstatus=1""" % (table, field, value))
-	elif isinstance(value, list):
-		return webnotes.conn.sql("""\
-			SELECT DISTINCT parent FROM `%s`
-			WHERE %s IN ("%s") AND docstatus=1""" % (table, field, '", "'.join(value)))
-	else:
-		return []
-	
-
-def get_delivery_note_details(doc, children, fiscal_year):
-	"""
-		Gets sales invoice numbers from delivery note details
-		and returns detail records for jv
-	"""
-	jv_details_list = []
-	
-	dn_obj = get_obj('Delivery Note', doc['delivery_note_no'], with_children=1)
-	
-	inv_list = get_inv_list('tabSales Invoice Item', 'delivery_note', doc['delivery_note_no'])
-
-	if inv_list:
-		jv_details_list = get_jv_details_from_inv_list(doc, children, fiscal_year, inv_list, jv_details_list)
-	
-	if not (inv_list and jv_details_list):
-		so_list = get_prev_doc_list(dn_obj, 'Sales Order')
-		inv_list = get_inv_list('tabSales Invoice Item', 'sales_order', so_list)
-		if inv_list:
-			jv_details_list = get_jv_details_from_inv_list(doc, children, fiscal_year, inv_list, jv_details_list)
-
-	return jv_details_list
-
-
-def get_purchase_receipt_details(doc, children, fiscal_year):
-	"""
-		Gets purchase invoice numbers from purchase receipt details
-		and returns detail records for jv
-	"""
-	jv_details_list = []
-	
-	pr_obj = get_obj('Purchase Receipt', doc['purchase_receipt_no'], with_children=1)
-	
-	inv_list = get_inv_list('tabPurchase Invoice Item', 'purchase_receipt', doc['purchase_receipt_no'])
-
-	if inv_list:
-		jv_details_list = get_jv_details_from_inv_list(doc, children, fiscal_year, inv_list, jv_details_list)
-	
-	if not (inv_list and jv_details_list):
-		po_list = get_prev_doc_list(pr_obj, 'Purchase Order')
-		inv_list = get_inv_list('tabPurchase Invoice Item', 'purchase_order', po_list)
-		if inv_list:
-			jv_details_list = get_jv_details_from_inv_list(doc, children, fiscal_year, inv_list, jv_details_list)
-
-	return jv_details_list
diff --git a/accounts/doctype/pos_setting/test_pos_setting.py b/accounts/doctype/pos_setting/test_pos_setting.py
new file mode 100644
index 0000000..2c45c4d
--- /dev/null
+++ b/accounts/doctype/pos_setting/test_pos_setting.py
@@ -0,0 +1,14 @@
+test_records = [
+	[{
+		"doctype": "POS Setting",
+		"name": "_Test POS Setting",
+		"currency": "INR",
+		"conversion_rate": 1.0,
+		"price_list_name": "_Test Price List",
+		"company": "_Test Company",
+		"warehouse": "_Test Warehouse",
+		"cash_bank_account": "_Test Account Bank Account - _TC",
+		"income_account": "Sales - _TC",
+		"cost_center": "_Test Cost Center - _TC",
+	}]
+]
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index de3ee95..0271a58 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -47,6 +47,7 @@
 	def validate(self):
 		super(DocType, self).validate()
 		
+		self.validate_posting_time()
 		self.so_dn_required()
 		self.validate_proj_cust()
 		sales_com_obj = get_obj('Sales Common')
@@ -636,10 +637,9 @@
 
 				# Reduce actual qty from warehouse
 				self.make_sl_entry( d, d['warehouse'], - flt(d['qty']) , 0, update_stock)
-				
+		
 		get_obj('Stock Ledger', 'Stock Ledger').update_stock(self.values)
-	
-
+		
 	def get_actual_qty(self,args):
 		args = eval(args)
 		actual_qty = webnotes.conn.sql("select actual_qty from `tabBin` where item_code = '%s' and warehouse = '%s'" % (args['item_code'], args['warehouse']), as_dict=1)
diff --git a/accounts/doctype/sales_invoice/sales_invoice.txt b/accounts/doctype/sales_invoice/sales_invoice.txt
index c7c8fba..35710b4 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.txt
+++ b/accounts/doctype/sales_invoice/sales_invoice.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-01-29 17:54:09", 
+  "creation": "2013-03-12 11:56:25", 
   "docstatus": 0, 
-  "modified": "2013-01-29 18:22:52", 
+  "modified": "2013-03-12 14:31:24", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -77,7 +77,6 @@
   "print_hide": 1
  }, 
  {
-  "default": "1", 
   "depends_on": "eval:doc.is_pos==1", 
   "doctype": "DocField", 
   "fieldname": "update_stock", 
diff --git a/accounts/doctype/sales_invoice/test_sales_invoice.py b/accounts/doctype/sales_invoice/test_sales_invoice.py
index 84eddea..91c0622 100644
--- a/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -297,7 +297,7 @@
 		])
 		ps.insert()
 		
-test_dependencies = ["Journal Voucher"]
+test_dependencies = ["Journal Voucher", "POS Setting"]
 
 test_records = [
 	[
diff --git a/accounts/page/accounts_home/accounts_home.js b/accounts/page/accounts_home/accounts_home.js
index f2faf93..403d7bd 100644
--- a/accounts/page/accounts_home/accounts_home.js
+++ b/accounts/page/accounts_home/accounts_home.js
@@ -64,12 +64,6 @@
 				description: "Close Balance Sheet and book Profit or Loss."
 			},
 			{
-				"route":"Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool",
-				"label": wn._("Sales and Purchase Return Tool"),
-				description: wn._("Manage sales or purchase returns"),
-				"doctype": "Sales and Purchase Return Tool"
-			},
-			{
 				"page":"voucher-import-tool",
 				"label": wn._("Voucher Import Tool"),
 				"description": "Import accounting entries from CSV."
diff --git a/buying/page/buying_home/buying_home.js b/buying/page/buying_home/buying_home.js
index 922e7ac..2df5f6f 100644
--- a/buying/page/buying_home/buying_home.js
+++ b/buying/page/buying_home/buying_home.js
@@ -80,12 +80,6 @@
 		title: wn._("Tools"),
 		icon: "icon-wrench",
 		items: [
-			{
-				"route":"Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool",
-				"label":wn._("Purchase Returns"),
-				"description":wn._("Helper for managing return of goods (sales or purchase)"),
-				doctype: "Sales and Purchase Return Tool"
-			},
 		]
 	},
 	{
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index 84db372..183352c 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,4 +1,5 @@
 erpnext.updates = [
+	["19th March", ["Sales and Purchase Return Tool deprecated. Use Stock Entry instead."]],
 	["12th March", ["Updates to website module. Added more options in Style Settings and Website Settings."]],
 	["5th March", ["Refactored Upload Attendance Tool"]],
 	["4th March", ["Lead organization added in Quotation classic/spartan/modern print format"]],
diff --git a/patches/march_2013/p04_pos_update_stock_check.py b/patches/march_2013/p04_pos_update_stock_check.py
new file mode 100644
index 0000000..da48efe
--- /dev/null
+++ b/patches/march_2013/p04_pos_update_stock_check.py
@@ -0,0 +1,18 @@
+import webnotes
+
+def execute():
+	from webnotes.utils import cint
+	webnotes.reload_doc("setup", "doctype", "global_defaults")
+	
+	doctype_list = webnotes.get_doctype("Sales Invoice")
+	update_stock_df = doctype_list.get_field("update_stock")
+	
+	global_defaults = webnotes.bean("Global Defaults", "Global Defaults")
+	global_defaults.doc.update_stock = cint(update_stock_df.default)
+	global_defaults.save()
+
+	webnotes.conn.sql("""delete from `tabProperty Setter`
+		where doc_type='Sales Invoice' and doctype_or_field='DocField'
+		and field_name='update_stock' and property='default'""")
+		
+	webnotes.reload_doc("accounts", "doctype", "sales_invoice")
\ No newline at end of file
diff --git a/patches/march_2013/p06_remove_sales_purchase_return_tool.py b/patches/march_2013/p06_remove_sales_purchase_return_tool.py
new file mode 100644
index 0000000..e907e4a
--- /dev/null
+++ b/patches/march_2013/p06_remove_sales_purchase_return_tool.py
@@ -0,0 +1,5 @@
+import webnotes
+
+def execute():
+	webnotes.delete_doc("DocType", "Sales and Purchase Return Item")
+	webnotes.delete_doc("DocType", "Sales and Purchase Return Tool")
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index f5e3f40..236ef45 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -211,5 +211,7 @@
 	"patches.march_2013.p02_get_global_default",
 	"patches.march_2013.p03_rename_blog_to_blog_post",
 	"execute:webnotes.reload_doc('hr', 'search_criteria', 'monthly_attendance_details')",
+	"patches.march_2013.p04_pos_update_stock_check",
 	"patches.march_2013.p05_payment_reconciliation",
+	"patches.march_2013.p06_remove_sales_purchase_return_tool",
 ]
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/__init__.py b/selling/doctype/sales_and_purchase_return_item/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/selling/doctype/sales_and_purchase_return_item/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/_messages_doc.json b/selling/doctype/sales_and_purchase_return_item/locale/_messages_doc.json
deleted file mode 100644
index 5129542..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/_messages_doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-[
- "Selling", 
- "Description", 
- "Sales and Purchase Return Item", 
- "Qty", 
- "Serial No", 
- "Rate", 
- "Detail Name", 
- "Batch No", 
- "Returned Qty", 
- "Item Code", 
- "UOM"
-]
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/ar-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/ar-doc.json
deleted file mode 100644
index 79de9e8..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/ar-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "\u0644\u0627 \u062f\u0641\u0639\u0629", 
- "Description": "\u0648\u0635\u0641", 
- "Detail Name": "\u0627\u0644\u0627\u0633\u0645", 
- "Item Code": "\u0627\u0644\u0628\u0646\u062f \u0627\u0644\u0631\u0645\u0632", 
- "Qty": "\u0627\u0644\u0643\u0645\u064a\u0629", 
- "Rate": "\u0645\u0639\u062f\u0644", 
- "Returned Qty": "\u0639\u0627\u062f \u0627\u0644\u0643\u0645\u064a\u0629", 
- "Sales and Purchase Return Item": "\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0634\u0631\u0627\u0621 \u0627\u0644\u0633\u0644\u0639\u0629 \u0627\u0644\u0639\u0648\u062f\u0629", 
- "Selling": "\u0628\u064a\u0639", 
- "Serial No": "\u0627\u0644\u0645\u0633\u0644\u0633\u0644 \u0644\u0627", 
- "UOM": "UOM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/de-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/de-doc.json
deleted file mode 100644
index bfcbf4e..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/de-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "Batch No", 
- "Description": "Beschreibung", 
- "Detail Name": "Detail Name", 
- "Item Code": "Item Code", 
- "Qty": "Menge", 
- "Rate": "Rate", 
- "Returned Qty": "Kehrte Menge", 
- "Sales and Purchase Return Item": "Sales and Purchase Zur\u00fcck Artikel", 
- "Selling": "Verkauf", 
- "Serial No": "Serial In", 
- "UOM": "UOM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/es-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/es-doc.json
deleted file mode 100644
index 189f5e9..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/es-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "Lote n \u00ba", 
- "Description": "Descripci\u00f3n", 
- "Detail Name": "Detalle Nombre", 
- "Item Code": "C\u00f3digo del art\u00edculo", 
- "Qty": "Cantidad", 
- "Rate": "Velocidad", 
- "Returned Qty": "Cantidad devuelta", 
- "Sales and Purchase Return Item": "Venta y Compra de art\u00edculo de vuelta", 
- "Selling": "De venta", 
- "Serial No": "N\u00famero de orden", 
- "UOM": "UOM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/fr-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/fr-doc.json
deleted file mode 100644
index 5064cd7..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/fr-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "Aucun lot", 
- "Description": "Description", 
- "Detail Name": "Nom de d\u00e9tails", 
- "Item Code": "Code de l&#39;article", 
- "Qty": "Qt\u00e9", 
- "Rate": "Taux", 
- "Returned Qty": "Quantit\u00e9 retourn\u00e9e", 
- "Sales and Purchase Return Item": "Vente et achat du lot Retour", 
- "Selling": "Vente", 
- "Serial No": "N \u00b0 de s\u00e9rie", 
- "UOM": "Emballage"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/hi-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/hi-doc.json
deleted file mode 100644
index 283b266..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/hi-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "\u0915\u094b\u0908 \u092c\u0948\u091a", 
- "Description": "\u0935\u093f\u0935\u0930\u0923", 
- "Detail Name": "\u0935\u093f\u0938\u094d\u0924\u093e\u0930 \u0938\u0947 \u0928\u093e\u092e", 
- "Item Code": "\u0906\u0907\u091f\u092e \u0915\u094b\u0921", 
- "Qty": "\u092e\u093e\u0924\u094d\u0930\u093e", 
- "Rate": "\u0926\u0930", 
- "Returned Qty": "\u0935\u093e\u092a\u0938 \u0906 \u0917\u090f \u092e\u093e\u0924\u094d\u0930\u093e", 
- "Sales and Purchase Return Item": "\u092c\u093f\u0915\u094d\u0930\u0940 \u0914\u0930 \u0916\u0930\u0940\u0926 \u0915\u0947 \u092e\u0926 \u0935\u093e\u092a\u0938\u0940", 
- "Selling": "\u0935\u093f\u0915\u094d\u0930\u092f", 
- "Serial No": "\u0928\u0939\u0940\u0902 \u0938\u0940\u0930\u093f\u092f\u0932", 
- "UOM": "UOM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/hr-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/hr-doc.json
deleted file mode 100644
index 6d5ba06..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/hr-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "Hrpa Ne", 
- "Description": "Opis", 
- "Detail Name": "Detalj Ime", 
- "Item Code": "Stavka \u0160ifra", 
- "Qty": "Kol", 
- "Rate": "Stopa", 
- "Returned Qty": "Vra\u0107eno Kol", 
- "Sales and Purchase Return Item": "Prodaja i kupnja Povratak Stavka", 
- "Selling": "Prodaja", 
- "Serial No": "Serijski br", 
- "UOM": "UOM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/nl-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/nl-doc.json
deleted file mode 100644
index 8fe31be..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/nl-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "Batch nr.", 
- "Description": "Beschrijving", 
- "Detail Name": "Detail Naam", 
- "Item Code": "Artikelcode", 
- "Qty": "Aantal", 
- "Rate": "Tarief", 
- "Returned Qty": "Geretourneerde Aantal", 
- "Sales and Purchase Return Item": "Verkoop en Inkoop Return Item", 
- "Selling": "Selling", 
- "Serial No": "Serienummer", 
- "UOM": "Verpakking"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/pt-BR-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/pt-BR-doc.json
deleted file mode 100644
index 3cc5b34..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/pt-BR-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "N\u00ba do Lote", 
- "Description": "Descri\u00e7\u00e3o", 
- "Detail Name": "Nome do Detalhe", 
- "Item Code": "C\u00f3digo do Item", 
- "Qty": "Qtde.", 
- "Rate": "Taxa", 
- "Returned Qty": "Qtde. retornada", 
- "Sales and Purchase Return Item": "Item de retorno de compra e venda", 
- "Selling": "Vendas", 
- "Serial No": "N\u00ba de S\u00e9rie", 
- "UOM": "UDM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/pt-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/pt-doc.json
deleted file mode 100644
index 56340bc..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/pt-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "No lote", 
- "Description": "Descri\u00e7\u00e3o", 
- "Detail Name": "Nome detalhes", 
- "Item Code": "C\u00f3digo do artigo", 
- "Qty": "Qty", 
- "Rate": "Taxa", 
- "Returned Qty": "Qtde voltou", 
- "Sales and Purchase Return Item": "Vendas e item retorno de compra", 
- "Selling": "Vendendo", 
- "Serial No": "N \u00ba de S\u00e9rie", 
- "UOM": "UOM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/sr-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/sr-doc.json
deleted file mode 100644
index e507094..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/sr-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "\u0413\u0440\u0443\u043f\u043d\u043e \u041d\u0435\u043c\u0430", 
- "Description": "\u041e\u043f\u0438\u0441", 
- "Detail Name": "\u0414\u0435\u0442\u0430\u0459 \u0418\u043c\u0435", 
- "Item Code": "\u0428\u0438\u0444\u0440\u0430", 
- "Qty": "\u041a\u043e\u043b", 
- "Rate": "\u0421\u0442\u043e\u043f\u0430", 
- "Returned Qty": "\u0412\u0440\u0430\u045b\u0435\u043d\u0438 \u041a\u043e\u043b", 
- "Sales and Purchase Return Item": "\u041f\u0440\u043e\u0434\u0430\u0458\u0430 \u0438 \u043a\u0443\u043f\u043e\u0432\u0438\u043d\u0430 \u041f\u043e\u0432\u0440\u0430\u0442\u0430\u043a \u0430\u0443\u043a\u0446\u0438\u0458\u0438", 
- "Selling": "\u041f\u0440\u043e\u0434\u0430\u0458\u0430", 
- "Serial No": "\u0421\u0435\u0440\u0438\u0458\u0441\u043a\u0438 \u0431\u0440\u043e\u0458", 
- "UOM": "\u0423\u041e\u041c"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/ta-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/ta-doc.json
deleted file mode 100644
index c60a081..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/ta-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "\u0ba4\u0bc6\u0bbe\u0b95\u0bc1\u0ba4\u0bbf \u0b87\u0bb2\u0bcd\u0bb2\u0bc8", 
- "Description": "\u0bb5\u0bbf\u0bb3\u0b95\u0bcd\u0b95\u0bae\u0bcd", 
- "Detail Name": "\u0bb5\u0bbf\u0bb0\u0bbf\u0bb5\u0bbe\u0b95 \u0baa\u0bc6\u0baf\u0bb0\u0bcd", 
- "Item Code": "\u0b89\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0baf\u0bc8 \u0b95\u0bc7\u0bbe\u0b9f\u0bcd", 
- "Qty": "\u0b85\u0bb3\u0bb5\u0bc1", 
- "Rate": "\u0bb5\u0bbf\u0bb2\u0bc8", 
- "Returned Qty": "\u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bbf \u0b85\u0bb3\u0bb5\u0bc1", 
- "Sales and Purchase Return Item": "\u0bb5\u0bbf\u0bb1\u0bcd\u0baa\u0ba9\u0bc8 \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b95\u0bc6\u0bbe\u0bb3\u0bcd\u0bae\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa \u0b89\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bbf", 
- "Selling": "\u0bb5\u0bbf\u0bb1\u0bcd\u0baa\u0ba9\u0bc8", 
- "Serial No": "\u0b87\u0bb2\u0bcd\u0bb2\u0bc8 \u0ba4\u0bc6\u0bbe\u0b9f\u0bb0\u0bcd", 
- "UOM": "\u0bae\u0bc6\u0bbe\u0bb1\u0b9f\u0bcd\u0b9f\u0bc1\u0bb5 \u0baa\u0bb2\u0bcd\u0b95\u0bb2\u0bc8\u0b95\u0bb4\u0b95\u0bae\u0bcd"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/locale/th-doc.json b/selling/doctype/sales_and_purchase_return_item/locale/th-doc.json
deleted file mode 100644
index b47f740..0000000
--- a/selling/doctype/sales_and_purchase_return_item/locale/th-doc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Batch No": "\u0e0a\u0e38\u0e14\u0e44\u0e21\u0e48\u0e21\u0e35", 
- "Description": "\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30", 
- "Detail Name": "\u0e0a\u0e37\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14", 
- "Item Code": "\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32", 
- "Qty": "\u0e08\u0e33\u0e19\u0e27\u0e19", 
- "Rate": "\u0e2d\u0e31\u0e15\u0e23\u0e32", 
- "Returned Qty": "\u0e08\u0e33\u0e19\u0e27\u0e19\u0e01\u0e25\u0e31\u0e1a", 
- "Sales and Purchase Return Item": "\u0e01\u0e32\u0e23\u0e02\u0e32\u0e22\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e01\u0e25\u0e31\u0e1a", 
- "Selling": "\u0e02\u0e32\u0e22", 
- "Serial No": "\u0e2d\u0e19\u0e38\u0e01\u0e23\u0e21\u0e44\u0e21\u0e48\u0e21\u0e35", 
- "UOM": "UOM"
-}
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.py b/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.py
deleted file mode 100644
index 7f48feb..0000000
--- a/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.txt b/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.txt
deleted file mode 100644
index 4f844b3..0000000
--- a/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-[
- {
-  "creation": "2013-02-22 01:27:52", 
-  "docstatus": 0, 
-  "modified": "2013-03-07 07:03:30", 
-  "modified_by": "Administrator", 
-  "owner": "wasim@webnotestech.com"
- }, 
- {
-  "doctype": "DocType", 
-  "istable": 1, 
-  "module": "Selling", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Sales and Purchase Return Item", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Sales and Purchase Return Item"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "item_code", 
-  "fieldtype": "Link", 
-  "label": "Item Code", 
-  "oldfieldname": "item_code", 
-  "oldfieldtype": "Link", 
-  "options": "Item", 
-  "read_only": 1, 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "description", 
-  "fieldtype": "Data", 
-  "label": "Description", 
-  "oldfieldname": "description", 
-  "oldfieldtype": "Data", 
-  "print_width": "300px", 
-  "read_only": 1, 
-  "width": "300px"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "uom", 
-  "fieldtype": "Link", 
-  "label": "UOM", 
-  "oldfieldname": "uom", 
-  "oldfieldtype": "Link", 
-  "options": "UOM", 
-  "read_only": 1, 
-  "search_index": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "rate", 
-  "fieldtype": "Currency", 
-  "label": "Rate", 
-  "oldfieldname": "rate", 
-  "oldfieldtype": "Currency", 
-  "options": "Company:company:default_currency", 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "qty", 
-  "fieldtype": "Data", 
-  "label": "Qty", 
-  "oldfieldname": "qty", 
-  "oldfieldtype": "Data", 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "returned_qty", 
-  "fieldtype": "Data", 
-  "label": "Returned Qty", 
-  "oldfieldname": "returned_qty", 
-  "oldfieldtype": "Data", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "serial_no", 
-  "fieldtype": "Small Text", 
-  "label": "Serial No"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "batch_no", 
-  "fieldtype": "Data", 
-  "label": "Batch No"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "detail_name", 
-  "fieldtype": "Data", 
-  "hidden": 1, 
-  "label": "Detail Name", 
-  "oldfieldname": "detail_name", 
-  "oldfieldtype": "Data", 
-  "read_only": 1
- }
-]
\ No newline at end of file
diff --git a/selling/page/selling_home/selling_home.js b/selling/page/selling_home/selling_home.js
index 7af9b71..994bb4a 100644
--- a/selling/page/selling_home/selling_home.js
+++ b/selling/page/selling_home/selling_home.js
@@ -121,12 +121,6 @@
 		icon: "icon-wrench",
 		items: [
 			{
-				"route":"Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool",
-				"label":wn._("Sales Returns"),
-				"description":wn._("Helper for managing return of goods (sales or purchase)"),
-				doctype: "Sales and Purchase Return Tool"
-			},
-			{
 				"route":"Form/SMS Center/SMS Center",
 				"label":wn._("SMS Center"),
 				"description":wn._("Send mass SMS to your contacts"),
diff --git a/setup/doctype/global_defaults/global_defaults.txt b/setup/doctype/global_defaults/global_defaults.txt
index 960da7e..a55c6c0 100644
--- a/setup/doctype/global_defaults/global_defaults.txt
+++ b/setup/doctype/global_defaults/global_defaults.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-02-19 12:28:27", 
+  "creation": "2013-03-08 15:37:09", 
   "docstatus": 0, 
-  "modified": "2013-02-20 14:09:00", 
+  "modified": "2013-03-12 18:48:53", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -250,6 +250,13 @@
   "fieldtype": "Column Break"
  }, 
  {
+  "description": "If checked, then in POS Sales Invoice, Update Stock gets checked by default", 
+  "doctype": "DocField", 
+  "fieldname": "update_stock", 
+  "fieldtype": "Check", 
+  "label": "Update Stock when using POS Sales Invoice"
+ }, 
+ {
   "doctype": "DocField", 
   "fieldname": "account_info", 
   "fieldtype": "HTML", 
diff --git a/stock/doctype/bin/bin.py b/stock/doctype/bin/bin.py
index 37ecf85..e1bc6bd 100644
--- a/stock/doctype/bin/bin.py
+++ b/stock/doctype/bin/bin.py
@@ -70,7 +70,7 @@
 				"posting_date": args.get("posting_date"),
 				"posting_time": 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"))
@@ -83,11 +83,11 @@
 		 	flt(self.doc.indented_qty) + flt(self.doc.planned_qty) - flt(self.doc.reserved_qty)
 		
 		self.doc.save()
-				
+		
 		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("voucher_type"), args.get("voucher_no"))
-			
+		
 	def get_first_sle(self):
 		sle = sql("""
 			select * from `tabStock Ledger Entry`
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 229ec40..46c6ee4 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -133,7 +133,7 @@
 		super(DocType, self).validate()
 		
 		import utilities
-		utilities.validate_status(self.doc.status, ["Draft", "submitted", "Cancelled"])
+		utilities.validate_status(self.doc.status, ["Draft", "Submitted", "Cancelled"])
 
 		self.so_required()
 		self.validate_fiscal_year()
diff --git a/stock/doctype/sales_and_purchase_return_tool/__init__.py b/stock/doctype/sales_and_purchase_return_tool/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/_messages_doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/_messages_doc.json
deleted file mode 100644
index 979f20f..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/_messages_doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-[
- "Make Credit Note", 
- "Make Excise Invoice", 
- "Sales Return", 
- "Get Items", 
- "Delivery Note No", 
- "Company", 
- "Customer/Supplier", 
- "Sales and Purchase Return Tool", 
- "Make Debit Note", 
- "Cust/Supp Address", 
- "Sales Invoice No", 
- "Make Stock Entry", 
- "Purchase Receipt No", 
- "Purchase Return", 
- "Sales and Purchase Return Items", 
- "Return Date", 
- "Cust/Supp Name", 
- "Return Type", 
- "Stock"
-]
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/ar-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/ar-doc.json
deleted file mode 100644
index d11ece6..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/ar-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "\u0634\u0631\u0643\u0629", 
- "Cust/Supp Address": "\u0627\u0644\u0632\u0628\u0648\u0646 / \u0627\u0644\u0645\u0644\u062d\u0642 \u0627\u0644\u0639\u0646\u0648\u0627\u0646", 
- "Cust/Supp Name": "\u0627\u0644\u0632\u0628\u0648\u0646 / \u0627\u0644\u0645\u0644\u062d\u0642 \u0627\u0633\u0645", 
- "Customer/Supplier": "\u0627\u0644\u0639\u0645\u064a\u0644 / \u0645\u0632\u0648\u062f", 
- "Delivery Note No": "\u0645\u0644\u0627\u062d\u0638\u0629 \u0644\u0627 \u062a\u0633\u0644\u064a\u0645", 
- "Get Items": "\u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u0639\u0646\u0627\u0635\u0631", 
- "Make Credit Note": "\u062c\u0639\u0644 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a", 
- "Make Debit Note": "\u0645\u0644\u0627\u062d\u0638\u0629 \u062c\u0639\u0644 \u0627\u0644\u062e\u0635\u0645", 
- "Make Excise Invoice": "\u062c\u0639\u0644 \u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u0627\u0644\u0645\u0643\u0648\u0633", 
- "Make Stock Entry": "\u062c\u0639\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0644\u0644\u0633\u0647\u0645", 
- "Purchase Receipt No": "\u0644\u0627 \u0634\u0631\u0627\u0621 \u0627\u0633\u062a\u0644\u0627\u0645", 
- "Purchase Return": "\u0634\u0631\u0627\u0621 \u0627\u0644\u0639\u0648\u062f\u0629", 
- "Return Date": "\u0627\u0644\u0639\u0648\u062f\u0629 \u062a\u0627\u0631\u064a\u062e", 
- "Return Type": "\u0627\u0644\u0639\u0648\u062f\u0629 \u0646\u0648\u0639", 
- "Sales Invoice No": "\u0641\u0627\u062a\u0648\u0631\u0629 \u0645\u0628\u064a\u0639\u0627\u062a \u0644\u0627", 
- "Sales Return": "\u0645\u0628\u064a\u0639\u0627\u062a \u0627\u0644\u0639\u0648\u062f\u0629", 
- "Sales and Purchase Return Items": "\u0645\u0627\u062f\u0629 \u0639\u0627\u0626\u062f \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0627\u0644\u0645\u0634\u062a\u0631\u064a\u0627\u062a", 
- "Sales and Purchase Return Tool": "\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0634\u0631\u0627\u0621 \u0623\u062f\u0627\u0629 \u0627\u0644\u0639\u0648\u062f\u0629", 
- "Stock": "\u0627\u0644\u0623\u0648\u0631\u0627\u0642 \u0627\u0644\u0645\u0627\u0644\u064a\u0629"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/de-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/de-doc.json
deleted file mode 100644
index 9bd8c9a..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/de-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "Firma", 
- "Cust/Supp Address": "Cust / Supp Adresse", 
- "Cust/Supp Name": "Cust / Supp Namen", 
- "Customer/Supplier": "Kunde / Lieferant", 
- "Delivery Note No": "Lieferschein Nein", 
- "Get Items": "Holen Artikel", 
- "Make Credit Note": "Machen Gutschrift", 
- "Make Debit Note": "Machen Lastschrift", 
- "Make Excise Invoice": "Machen Excise Rechnung", 
- "Make Stock Entry": "Machen Eintrag Stock", 
- "Purchase Receipt No": "Kaufbeleg", 
- "Purchase Return": "Kauf zur\u00fcckgeben", 
- "Return Date": "Zur\u00fcck Datum", 
- "Return Type": "R\u00fcckgabetyp", 
- "Sales Invoice No": "Sales Invoice In", 
- "Sales Return": "Umsatzrendite", 
- "Sales and Purchase Return Items": "Verkauf und Kauf zur\u00fccksenden Artikel", 
- "Sales and Purchase Return Tool": "Sales and Purchase Return-Tool", 
- "Stock": "Lager"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/es-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/es-doc.json
deleted file mode 100644
index ac44049..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/es-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "Empresa", 
- "Cust/Supp Address": "Cust / Supp Direcci\u00f3n", 
- "Cust/Supp Name": "Cust / Supp Nombre", 
- "Customer/Supplier": "Cliente / Proveedor", 
- "Delivery Note No": "Entrega Nota No", 
- "Get Items": "Obtener elementos", 
- "Make Credit Note": "Hacer Nota de Cr\u00e9dito", 
- "Make Debit Note": "Hacer Nota de D\u00e9bito", 
- "Make Excise Invoice": "Hacer Factura Impuestos Especiales", 
- "Make Stock Entry": "Hacer de la entrada", 
- "Purchase Receipt No": "No recibo de compra", 
- "Purchase Return": "Comprar Volver", 
- "Return Date": "Fecha de regreso", 
- "Return Type": "Devuelto", 
- "Sales Invoice No": "Ventas factura n \u00ba", 
- "Sales Return": "Ventas Retorno", 
- "Sales and Purchase Return Items": "Ventas y comprar art\u00edculos de Retorno", 
- "Sales and Purchase Return Tool": "Herramienta de ventas y devoluci\u00f3n de compra", 
- "Stock": "Valores"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/fr-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/fr-doc.json
deleted file mode 100644
index c3fc153..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/fr-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "Entreprise", 
- "Cust/Supp Address": "Cust / Supp Adresse", 
- "Cust/Supp Name": "Cust / Supp Nom", 
- "Customer/Supplier": "Client / Fournisseur", 
- "Delivery Note No": "Remarque Aucune livraison", 
- "Get Items": "Obtenir les \u00e9l\u00e9ments", 
- "Make Credit Note": "Assurez note de cr\u00e9dit", 
- "Make Debit Note": "Assurez note de d\u00e9bit", 
- "Make Excise Invoice": "Assurez facture d&#39;accise", 
- "Make Stock Entry": "Assurez Entr\u00e9e Stock", 
- "Purchase Receipt No": "Achetez un accus\u00e9 de r\u00e9ception", 
- "Purchase Return": "Achat de retour", 
- "Return Date": "Date de retour", 
- "Return Type": "Retour Type", 
- "Sales Invoice No": "Aucune facture de vente", 
- "Sales Return": "Ventes de retour", 
- "Sales and Purchase Return Items": "Ventes et articles de retour d&#39;achat", 
- "Sales and Purchase Return Tool": "Outil de vente et de retour d&#39;achat", 
- "Stock": "Stock"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/hi-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/hi-doc.json
deleted file mode 100644
index b407775..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/hi-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "\u0915\u0902\u092a\u0928\u0940", 
- "Cust/Supp Address": "Cust / Supp \u092a\u0924\u093e", 
- "Cust/Supp Name": "Cust / Supp \u0928\u093e\u092e", 
- "Customer/Supplier": "\u0917\u094d\u0930\u093e\u0939\u0915 / \u0906\u092a\u0942\u0930\u094d\u0924\u093f\u0915\u0930\u094d\u0924\u093e", 
- "Delivery Note No": "\u0921\u093f\u0932\u093f\u0935\u0930\u0940 \u0928\u094b\u091f", 
- "Get Items": "\u0906\u0907\u091f\u092e \u092a\u093e\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f", 
- "Make Credit Note": "\u0915\u094d\u0930\u0947\u0921\u093f\u091f \u0928\u094b\u091f", 
- "Make Debit Note": "\u0921\u0947\u092c\u093f\u091f \u0928\u094b\u091f", 
- "Make Excise Invoice": "\u0909\u0924\u094d\u092a\u093e\u0926 \u0936\u0941\u0932\u094d\u0915 \u091a\u093e\u0932\u093e\u0928", 
- "Make Stock Entry": "\u0938\u094d\u091f\u0949\u0915 \u090f\u0902\u091f\u094d\u0930\u0940", 
- "Purchase Receipt No": "\u0930\u0938\u0940\u0926 \u0916\u0930\u0940\u0926 \u0928\u0939\u0940\u0902", 
- "Purchase Return": "\u0915\u094d\u0930\u092f \u0935\u093e\u092a\u0938\u0940", 
- "Return Date": "\u0924\u093f\u0925\u093f \u0932\u094c\u091f\u0947\u0902", 
- "Return Type": "\u092a\u094d\u0930\u0915\u093e\u0930 \u0932\u094c\u091f\u0947\u0902", 
- "Sales Invoice No": "\u092c\u093f\u0915\u094d\u0930\u0940 \u091a\u093e\u0932\u093e\u0928 \u0928\u0939\u0940\u0902", 
- "Sales Return": "\u092c\u093f\u0915\u094d\u0930\u0940 \u0932\u094c\u091f\u0947\u0902", 
- "Sales and Purchase Return Items": "\u092c\u093f\u0915\u094d\u0930\u0940 \u0914\u0930 \u0916\u0930\u0940\u0926 \u0915\u0947 \u0930\u093f\u091f\u0930\u094d\u0928 \u0906\u0907\u091f\u092e", 
- "Sales and Purchase Return Tool": "\u092c\u093f\u0915\u094d\u0930\u0940 \u0914\u0930 \u0916\u0930\u0940\u0926 \u0915\u0947 \u0930\u093f\u091f\u0930\u094d\u0928 \u091f\u0942\u0932", 
- "Stock": "\u0938\u094d\u091f\u0949\u0915"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/hr-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/hr-doc.json
deleted file mode 100644
index aa579a9..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/hr-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "Dru\u0161tvo", 
- "Cust/Supp Address": "Cust / Supp Adresa", 
- "Cust/Supp Name": "Cust / Supp Ime", 
- "Customer/Supplier": "Kupac / Dobavlja\u010d", 
- "Delivery Note No": "Dostava Napomena Ne", 
- "Get Items": "Nabavite artikle", 
- "Make Credit Note": "Napravite Credit Note", 
- "Make Debit Note": "Napravite tere\u0107enju", 
- "Make Excise Invoice": "Napravite tro\u0161arinama fakture", 
- "Make Stock Entry": "Napravite Stock Entry", 
- "Purchase Receipt No": "Ra\u010dun kupnje Ne", 
- "Purchase Return": "Kupnja Povratak", 
- "Return Date": "Povratak Datum", 
- "Return Type": "Povratak Vid", 
- "Sales Invoice No": "Prodaja Ra\u010dun br", 
- "Sales Return": "Prodaje Povratak", 
- "Sales and Purchase Return Items": "Prodaja i kupnja Povratak Stavke", 
- "Sales and Purchase Return Tool": "Prodaja i kupnja Povratak Tool", 
- "Stock": "Zaliha"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/nl-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/nl-doc.json
deleted file mode 100644
index fd586c1..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/nl-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "Vennootschap", 
- "Cust/Supp Address": "Cust / Supp Adres", 
- "Cust/Supp Name": "Cust / Supp Naam", 
- "Customer/Supplier": "Klant / leverancier", 
- "Delivery Note No": "Levering aantekening", 
- "Get Items": "Get Items", 
- "Make Credit Note": "Maak Creditnota", 
- "Make Debit Note": "Maak debetnota", 
- "Make Excise Invoice": "Maak Accijnzen Factuur", 
- "Make Stock Entry": "Maak Stock Entry", 
- "Purchase Receipt No": "Aankoopbewijs Geen", 
- "Purchase Return": "Aankoop Return", 
- "Return Date": "Keer terug Datum", 
- "Return Type": "Terug Type", 
- "Sales Invoice No": "Verkoop Factuur nr.", 
- "Sales Return": "Verkoop Terug", 
- "Sales and Purchase Return Items": "Verkoop en Inkoop Return Items", 
- "Sales and Purchase Return Tool": "Verkoop en Inkoop Return Tool", 
- "Stock": "Voorraad"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/pt-BR-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/pt-BR-doc.json
deleted file mode 100644
index f218bfa..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/pt-BR-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "Empresa", 
- "Cust/Supp Address": "Endere\u00e7o do Cliente/Fornecedor", 
- "Cust/Supp Name": "Nome do Cliente/Fornecedor", 
- "Customer/Supplier": "Cliente / Fornecedor", 
- "Delivery Note No": "N\u00ba da Guia de Remessa", 
- "Get Items": "Obter itens", 
- "Make Credit Note": "Fazer Nota de Cr\u00e9dito", 
- "Make Debit Note": "Fazer Nota de D\u00e9bito", 
- "Make Excise Invoice": "Fazer fatura de imposto", 
- "Make Stock Entry": "Fazer lan\u00e7amento de estoque", 
- "Purchase Receipt No": "N\u00ba do Recibo de Compra", 
- "Purchase Return": "Devolu\u00e7\u00e3o de Compra", 
- "Return Date": "Data de retorno", 
- "Return Type": "Tipo de retorno", 
- "Sales Invoice No": "N\u00ba da Nota Fiscal de Venda", 
- "Sales Return": "Retorno de Vendas", 
- "Sales and Purchase Return Items": "Itens de retorno de compra e venda", 
- "Sales and Purchase Return Tool": "Ferramenta de retorno de compra e venda", 
- "Stock": "Estoque"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/pt-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/pt-doc.json
deleted file mode 100644
index ce3685e..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/pt-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "Companhia", 
- "Cust/Supp Address": "Cust / Supp Endere\u00e7o", 
- "Cust/Supp Name": "Cust / Supp Nome", 
- "Customer/Supplier": "Cliente / Fornecedor", 
- "Delivery Note No": "Nota de Entrega N\u00e3o", 
- "Get Items": "Obter itens", 
- "Make Credit Note": "Fa\u00e7a Nota de Cr\u00e9dito", 
- "Make Debit Note": "Fa\u00e7a Nota de D\u00e9bito", 
- "Make Excise Invoice": "Fa\u00e7a fatura Excise", 
- "Make Stock Entry": "Fa\u00e7a entrada de material", 
- "Purchase Receipt No": "Compra recibo N\u00e3o", 
- "Purchase Return": "Voltar comprar", 
- "Return Date": "Data de regresso", 
- "Return Type": "Tipo de retorno", 
- "Sales Invoice No": "Vendas factura n", 
- "Sales Return": "Vendas Retorno", 
- "Sales and Purchase Return Items": "Vendas e itens de retorno de Compra", 
- "Sales and Purchase Return Tool": "Ferramenta de vendas e retorno de compra", 
- "Stock": "Estoque"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/sr-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/sr-doc.json
deleted file mode 100644
index 4903a9f..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/sr-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u0458\u0430", 
- "Cust/Supp Address": "\u041a\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u0430 / \u0421\u0443\u043f\u043f \u0410\u0434\u0440\u0435\u0441\u0430", 
- "Cust/Supp Name": "\u041a\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u0430 / \u0421\u0443\u043f\u043f \u0418\u043c\u0435", 
- "Customer/Supplier": "\u041a\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u0438 / \u0414\u043e\u0431\u0430\u0432\u0459\u0430\u0447", 
- "Delivery Note No": "\u0418\u0441\u043f\u043e\u0440\u0443\u043a\u0430 \u041d\u0430\u043f\u043e\u043c\u0435\u043d\u0430 \u041d\u0435", 
- "Get Items": "\u0413\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0435", 
- "Make Credit Note": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 \u041d\u043e\u0442\u0435 \u0426\u0440\u0435\u0434\u0438\u0442", 
- "Make Debit Note": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 \u0437\u0430\u0434\u0443\u0436\u0435\u045a\u0443", 
- "Make Excise Invoice": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 \u0430\u043a\u0446\u0438\u0437\u0430\u043c\u0430 \u0444\u0430\u043a\u0442\u0443\u0440\u0443", 
- "Make Stock Entry": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 \u0443\u043d\u043e\u0441 \u0421\u0442\u043e\u0446\u043a", 
- "Purchase Receipt No": "\u041a\u0443\u043f\u043e\u0432\u0438\u043d\u0430 \u041f\u0440\u0438\u0458\u0435\u043c \u041d\u0435\u043c\u0430", 
- "Purchase Return": "\u041a\u0443\u043f\u043e\u0432\u0438\u043d\u0430 \u0420\u0435\u0442\u0443\u0440\u043d", 
- "Return Date": "\u0420\u0435\u0442\u0443\u0440\u043d \u0414\u0430\u0442\u0435", 
- "Return Type": "\u041f\u043e\u0432\u0440\u0430\u0442\u0430\u043a \u0412\u0438\u0434", 
- "Sales Invoice No": "\u041f\u0440\u043e\u0434\u0430\u0458\u0430 \u0420\u0430\u0447\u0443\u043d \u041d\u0435\u043c\u0430", 
- "Sales Return": "\u041f\u0440\u043e\u0434\u0430\u0458\u0430 \u0420\u0435\u0442\u0443\u0440\u043d", 
- "Sales and Purchase Return Items": "\u041f\u0440\u043e\u0434\u0430\u0458\u0430 \u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0438 \u041f\u043e\u0432\u0440\u0430\u0442\u0430\u043a \u041a\u0443\u043f\u043e\u0432\u0438\u043d\u0430", 
- "Sales and Purchase Return Tool": "\u041f\u0440\u043e\u0434\u0430\u0458\u0430 \u0438 \u043a\u0443\u043f\u043e\u0432\u0438\u043d\u0430 \u0430\u043b\u0430\u0442\u0430 \u041f\u043e\u0432\u0440\u0430\u0442\u0430\u043a", 
- "Stock": "\u0417\u0430\u043b\u0438\u0445\u0430"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/ta-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/ta-doc.json
deleted file mode 100644
index 4d1ddc3..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/ta-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "\u0ba8\u0bbf\u0bb1\u0bc1\u0bb5\u0ba9\u0bae\u0bcd", 
- "Cust/Supp Address": "Cust / \u0b9a\u0baa\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf", 
- "Cust/Supp Name": "Cust / \u0b9a\u0baa\u0bcd \u0baa\u0bc6\u0baf\u0bb0\u0bcd", 
- "Customer/Supplier": "\u0bb5\u0bbe\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc8\u0baf\u0bbe\u0bb3\u0bb0\u0bcd / \u0b9a\u0baa\u0bcd\u0bb3\u0bc8\u0baf\u0bb0\u0bcd", 
- "Delivery Note No": "\u0b9f\u0bc6\u0bb2\u0bbf\u0bb5\u0bb0\u0bbf \u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0b87\u0bb2\u0bcd\u0bb2\u0bc8", 
- "Get Items": "\u0baa\u0bc6\u0bbe\u0bb0\u0bc1\u0b9f\u0bcd\u0b95\u0bb3\u0bcd \u0b95\u0bbf\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd", 
- "Make Credit Note": "\u0b95\u0b9f\u0ba9\u0bcd \u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf", 
- "Make Debit Note": "\u0baa\u0bb1\u0bcd\u0bb1\u0bc1 \u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf", 
- "Make Excise Invoice": "\u0bae\u0ba4\u0bc1\u0bb5\u0bb0\u0bbf \u0bb5\u0bbf\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd \u0bb5\u0bc8\u0b95\u0bcd\u0b95", 
- "Make Stock Entry": "\u0baa\u0b99\u0bcd\u0b95\u0bc1 \u0ba8\u0bc1\u0bb4\u0bc8\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf", 
- "Purchase Receipt No": "\u0b87\u0bb2\u0bcd\u0bb2\u0bc8 \u0b9a\u0bc0\u0b9f\u0bcd\u0b9f\u0bc1 \u0bb5\u0bbe\u0b99\u0bcd\u0b95", 
- "Purchase Return": "\u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa \u0bb5\u0bbe\u0b99\u0bcd\u0b95", 
- "Return Date": "\u0ba4\u0bc7\u0ba4\u0bbf \u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bbf", 
- "Return Type": "\u0bb5\u0b95\u0bc8 \u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa", 
- "Sales Invoice No": "\u0bb5\u0bbf\u0bb1\u0bcd\u0baa\u0ba9\u0bc8 \u0bb5\u0bbf\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8", 
- "Sales Return": "\u0bb5\u0bbf\u0bb1\u0bcd\u0baa\u0ba9\u0bc8 Return", 
- "Sales and Purchase Return Items": "\u0bb5\u0bbf\u0bb1\u0bcd\u0baa\u0ba9\u0bc8 \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b95\u0bc6\u0bbe\u0bb3\u0bcd\u0bae\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa \u0b89\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0b95\u0bb3\u0bcd", 
- "Sales and Purchase Return Tool": "\u0bb5\u0bbf\u0bb1\u0bcd\u0baa\u0ba9\u0bc8 \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b95\u0bc6\u0bbe\u0bb3\u0bcd\u0bae\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa \u0b95\u0bb0\u0bc1\u0bb5\u0bbf", 
- "Stock": "\u0baa\u0b99\u0bcd\u0b95\u0bc1"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/locale/th-doc.json b/stock/doctype/sales_and_purchase_return_tool/locale/th-doc.json
deleted file mode 100644
index 732dfd7..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/locale/th-doc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "Company": "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", 
- "Cust/Supp Address": "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 cust / Supp", 
- "Cust/Supp Name": "\u0e0a\u0e37\u0e48\u0e2d cust / Supp", 
- "Customer/Supplier": "\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32 / \u0e1c\u0e39\u0e49\u0e1c\u0e25\u0e34\u0e15", 
- "Delivery Note No": "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38\u0e08\u0e31\u0e14\u0e2a\u0e48\u0e07\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e44\u0e21\u0e48\u0e21\u0e35", 
- "Get Items": "\u0e23\u0e31\u0e1a\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32", 
- "Make Credit Note": "\u0e43\u0e2b\u0e49\u0e08\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15", 
- "Make Debit Note": "\u0e43\u0e2b\u0e49\u0e08\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e14\u0e1a\u0e34\u0e15", 
- "Make Excise Invoice": "\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e43\u0e1a\u0e41\u0e08\u0e49\u0e07\u0e2b\u0e19\u0e35\u0e49\u0e2a\u0e23\u0e23\u0e1e\u0e2a\u0e32\u0e21\u0e34\u0e15", 
- "Make Stock Entry": "\u0e17\u0e33\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32", 
- "Purchase Receipt No": "\u0e43\u0e1a\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e23\u0e31\u0e1a\u0e40\u0e07\u0e34\u0e19\u0e0b\u0e37\u0e49\u0e2d\u0e44\u0e21\u0e48\u0e21\u0e35", 
- "Purchase Return": "\u0e0b\u0e37\u0e49\u0e2d\u0e01\u0e25\u0e31\u0e1a", 
- "Return Date": "\u0e01\u0e25\u0e31\u0e1a\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48", 
- "Return Type": "\u0e01\u0e25\u0e31\u0e1a\u0e0a\u0e19\u0e34\u0e14", 
- "Sales Invoice No": "\u0e02\u0e32\u0e22\u0e43\u0e1a\u0e41\u0e08\u0e49\u0e07\u0e2b\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35", 
- "Sales Return": "\u0e02\u0e32\u0e22\u0e01\u0e25\u0e31\u0e1a", 
- "Sales and Purchase Return Items": "\u0e01\u0e32\u0e23\u0e02\u0e32\u0e22\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a", 
- "Sales and Purchase Return Tool": "\u0e01\u0e32\u0e23\u0e02\u0e32\u0e22\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a", 
- "Stock": "\u0e04\u0e25\u0e31\u0e07\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32"
-}
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
deleted file mode 100644
index 2dd2e71..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
+++ /dev/null
@@ -1,229 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-// 
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-cur_frm.add_fetch("delivery_note_no", "company", "company");
-cur_frm.add_fetch("sales_invoice_no", "company", "company");
-cur_frm.add_fetch("purchase_receipt_no", "company", "company");
-
-// Onload
-//-------------------------------
-cur_frm.cscript.onload = function(doc,dt,dn){
-	if(!doc.return_date) set_multiple(dt,dn,{return_date:get_today()});
-	doc.delivery_note_no = '';
-	doc.purchase_receipt_no = '';
-	doc.sales_invoice_no = '';
-	doc.return_type ='';
-	refresh_many(['delivery_note_no', 'sales_invoice_no', 'purchase_receipt_no', 'return_type']);
-}
-
-// Link field query
-//--------------------------------
-cur_frm.fields_dict.delivery_note_no.get_query = function(doc) {
-	return 'SELECT DISTINCT `tabDelivery Note`.name FROM `tabDelivery Note` WHERE `tabDelivery Note`.docstatus = 1 AND `tabDelivery Note`.%(key)s LIKE "%s" ORDER BY `tabDelivery Note`.name desc LIMIT 50';
-}
-
-cur_frm.fields_dict.sales_invoice_no.get_query = function(doc) {
-	return 'SELECT DISTINCT `tabSales Invoice`.name FROM `tabSales Invoice` WHERE `tabSales Invoice`.docstatus = 1 AND `tabSales Invoice`.%(key)s LIKE "%s" ORDER BY `tabSales Invoice`.name desc LIMIT 50';
-}
-
-cur_frm.fields_dict.purchase_receipt_no.get_query = function(doc) {
-	return 'SELECT DISTINCT `tabPurchase Receipt`.name FROM `tabPurchase Receipt` WHERE `tabPurchase Receipt`.docstatus = 1 AND `tabPurchase Receipt`.%(key)s LIKE "%s" ORDER BY `tabPurchase Receipt`.name desc LIMIT 50';
-}
-
-// Hide/unhide based on return type
-//----------------------------------
-cur_frm.cscript.return_type = function(doc, cdt, cdn) {
-	var cp = wn.control_panel;
-	hide_field(['purchase_receipt_no', 'delivery_note_no', 'sales_invoice_no', 'return_details', 'get_items', 'make_excise_invoice', 'make_stock_entry', 'make_debit_note', 'make_credit_note']);
-
-	if(doc.return_type == 'Sales Return') {
-		unhide_field(['delivery_note_no', 'sales_invoice_no', 'get_items', 'return_details', 'make_credit_note', 'make_stock_entry']);
-		
-		if(cp.country == 'India') {	unhide_field(['make_excise_invoice']); }
-
-	} else if(doc.return_type == 'Purchase Return') {
-		unhide_field(['purchase_receipt_no', 'get_items', 'return_details', 'make_debit_note', 'make_stock_entry']);
-
-		if(cp.country == 'India') {	unhide_field(['make_excise_invoice']);}
-	}
-	
-	cur_frm.cscript.clear_fields(doc);
-}
-
-// Create item table
-//-------------------------------
-cur_frm.cscript.get_items = function(doc, cdt, cdn) {
-	flag = 0
-	if(doc.return_type == 'Sales Return') {
-		if (doc.delivery_note_no && doc.sales_invoice_no) {
-			msgprint("You can not enter both Delivery Note No and Sales Invoice No. Please enter any one.");
-			flag = 1;
-		} else if (!doc.delivery_note_no && !doc.sales_invoice_no) {
-			msgprint("Please enter Delivery Note No or Sales Invoice No to proceed");
-			flag = 1;
-		}
-	} else if (doc.return_type == 'Purchase Return' && !doc.purchase_receipt_no) {
-		msgprint("Please enter Purchase Receipt No to proceed");
-		flag = 1;
-	}
-	if (!flag)
-		$c_obj(make_doclist(doc.doctype, doc.name),'pull_item_details','', function(r, rt) {
-			refresh_many(['return_details', 'cust_supp', 'cust_supp_name', 'cust_supp_address']);
-		});
-}
-
-// Clear fields
-//-------------------------------
-cur_frm.cscript.clear_fields = function(doc) {
-	doc.purchase_receipt_no, doc.delivery_note_no, doc.sales_invoice_no = '', '', '';
-	var cl = getchildren('Sales and Purchase Return Item', doc.name, 'return_details')
-	if(cl.length) $c_obj(make_doclist(doc.doctype, doc.name),'clear_return_table','', function(r, rt) {refresh_field('return_details')});
-	refresh_many(['delivery_note_no', 'sales_invoice_no', 'purchase_receipt_no', 'return_details']);
-}
-
-// Make Stock Entry
-//-------------------------------
-cur_frm.cscript.make_stock_entry = function(doc, cdt, cdn) {
-	var cl = getchildren('Sales and Purchase Return Item', doc.name, 'return_details');
-	if (!cl.length)
-		msgprint("Item table can not be blank. Please click on 'Get Items'.");
-	else if (!cur_frm.cscript.validate_returned_qty(cl)) {
-		se = cur_frm.cscript.map_parent_fields(doc,cdt,cdn);
-		cur_frm.cscript.map_child_fields(cl, se);
-		loaddoc('Stock Entry', se.name);
-	}
-}
-
-// Validate returned qty
-//---------------------------
-cur_frm.cscript.validate_returned_qty = function(cl) {
-	flag = 0
-	for(var i = 0; i<cl.length; i++){
-		if(cl[i].returned_qty > cl[i].qty) {
-			msgprint("Returned Qty can not be greater than qty. Please check for item: " + cl[i].item_code);
-			flag = 1
-		}
-	}
-	return flag
-}
-
-
-// map parent fields of stock entry
-//----------------------------------
-cur_frm.cscript.map_parent_fields = function(doc, cdt, cdn) {
-	var se = wn.model.make_new_doc_and_get_name('Stock Entry');
-	se = locals['Stock Entry'][se];
-	se.posting_date = dateutil.obj_to_str(new Date());
-	se.transfer_date = dateutil.obj_to_str(new Date());
-	se.fiscal_year = sys_defaults.fiscal_year;
-	se.purpose = doc.return_type;
-	se.remarks = doc.return_type + ' of ' + (doc.delivery_note_no || doc.sales_invoice_no || doc.purchase_receipt_no);
-	if(doc.return_type == 'Sales Return'){
-		se.delivery_note_no = doc.delivery_note_no;
-		se.sales_invoice_no = doc.sales_invoice_no;
-		se.customer = doc.cust_supp_name;
-		se.customer_name = doc.cust_supp_name;
-		se.customer_address = doc.cust_supp_address;
-	}
-	else if(doc.return_type == 'Purchase Return'){
-		se.purchase_receipt_no = doc.purchase_receipt_no;
-		se.supplier = doc.cust_supp_name;
-		se.supplier_name = doc.cust_supp_name;
-		se.supplier_address = doc.cust_supp_address;
-	}
-	return se
-}
-
-// map child fields of stock entry
-//---------------------------------
-cur_frm.cscript.map_child_fields = function(cl, se) {
-	for(var i = 0; i<cl.length; i++){
-		if (cl[i].returned_qty) {
-			var d1 = wn.model.add_child(se, 'Stock Entry Detail', 'mtn_details');
-			d1.detail_name = cl[i].detail_name;
-			d1.item_code = cl[i].item_code;
-			d1.description = cl[i].description;
-			d1.transfer_qty = cl[i].returned_qty;
-			d1.qty = cl[i].returned_qty;
-			d1.stock_uom = cl[i].uom;
-			d1.uom = cl[i].uom;
-			d1.conversion_factor = 1;
-			d1.incoming_rate = cl[i].rate;
-			d1.serial_no = cl[i].serial_no;
-			d1.batch_no = cl[i].batch_no;
-		}
-	}
-}
-
-// Make excise voucher
-//-------------------------------
-cur_frm.cscript.make_excise_invoice = function(doc) {
-	var excise = wn.model.make_new_doc_and_get_name('Journal Voucher');
-	excise = locals['Journal Voucher'][excise];
-	excise.voucher_type = 'Excise Voucher';
-	loaddoc('Journal Voucher',excise.name);
-}
-// Make debit note
-//------------------------------
-cur_frm.cscript.make_debit_note = function(doc) {
-	var doclist = make_doclist(doc.doctype, doc.name);
-	$c('accounts.get_new_jv_details', {
-			doclist: JSON.stringify(doclist),
-			fiscal_year: sys_defaults.fiscal_year
-		}, function(r, rt) {
-		if(!r.exc) {
-			cur_frm.cscript.make_jv(doc, 'Debit Note', r.message);
-		}
-	});
-}
-// Make credit note
-//------------------------------
-cur_frm.cscript.make_credit_note = function(doc) {
-	var doclist = make_doclist(doc.doctype, doc.name);
-	$c('accounts.get_new_jv_details', {
-			doclist: JSON.stringify(doclist),
-			fiscal_year: sys_defaults.fiscal_year,
-		}, function(r, rt) {
-		if(!r.exc) {
-			cur_frm.cscript.make_jv(doc, 'Credit Note', r.message);
-		}
-	});
-}
-
-
-// Make JV
-//--------------------------------
-cur_frm.cscript.make_jv = function(doc, dr_or_cr, children) {
-	var jv = wn.model.make_new_doc_and_get_name('Journal Voucher');
-	jv = locals['Journal Voucher'][jv];
-	
-	jv.voucher_type = dr_or_cr;
-	jv.company = sys_defaults.company;
-	jv.fiscal_year = sys_defaults.fiscal_year;
-	jv.is_opening = 'No';
-	jv.posting_date = doc.return_date;
-
-	// Add children
-	if(children) {
-		for(var i=0; i<children.length; i++) {
-			var ch = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
-			$.extend(ch, children[i]);
-			ch.balance = flt(ch.balance);
-		}
-	}
-
-	loaddoc('Journal Voucher', jv.name);
-}
diff --git a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
deleted file mode 100644
index f0170bb..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.	If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import unicode_literals
-import webnotes
-
-from webnotes.utils import flt
-from webnotes.model import db_exists
-from webnotes.model.doc import addchild
-from webnotes.model.bean import copy_doclist
-
-sql = webnotes.conn.sql
-	
-
-class DocType :
-	def __init__(self, doc, doclist=[]):
-		self.doc = doc
-		self.doclist = doclist
-
-	# Pull Item Details
-	# ---------------------------
-	def pull_item_details(self):
-		if self.doc.return_type == 'Sales Return':
-			if self.doc.delivery_note_no:
-				det = sql("select t1.name, t1.item_code, t1.description, t1.qty, t1.uom, t2.export_rate * t3.conversion_rate, t3.customer, t3.customer_name, t3.customer_address, t2.serial_no, t2.batch_no from `tabDelivery Note Packing Item` t1, `tabDelivery Note Item` t2, `tabDelivery Note` t3 where t1.parent = t3.name and t2.parent = t3.name and t1.parent_detail_docname = t2.name and t3.name = '%s' and t3.docstatus = 1" % self.doc.delivery_note_no)
-			elif self.doc.sales_invoice_no:
-				det = sql("select t1.name, t1.item_code, t1.description, t1.qty, t1.stock_uom, t1.export_rate * t2.conversion_rate, t2.customer, t2.customer_name, t2.customer_address, t1.serial_no from `tabSales Invoice Item` t1, `tabSales Invoice` t2 where t1.parent = t2.name and t2.name = '%s' and t2.docstatus = 1" % self.doc.sales_invoice_no)
-		elif self.doc.return_type == 'Purchase Return' and self.doc.purchase_receipt_no:
-			det = sql("select t1.name, t1.item_code, t1.description, t1.received_qty, t1.uom, t1.purchase_rate, t2.supplier, t2.supplier_name, t2.supplier_address, t1.serial_no, t1.batch_no from `tabPurchase Receipt Item` t1, `tabPurchase Receipt` t2 where t1.parent = t2.name and t2.name = '%s' and t2.docstatus = 1" % self.doc.purchase_receipt_no)
-
-		self.doc.cust_supp = det and det[0][6] or ''
-		self.doc.cust_supp_name = det and det[0][7] or ''
-		self.doc.cust_supp_address = det and det[0][8] or ''
-		self.create_item_table(det)
-		self.doc.save()
-		
-	# Create Item Table
-	# -----------------------------
-	def create_item_table(self, det):
-		self.doclist = self.doc.clear_table(self.doclist, 'return_details', 1)
-		for i in det:
-			ch = addchild(self.doc, 'return_details', 'Sales and Purchase Return Item', 
-				self.doclist)
-			ch.detail_name = i and i[0] or ''
-			ch.item_code = i and i[1] or ''
-			ch.description = i and i[2] or ''
-			ch.qty = i and flt(i[3]) or 0
-			ch.uom = i and i[4] or ''
-			ch.rate = i and flt(i[5]) or 0
-			ch.serial_no = i and i[9] or ''
-			ch.batch_no = (len(i) == 11) and i[10] or ''
-			ch.save()
-
-	# Clear return table
-	# --------------------------------
-	def clear_return_table(self):
-		self.doclist = self.doc.clear_table(self.doclist, 'return_details', 1)
-		self.doc.save()
\ No newline at end of file
diff --git a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
deleted file mode 100644
index 2daf6ac..0000000
--- a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
+++ /dev/null
@@ -1,191 +0,0 @@
-[
- {
-  "creation": "2013-01-10 16:34:29", 
-  "docstatus": 0, 
-  "modified": "2013-01-23 16:48:38", 
-  "modified_by": "Administrator", 
-  "owner": "wasim@webnotestech.com"
- }, 
- {
-  "doctype": "DocType", 
-  "issingle": 1, 
-  "istable": 0, 
-  "module": "Stock", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Sales and Purchase Return Tool", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Sales and Purchase Return Tool", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "report": 0, 
-  "submit": 0, 
-  "write": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Sales and Purchase Return Tool"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "return_date", 
-  "fieldtype": "Date", 
-  "label": "Return Date", 
-  "no_copy": 1, 
-  "oldfieldname": "return_date", 
-  "oldfieldtype": "Date", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "return_type", 
-  "fieldtype": "Select", 
-  "label": "Return Type", 
-  "no_copy": 1, 
-  "oldfieldname": "return_type", 
-  "oldfieldtype": "Select", 
-  "options": "\nSales Return\nPurchase Return", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "delivery_note_no", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "label": "Delivery Note No", 
-  "no_copy": 1, 
-  "oldfieldname": "delivery_note_no", 
-  "oldfieldtype": "Link", 
-  "options": "Delivery Note", 
-  "reqd": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "sales_invoice_no", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "label": "Sales Invoice No", 
-  "options": "Sales Invoice"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "purchase_receipt_no", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "label": "Purchase Receipt No", 
-  "no_copy": 1, 
-  "oldfieldname": "purchase_receipt_no", 
-  "oldfieldtype": "Link", 
-  "options": "Purchase Receipt"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "company", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "label": "Company", 
-  "options": "Company", 
-  "print_hide": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "cust_supp", 
-  "fieldtype": "Data", 
-  "hidden": 1, 
-  "label": "Customer/Supplier", 
-  "print_hide": 1, 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "cust_supp_name", 
-  "fieldtype": "Data", 
-  "hidden": 1, 
-  "label": "Cust/Supp Name", 
-  "print_hide": 1, 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "cust_supp_address", 
-  "fieldtype": "Small Text", 
-  "hidden": 1, 
-  "label": "Cust/Supp Address", 
-  "print_hide": 1, 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "get_items", 
-  "fieldtype": "Button", 
-  "hidden": 1, 
-  "label": "Get Items", 
-  "oldfieldtype": "Button"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "return_details", 
-  "fieldtype": "Table", 
-  "hidden": 1, 
-  "label": "Sales and Purchase Return Items", 
-  "no_copy": 1, 
-  "oldfieldname": "return_details", 
-  "oldfieldtype": "Table", 
-  "options": "Sales and Purchase Return Item", 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "make_stock_entry", 
-  "fieldtype": "Button", 
-  "hidden": 1, 
-  "label": "Make Stock Entry", 
-  "oldfieldtype": "Button"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "make_excise_invoice", 
-  "fieldtype": "Button", 
-  "hidden": 1, 
-  "label": "Make Excise Invoice", 
-  "oldfieldtype": "Button"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "make_credit_note", 
-  "fieldtype": "Button", 
-  "hidden": 1, 
-  "label": "Make Credit Note", 
-  "oldfieldtype": "Button"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "make_debit_note", 
-  "fieldtype": "Button", 
-  "hidden": 1, 
-  "label": "Make Debit Note", 
-  "oldfieldtype": "Button"
- }, 
- {
-  "amend": 0, 
-  "cancel": 0, 
-  "doctype": "DocPerm", 
-  "role": "Material User"
- }, 
- {
-  "doctype": "DocPerm", 
-  "role": "Accounts User"
- }
-]
\ No newline at end of file
diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
index ba1f648..0b27d99 100644
--- a/stock/doctype/stock_entry/stock_entry.js
+++ b/stock/doctype/stock_entry/stock_entry.js
@@ -18,6 +18,39 @@
 wn.provide("erpnext.stock");
 
 erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
+	setup: function() {
+		var me = this;
+		
+		this.frm.fields_dict.delivery_note_no.get_query = function() {
+			return { query: "stock.doctype.stock_entry.stock_entry.query_sales_return_doc" };
+		};
+		
+		this.frm.fields_dict.sales_invoice_no.get_query = 
+			this.frm.fields_dict.delivery_note_no.get_query;
+		
+		this.frm.fields_dict.purchase_receipt_no.get_query = function() {
+			return { query: "stock.doctype.stock_entry.stock_entry.query_purchase_return_doc" };
+		};
+		
+		this.frm.fields_dict.mtn_details.grid.get_field('item_code').get_query = function() {
+			if(in_list(["Sales Return", "Purchase Return"], me.frm.doc.purpose) && 
+				me.get_doctype_docname()) {
+					return {
+						query: "stock.doctype.stock_entry.stock_entry.query_return_item",
+						filters: {
+							purpose: me.frm.doc.purpose,
+							delivery_note_no: me.frm.doc.delivery_note_no,
+							sales_invoice_no: me.frm.doc.sales_invoice_no,
+							purchase_receipt_no: me.frm.doc.purchase_receipt_no
+						}
+					};
+			} else {
+				return erpnext.queries.item({is_stock_item: "Yes"});
+			}
+		};
+		
+	},
+	
 	onload_post_render: function() {
 		if(this.frm.doc.__islocal && (this.frm.doc.production_order || this.frm.doc.bom_no) 
 			&& !getchildren('Stock Entry Detail', this.frm.doc.name, 'mtn_details').length) {
@@ -27,12 +60,25 @@
 	},
 	
 	refresh: function() {
+		var me = this;
 		erpnext.hide_naming_series();
 		this.toggle_related_fields(this.frm.doc);
 		this.toggle_enable_bom();
 		if (this.frm.doc.docstatus==1) {
 			this.show_stock_ledger();
 		}
+		
+		if(this.frm.doc.docstatus === 1 && 
+				wn.boot.profile.can_create.indexOf("Journal Voucher")!==-1) {
+			if(this.frm.doc.purpose === "Sales Return") {
+				this.frm.add_custom_button("Make Credit Note", function() { me.make_return_jv(); });
+				this.add_excise_button();
+			} else if(this.frm.doc.purpose === "Purchase Return") {
+				this.frm.add_custom_button("Make Debit Note", function() { me.make_return_jv(); });
+				this.add_excise_button();
+			}
+		}
+		
 	},
 	
 	on_submit: function() {
@@ -80,6 +126,68 @@
 	toggle_enable_bom: function() {
 		this.frm.toggle_enable("bom_no", !this.frm.doc.production_order);
 	},
+	
+	get_doctype_docname: function() {
+		if(this.frm.doc.purpose === "Sales Return") {
+			if(this.frm.doc.delivery_note_no && this.frm.doc.sales_invoice_no) {
+				// both specified
+				msgprint(wn._("You can not enter both Delivery Note No and Sales Invoice No. \
+					Please enter any one."));
+				
+			} else if(!(this.frm.doc.delivery_note_no || this.frm.doc.sales_invoice_no)) {
+				// none specified
+				msgprint(wn._("Please enter Delivery Note No or Sales Invoice No to proceed"));
+				
+			} else if(this.frm.doc.delivery_note_no) {
+				return {doctype: "Delivery Note", docname: this.frm.doc.delivery_note_no};
+				
+			} else if(this.frm.doc.sales_invoice_no) {
+				return {doctype: "Sales Invoice", docname: this.frm.doc.sales_invoice_no};
+				
+			}
+		} else if(this.frm.doc.purpose === "Purchase Return") {
+			if(this.frm.doc.purchase_receipt_no) {
+				return {doctype: "Purchase Receipt", docname: this.frm.doc.purchase_receipt_no};
+				
+			} else {
+				// not specified
+				msgprint(wn._("Please enter Purchase Receipt No to proceed"));
+				
+			}
+		}
+	},
+	
+	add_excise_button: function() {
+		if(wn.boot.control_panel.country === "India")
+			this.frm.add_custom_button("Make Excise Invoice", function() {
+				var excise = wn.model.make_new_doc_and_get_name('Journal Voucher');
+				excise = locals['Journal Voucher'][excise];
+				excise.voucher_type = 'Excise Voucher';
+				loaddoc('Journal Voucher', excise.name);
+			});
+	},
+	
+	make_return_jv: function() {
+		this.frm.call({
+			method: "make_return_jv",
+			args: {
+				stock_entry: this.frm.doc.name
+			},
+			callback: function(r) {
+				if(!r.exc) {
+					var jv_name = wn.model.make_new_doc_and_get_name('Journal Voucher');
+					var jv = locals["Journal Voucher"][jv_name];
+					$.extend(jv, r.message[0]);
+					$.each(r.message.slice(1), function(i, jvd) {
+						var child = wn.model.add_child(jv, "Journal Voucher Detail", "entries");
+						$.extend(child, jvd);
+					});
+					loaddoc("Journal Voucher", jv_name);
+				}
+				
+			}
+		});
+	},
 
 });
 
@@ -140,15 +248,6 @@
 	cur_frm.cscript.toggle_related_fields(doc, cdt, cdn);
 }
 
-// item code - only if quantity present in source warehosue
-var fld = cur_frm.fields_dict['mtn_details'].grid.get_field('item_code');
-fld.query_description = "If Source Warehouse is selected, items with existing stock \
-	for that warehouse will be selected";
-
-fld.get_query = function() {
-	return erpnext.queries.item({is_stock_item: "Yes"});
-}
-
 // copy over source and target warehouses
 cur_frm.fields_dict['mtn_details'].grid.onrowadd = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index cd20266..5b90c62 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -26,8 +26,10 @@
 from stock.stock_ledger import get_previous_sle
 import json
 
-
 sql = webnotes.conn.sql
+
+class NotUpdateStockError(webnotes.ValidationError): pass
+class StockOverReturnError(webnotes.ValidationError): pass
 	
 from controllers.accounts_controller import AccountsController
 
@@ -38,6 +40,7 @@
 		self.fname = 'mtn_details' 
 		
 	def validate(self):
+		self.validate_posting_time()
 		self.validate_purpose()
 		self.validate_serial_nos()
 		pro_obj = self.doc.production_order and \
@@ -275,26 +278,55 @@
 						or update the Quantity manually."), raise_exception=1)
 						
 	def validate_return_reference_doc(self):
-		""" validate item with reference doc"""
-		ref_doctype = ref_docname = ""
-		if self.doc.purpose == "Sales Return" and \
-				(self.doc.delivery_note_no or self.doc.sales_invoice_no):
-			ref_doctype = self.doc.delivery_note_no and "Delivery Note" or "Sales Invoice"
-			ref_docname = self.doc.delivery_note_no or self.doc.sales_invoice_no
-		elif self.doc.purpose == "Purchase Return" and self.doc.purchase_receipt_no:
-			ref_doctype = "Purchase Receipt"
-			ref_docname = self.doc.purchase_receipt_no
+		"""validate item with reference doc"""
+		ref = get_return_doclist_and_details(self.doc.fields)
+		
+		if ref.doclist:
+			# validate docstatus
+			if ref.doclist[0].docstatus != 1:
+				webnotes.msgprint(_(ref.doclist[0].doctype) + ' "' + ref.doclist[0].name + '": ' 
+					+ _("Status should be Submitted"), raise_exception=webnotes.InvalidStatusError)
 			
-		if ref_doctype and ref_docname:
+			# update stock check
+			if ref.doclist[0].doctype == "Sales Invoice" and (cint(ref.doclist[0].is_pos) != 1 \
+				or cint(ref.doclist[0].update_stock) != 1):
+					webnotes.msgprint(_(ref.doclist[0].doctype) + ' "' + ref.doclist[0].name + '": ' 
+						+ _("Is POS and Update Stock should be checked."), 
+						raise_exception=NotUpdateStockError)
+			
+			# posting date check
+			ref_posting_datetime = "%s %s" % (cstr(ref.doclist[0].posting_date), 
+				cstr(ref.doclist[0].posting_time) or "00:00:00")
+			this_posting_datetime = "%s %s" % (cstr(self.doc.posting_date), 
+				cstr(self.doc.posting_time))
+			if this_posting_datetime < ref_posting_datetime:
+				from webnotes.utils.dateutils import datetime_in_user_format
+				webnotes.msgprint(_("Posting Date Time cannot be before")
+					+ ": " + datetime_in_user_format(ref_posting_datetime),
+					raise_exception=True)
+			
+			stock_items = get_stock_items_for_return(ref.doclist, ref.parentfields)
+			already_returned_item_qty = self.get_already_returned_item_qty(ref.fieldname)
+			
 			for item in self.doclist.get({"parentfield": "mtn_details"}):
-				ref_exists = webnotes.conn.sql("""select name from `tab%s` 
-					where parent = %s and item_code = %s and docstatus=1""" % 
-					(ref_doctype + " Item", '%s', '%s'), (ref_docname, item.item_code))
-					
-				if not ref_exists:
-					msgprint(_("Item: '") + item.item_code + _("' does not exists in ") +
-						ref_doctype + ": " + ref_docname, raise_exception=1)
-			
+				# validate if item exists in the ref doclist and that it is a stock item
+				if item.item_code not in stock_items:
+					msgprint(_("Item") + ': "' + item.item_code + _("\" does not exist in ") +
+						ref.doclist[0].doctype + ": " + ref.doclist[0].name, 
+						raise_exception=webnotes.DoesNotExistError)
+				
+				# validate quantity <= ref item's qty - qty already returned
+				ref_item = ref.doclist.getone({"item_code": item.item_code})
+				returnable_qty = ref_item.qty - flt(already_returned_item_qty.get(item.item_code))
+				self.validate_value("transfer_qty", "<=", returnable_qty, item,
+					raise_exception=StockOverReturnError)
+				
+	def get_already_returned_item_qty(self, ref_fieldname):
+		return dict(webnotes.conn.sql("""select item_code, sum(transfer_qty) as qty
+			from `tabStock Entry Detail` where parent in (
+				select name from `tabStock Entry` where `%s`=%s and docstatus=1)
+			group by item_code""" % (ref_fieldname, "%s"), (self.doc.fields.get(ref_fieldname),)))
+		
 	def update_serial_no(self, is_submit):
 		"""Create / Update Serial No"""
 		from stock.utils import get_valid_serial_nos
@@ -326,6 +358,7 @@
 				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, 
 			self.doc.amended_from and 'Yes' or 'No')
 
@@ -639,10 +672,270 @@
 						+ " " + _("Row #") + (" %d %s " % (mreq_item.idx, _("of")))
 						+ _("Material Request") + (" - %s" % item.material_request), 
 						raise_exception=webnotes.MappingMismatchError)
-
+	
 @webnotes.whitelist()
 def get_production_order_details(production_order):
 	result = webnotes.conn.sql("""select bom_no, 
 		ifnull(qty, 0) - ifnull(produced_qty, 0) as fg_completed_qty, use_multi_level_bom
 		from `tabProduction Order` where name = %s""", production_order, as_dict=1)
-	return result and result[0] or {}
\ No newline at end of file
+	return result and result[0] or {}
+	
+def query_sales_return_doc(doctype, txt, searchfield, start, page_len, filters):
+	conditions = ""
+	if doctype == "Sales Invoice":
+		conditions = "and is_pos=1 and update_stock=1"
+	
+	return webnotes.conn.sql("""select name, customer, customer_name
+		from `tab%s` where docstatus = 1
+		and (`%s` like %%(txt)s or `customer` like %%(txt)s) %s
+		order by name, customer, customer_name
+		limit %s""" % (doctype, searchfield, conditions, "%(start)s, %(page_len)s"),
+		{"txt": "%%%s%%" % txt, "start": start, "page_len": page_len}, as_list=True)
+	
+def query_purchase_return_doc(doctype, txt, searchfield, start, page_len, filters):
+	return webnotes.conn.sql("""select name, supplier, supplier_name
+		from `tab%s` where docstatus = 1
+		and (`%s` like %%(txt)s or `supplier` like %%(txt)s)
+		order by name, supplier, supplier_name
+		limit %s""" % (doctype, searchfield, "%(start)s, %(page_len)s"),
+		{"txt": "%%%s%%" % txt, "start": start, "page_len": page_len}, as_list=True)
+		
+def query_return_item(doctype, txt, searchfield, start, page_len, filters):
+	txt = txt.replace("%", "")
+
+	ref = get_return_doclist_and_details(filters)
+			
+	stock_items = get_stock_items_for_return(ref.doclist, ref.parentfields)
+	
+	result = []
+	for item in ref.doclist.get({"parentfield": ["in", ref.parentfields]}):
+		if item.item_code in stock_items:
+			item.item_name = cstr(item.item_name)
+			item.description = cstr(item.description)
+			if (txt in item.item_code) or (txt in item.item_name) or (txt in item.description):
+				val = [
+					item.item_code, 
+					(len(item.item_name) > 40) and (item.item_name[:40] + "...") or item.item_name, 
+					(len(item.description) > 40) and (item.description[:40] + "...") or \
+						item.description
+				]
+				if val not in result:
+					result.append(val)
+
+	return result[start:start+page_len]
+
+def get_stock_items_for_return(ref_doclist, parentfields):
+	"""return item codes filtered from doclist, which are stock items"""
+	if isinstance(parentfields, basestring):
+		parentfields = [parentfields]
+	
+	all_items = list(set([d.item_code for d in 
+		ref_doclist.get({"parentfield": ["in", parentfields]})]))
+	stock_items = webnotes.conn.sql_list("""select name from `tabItem`
+		where is_stock_item='Yes' and name in (%s)""" % (", ".join(["%s"] * len(all_items))),
+		tuple(all_items))
+
+	return stock_items
+	
+def get_return_doclist_and_details(args):
+	ref = webnotes._dict()
+	
+	# get ref_doclist
+	if args["purpose"] in return_map:
+		for fieldname, val in return_map[args["purpose"]].items():
+			if args.get(fieldname):
+				ref.fieldname = fieldname
+				ref.doclist = webnotes.get_doclist(val[0], args[fieldname])
+				ref.parentfields = val[1]
+				break
+				
+	return ref
+	
+return_map = {
+	"Sales Return": {
+		# [Ref DocType, [Item tables' parentfields]]
+		"delivery_note_no": ["Delivery Note", ["delivery_note_details", "packing_details"]],
+		"sales_invoice_no": ["Sales Invoice", ["entries", "packing_details"]]
+	},
+	"Purchase Return": {
+		"purchase_receipt_no": ["Purchase Receipt", ["purchase_receipt_details"]]
+	}
+}
+
+@webnotes.whitelist()
+def make_return_jv(stock_entry):
+	se = webnotes.bean("Stock Entry", stock_entry)
+	if not se.doc.purpose in ["Sales Return", "Purchase Return"]:
+		return
+	
+	ref = get_return_doclist_and_details(se.doc.fields)
+	
+	if ref.doclist[0].doctype == "Delivery Note":
+		result = make_return_jv_from_delivery_note(se, ref)
+	elif ref.doclist[0].doctype == "Sales Invoice":
+		result = make_return_jv_from_sales_invoice(se, ref)
+	elif ref.doclist[0].doctype == "Purchase Receipt":
+		result = make_return_jv_from_purchase_receipt(se, ref)
+	
+	# create jv doclist and fetch balance for each unique row item
+	jv_list = [{
+		"__islocal": 1,
+		"doctype": "Journal Voucher",
+		"posting_date": se.doc.posting_date,
+		"voucher_type": se.doc.purpose == "Sales Return" and "Credit Note" or "Debit Note",
+		"fiscal_year": se.doc.fiscal_year,
+		"company": se.doc.company
+	}]
+	
+	from accounts.utils import get_balance_on
+	for r in result:
+		if not r.get("account"):
+			print result
+		jv_list.append({
+			"__islocal": 1,
+			"doctype": "Journal Voucher Detail",
+			"parentfield": "entries",
+			"account": r.get("account"),
+			"against_invoice": r.get("against_invoice"),
+			"against_voucher": r.get("against_voucher"),
+			"balance": get_balance_on(r.get("account"), se.doc.posting_date)
+		})
+		
+	return jv_list
+	
+def make_return_jv_from_sales_invoice(se, ref):
+	# customer account entry
+	parent = {
+		"account": ref.doclist[0].debit_to,
+		"against_invoice": ref.doclist[0].name,
+	}
+	
+	# income account entries
+	children = []
+	for se_item in se.doclist.get({"parentfield": "mtn_details"}):
+		# find item in ref.doclist
+		ref_item = ref.doclist.getone({"item_code": se_item.item_code})
+		
+		account = get_sales_account_from_item(ref.doclist, ref_item)
+		
+		if account not in children:
+			children.append(account)
+			
+	return [parent] + [{"account": account} for account in children]
+	
+def get_sales_account_from_item(doclist, ref_item):
+	account = None
+	if not ref_item.income_account:
+		if ref_item.parent_item:
+			parent_item = doclist.getone({"item_code": ref_item.parent_item})
+			account = parent_item.income_account
+	else:
+		account = ref_item.income_account
+	
+	return account
+	
+def make_return_jv_from_delivery_note(se, ref):
+	invoices_against_delivery = get_invoice_list("Sales Invoice Item", "delivery_note",
+		ref.doclist[0].name)
+	
+	if not invoices_against_delivery:
+		sales_orders_against_delivery = [d.prevdoc_docname for d in 
+			ref.doclist.get({"prevdoc_doctype": "Sales Order"}) if d.prevdoc_docname]
+		
+		if sales_orders_against_delivery:
+			invoices_against_delivery = get_invoice_list("Sales Invoice Item", "sales_order",
+				sales_orders_against_delivery)
+			
+	if not invoices_against_delivery:
+		return []
+		
+	packing_item_parent_map = dict([[d.item_code, d.parent_item] for d in ref.doclist.get(
+		{"parentfield": ref.parentfields[1]})])
+	
+	parent = {}
+	children = []
+	
+	for se_item in se.doclist.get({"parentfield": "mtn_details"}):
+		for sales_invoice in invoices_against_delivery:
+			si = webnotes.bean("Sales Invoice", sales_invoice)
+			
+			if se_item.item_code in packing_item_parent_map:
+				ref_item = si.doclist.get({"item_code": packing_item_parent_map[se_item.item_code]})
+			else:
+				ref_item = si.doclist.get({"item_code": se_item.item_code})
+			
+			if not ref_item:
+				continue
+				
+			ref_item = ref_item[0]
+			
+			account = get_sales_account_from_item(si.doclist, ref_item)
+			
+			if account not in children:
+				children.append(account)
+			
+			if not parent:
+				parent = {"account": si.doc.debit_to}
+
+			break
+			
+	if len(invoices_against_delivery) == 1:
+		parent["against_invoice"] = invoices_against_delivery[0]
+	
+	result = [parent] + [{"account": account} for account in children]
+	
+	return result
+	
+def get_invoice_list(doctype, link_field, value):
+	if isinstance(value, basestring):
+		value = [value]
+	
+	return webnotes.conn.sql_list("""select distinct parent from `tab%s`
+		where docstatus = 1 and `%s` in (%s)""" % (doctype, link_field,
+			", ".join(["%s"]*len(value))), tuple(value))
+			
+def make_return_jv_from_purchase_receipt(se, ref):
+	invoice_against_receipt = get_invoice_list("Purchase Invoice Item", "purchase_receipt",
+		ref.doclist[0].name)
+	
+	if not invoice_against_receipt:
+		purchase_orders_against_receipt = [d.prevdoc_docname for d in 
+			ref.doclist.get({"prevdoc_doctype": "Purchase Order"}) if d.prevdoc_docname]
+		
+		if purchase_orders_against_receipt:
+			invoice_against_receipt = get_invoice_list("Purchase Invoice Item", "purchase_order",
+				purchase_orders_against_receipt)
+			
+	if not invoice_against_receipt:
+		return []
+	
+	parent = {}
+	children = []
+	
+	for se_item in se.doclist.get({"parentfield": "mtn_details"}):
+		for purchase_invoice in invoice_against_receipt:
+			pi = webnotes.bean("Purchase Invoice", purchase_invoice)
+			ref_item = pi.doclist.get({"item_code": se_item.item_code})
+			
+			if not ref_item:
+				continue
+				
+			ref_item = ref_item[0]
+			
+			account = ref_item.expense_head
+			
+			if account not in children:
+				children.append(account)
+			
+			if not parent:
+				parent = {"account": pi.doc.credit_to}
+
+			break
+			
+	if len(invoice_against_receipt) == 1:
+		parent["against_voucher"] = invoice_against_receipt[0]
+	
+	result = [parent] + [{"account": account} for account in children]
+	
+	return result
+		
\ No newline at end of file
diff --git a/stock/doctype/stock_entry/stock_entry.txt b/stock/doctype/stock_entry/stock_entry.txt
index 2554455..ecbd9c6 100644
--- a/stock/doctype/stock_entry/stock_entry.txt
+++ b/stock/doctype/stock_entry/stock_entry.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-01-23 19:57:20", 
+  "creation": "2013-03-11 12:34:40", 
   "docstatus": 0, 
-  "modified": "2013-01-28 17:59:20", 
+  "modified": "2013-03-19 15:33:14", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -100,6 +100,53 @@
   "search_index": 0
  }, 
  {
+  "allow_on_submit": 0, 
+  "depends_on": "eval:doc.purpose==\"Sales Return\"", 
+  "doctype": "DocField", 
+  "fieldname": "delivery_note_no", 
+  "fieldtype": "Link", 
+  "hidden": 1, 
+  "in_filter": 0, 
+  "label": "Delivery Note No", 
+  "no_copy": 1, 
+  "oldfieldname": "delivery_note_no", 
+  "oldfieldtype": "Link", 
+  "options": "Delivery Note", 
+  "print_hide": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 1
+ }, 
+ {
+  "depends_on": "eval:doc.purpose==\"Sales Return\"", 
+  "doctype": "DocField", 
+  "fieldname": "sales_invoice_no", 
+  "fieldtype": "Link", 
+  "hidden": 1, 
+  "label": "Sales Invoice No", 
+  "no_copy": 1, 
+  "options": "Sales Invoice", 
+  "print_hide": 1
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "depends_on": "eval:doc.purpose==\"Purchase Return\"", 
+  "doctype": "DocField", 
+  "fieldname": "purchase_receipt_no", 
+  "fieldtype": "Link", 
+  "hidden": 1, 
+  "in_filter": 0, 
+  "label": "Purchase Receipt No", 
+  "no_copy": 1, 
+  "oldfieldname": "purchase_receipt_no", 
+  "oldfieldtype": "Link", 
+  "options": "Purchase Receipt", 
+  "print_hide": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 1
+ }, 
+ {
   "doctype": "DocField", 
   "fieldname": "col2", 
   "fieldtype": "Column Break", 
@@ -224,6 +271,7 @@
   "print_hide": 1
  }, 
  {
+  "depends_on": "eval:doc.purpose!==\"Sales Return\" || doc.purpose!===\"Purchase Return\"", 
   "doctype": "DocField", 
   "fieldname": "sb1", 
   "fieldtype": "Section Break", 
@@ -274,42 +322,6 @@
   "search_index": 0
  }, 
  {
-  "allow_on_submit": 0, 
-  "depends_on": "eval:doc.purpose==\"Sales Return\"", 
-  "doctype": "DocField", 
-  "fieldname": "delivery_note_no", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "in_filter": 0, 
-  "label": "Delivery Note No", 
-  "no_copy": 1, 
-  "oldfieldname": "delivery_note_no", 
-  "oldfieldtype": "Link", 
-  "options": "Delivery Note", 
-  "print_hide": 1, 
-  "report_hide": 0, 
-  "reqd": 0, 
-  "search_index": 1
- }, 
- {
-  "allow_on_submit": 0, 
-  "depends_on": "eval:doc.purpose==\"Purchase Return\"", 
-  "doctype": "DocField", 
-  "fieldname": "purchase_receipt_no", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "in_filter": 0, 
-  "label": "Purchase Receipt No", 
-  "no_copy": 1, 
-  "oldfieldname": "purchase_receipt_no", 
-  "oldfieldtype": "Link", 
-  "options": "Purchase Receipt", 
-  "print_hide": 1, 
-  "report_hide": 0, 
-  "reqd": 0, 
-  "search_index": 1
- }, 
- {
   "doctype": "DocField", 
   "fieldname": "cb1", 
   "fieldtype": "Column Break"
@@ -340,17 +352,6 @@
   "search_index": 0
  }, 
  {
-  "depends_on": "eval:doc.purpose==\"Sales Return\"", 
-  "doctype": "DocField", 
-  "fieldname": "sales_invoice_no", 
-  "fieldtype": "Link", 
-  "hidden": 1, 
-  "label": "Sales Invoice No", 
-  "no_copy": 1, 
-  "options": "Sales Invoice", 
-  "print_hide": 1
- }, 
- {
   "depends_on": "eval:(doc.purpose==\"Sales Return\" || doc.purpose==\"Purchase Return\")", 
   "doctype": "DocField", 
   "fieldname": "contact_section", 
diff --git a/stock/doctype/stock_entry/test_stock_entry.py b/stock/doctype/stock_entry/test_stock_entry.py
index a4103c3..322fcfa 100644
--- a/stock/doctype/stock_entry/test_stock_entry.py
+++ b/stock/doctype/stock_entry/test_stock_entry.py
@@ -3,11 +3,15 @@
 
 from __future__ import unicode_literals
 import webnotes, unittest
+from webnotes.utils import flt
 
 class TestStockEntry(unittest.TestCase):
 	def test_auto_material_request(self):
 		webnotes.conn.sql("""delete from `tabMaterial Request Item`""")
 		webnotes.conn.sql("""delete from `tabMaterial Request`""")
+		self._clear_stock()
+		
+		webnotes.conn.set_value("Global Defaults", None, "auto_indent", True)
 
 		st1 = webnotes.bean(copy=test_records[0])
 		st1.insert()
@@ -22,7 +26,7 @@
 			
 		self.assertTrue(mr_name)
 		
-	def test_material_receipt_gl_entry(self):
+	def atest_material_receipt_gl_entry(self):
 		webnotes.conn.sql("delete from `tabStock Ledger Entry`")
 		webnotes.defaults.set_global_default("auto_inventory_accounting", 1)
 		
@@ -59,7 +63,7 @@
 		
 		webnotes.defaults.set_global_default("auto_inventory_accounting", 0)
 
-	def test_material_issue_gl_entry(self):
+	def atest_material_issue_gl_entry(self):
 		webnotes.conn.sql("delete from `tabStock Ledger Entry`")
 		webnotes.defaults.set_global_default("auto_inventory_accounting", 1)
 		
@@ -147,7 +151,7 @@
 			self.assertEquals(expected_sle[i][1], sle.warehouse)
 			self.assertEquals(expected_sle[i][2], sle.actual_qty)
 		
-	def check_gl_entries(self, voucher_type, voucher_no, expected_gl_entries):
+	def acheck_gl_entries(self, voucher_type, voucher_no, expected_gl_entries):
 		# check gl entries
 		
 		gl_entries = webnotes.conn.sql("""select account, debit, credit
@@ -158,7 +162,395 @@
 			self.assertEquals(expected_gl_entries[i][0], gle.account)
 			self.assertEquals(expected_gl_entries[i][1], gle.debit)
 			self.assertEquals(expected_gl_entries[i][2], gle.credit)
+	
+	def _clear_stock(self):
+		webnotes.conn.sql("delete from `tabStock Ledger Entry`")
+		webnotes.conn.sql("""delete from `tabBin`""")
+	
+	def _insert_material_receipt(self):
+		self._clear_stock()
+		se1 = webnotes.bean(copy=test_records[0])
+		se1.insert()
+		se1.submit()
+		
+		se2 = webnotes.bean(copy=test_records[0])
+		se2.doclist[1].item_code = "_Test Item Home Desktop 100"
+		se2.insert()
+		se2.submit()
+		
+	def _get_actual_qty(self):
+		return flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", 
+			"warehouse": "_Test Warehouse"}, "actual_qty"))
+			
+	def _test_sales_invoice_return(self, item_code, delivered_qty, returned_qty):
+		from stock.doctype.stock_entry.stock_entry import NotUpdateStockError
+		
+		from accounts.doctype.sales_invoice.test_sales_invoice \
+			import test_records as sales_invoice_test_records
+		
+		# invalid sales invoice as update stock not checked
+		si = webnotes.bean(copy=sales_invoice_test_records[1])
+		si.insert()
+		si.submit()
+		
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Sales Return"
+		se.doc.sales_invoice_no = si.doc.name
+		se.doclist[1].qty = returned_qty
+		se.doclist[1].transfer_qty = returned_qty
+		self.assertRaises(NotUpdateStockError, se.insert)
+		
+		self._insert_material_receipt()
+		
+		# check currency available qty in bin
+		actual_qty_0 = self._get_actual_qty()
+		
+		# insert a pos invoice with update stock
+		si = webnotes.bean(copy=sales_invoice_test_records[1])
+		si.doc.is_pos = si.doc.update_stock = 1
+		si.doclist[1].warehouse = "_Test Warehouse"
+		si.doclist[1].item_code = item_code
+		si.insert()
+		si.submit()
+		
+		# check available bin qty after invoice submission
+		actual_qty_1 = self._get_actual_qty()
+		
+		self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
+		
+		# check if item is validated
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Sales Return"
+		se.doc.sales_invoice_no = si.doc.name
+		se.doc.posting_date = "2013-03-10"
+		se.doclist[1].item_code = "_Test Item Home Desktop 200"
+		se.doclist[1].qty = returned_qty
+		se.doclist[1].transfer_qty = returned_qty
+		
+		# check if stock entry gets submitted
+		self.assertRaises(webnotes.DoesNotExistError, se.insert)
+		
+		# try again
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Sales Return"
+		se.doc.posting_date = "2013-03-10"
+		se.doc.sales_invoice_no = si.doc.name
+		se.doclist[1].qty = returned_qty
+		se.doclist[1].transfer_qty = returned_qty
+		# in both cases item code remains _Test Item when returning
+		se.insert()
+		
+		se.submit()
+		
+		# check if available qty is increased
+		actual_qty_2 = self._get_actual_qty()
+		
+		self.assertEquals(actual_qty_1 + returned_qty, actual_qty_2)
+		
+		return se
+	
+	def test_sales_invoice_return_of_non_packing_item(self):
+		self._test_sales_invoice_return("_Test Item", 5, 2)
+			
+	def test_sales_invoice_return_of_packing_item(self):
+		self._test_sales_invoice_return("_Test Sales BOM Item", 25, 20)
+		
+	def _test_delivery_note_return(self, item_code, delivered_qty, returned_qty):
+		self._insert_material_receipt()
+		
+		from stock.doctype.delivery_note.test_delivery_note \
+			import test_records as delivery_note_test_records
+		
+		actual_qty_0 = self._get_actual_qty()
+		
+		# make a delivery note based on this invoice
+		dn = webnotes.bean(copy=delivery_note_test_records[0])
+		dn.doclist[1].item_code = item_code
+		dn.insert()
+		dn.submit()
+		
+		actual_qty_1 = self._get_actual_qty()
+		
+		self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
+		
+		si_doclist = webnotes.map_doclist([
+			["Delivery Note", "Sales Invoice"],
+			["Delivery Note Item", "Sales Invoice Item"],
+			["Sales Taxes and Charges", "Sales Taxes and Charges"],
+			["Sales Team", "Sales Team"]], dn.doc.name)
+			
+		si = webnotes.bean(si_doclist)
+		si.doc.posting_date = dn.doc.posting_date
+		si.doc.debit_to = "_Test Customer - _TC"
+		for d in si.doclist.get({"parentfield": "entries"}):
+			d.income_account = "Sales - _TC"
+			d.cost_center = "_Test Cost Center - _TC"
+		si.insert()
+		si.submit()
+		
+		# insert and submit stock entry for sales return
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Sales Return"
+		se.doc.delivery_note_no = dn.doc.name
+		se.doc.posting_date = "2013-03-10"
+		se.doclist[1].qty = se.doclist[1].transfer_qty = returned_qty
+		
+		se.insert()
+		se.submit()
+		
+		actual_qty_2 = self._get_actual_qty()
+		self.assertEquals(actual_qty_1 + returned_qty, actual_qty_2)
+		
+		return se
+		
+	def test_delivery_note_return_of_non_packing_item(self):
+		self._test_delivery_note_return("_Test Item", 5, 2)
+		
+	def test_delivery_note_return_of_packing_item(self):
+		self._test_delivery_note_return("_Test Sales BOM Item", 25, 20)
+		
+	def _test_sales_return_jv(self, se):
+		from stock.doctype.stock_entry.stock_entry import make_return_jv
+		jv_list = make_return_jv(se.doc.name)
+		
+		self.assertEqual(len(jv_list), 3)
+		self.assertEqual(jv_list[0].get("voucher_type"), "Credit Note")
+		self.assertEqual(jv_list[0].get("posting_date"), se.doc.posting_date)
+		self.assertEqual(jv_list[1].get("account"), "_Test Customer - _TC")
+		self.assertEqual(jv_list[2].get("account"), "Sales - _TC")
+		self.assertTrue(jv_list[1].get("against_invoice"))
+		
+	def test_make_return_jv_for_sales_invoice_non_packing_item(self):
+		se = self._test_sales_invoice_return("_Test Item", 5, 2)
+		self._test_sales_return_jv(se)
+		
+	def test_make_return_jv_for_sales_invoice_packing_item(self):
+		se = self._test_sales_invoice_return("_Test Sales BOM Item", 25, 20)
+		self._test_sales_return_jv(se)
+		
+	def test_make_return_jv_for_delivery_note_non_packing_item(self):
+		se = self._test_delivery_note_return("_Test Item", 5, 2)
+		self._test_sales_return_jv(se)
+		
+		se = self._test_delivery_note_return_against_sales_order("_Test Item", 5, 2)
+		self._test_sales_return_jv(se)
+		
+	def test_make_return_jv_for_delivery_note_packing_item(self):
+		se = self._test_delivery_note_return("_Test Sales BOM Item", 25, 20)
+		self._test_sales_return_jv(se)
+		
+		se = self._test_delivery_note_return_against_sales_order("_Test Sales BOM Item", 25, 20)
+		self._test_sales_return_jv(se)
+		
+	def _test_delivery_note_return_against_sales_order(self, item_code, delivered_qty, returned_qty):
+		self._insert_material_receipt()
 
+		from selling.doctype.sales_order.test_sales_order \
+			import test_records as sales_order_test_records
+
+		actual_qty_0 = self._get_actual_qty()
+		
+		so = webnotes.bean(copy=sales_order_test_records[0])
+		so.doclist[1].item_code = item_code
+		so.doclist[1].qty = 5.0
+		so.insert()
+		so.submit()
+		
+		dn_doclist = webnotes.map_doclist([
+			["Sales Order", "Delivery Note"],
+			["Sales Order Item", "Delivery Note Item"],
+			["Sales Taxes and Charges", "Sales Taxes and Charges"],
+			["Sales Team", "Sales Team"]], so.doc.name)
+
+		dn = webnotes.bean(dn_doclist)
+		dn.doc.status = "Draft"
+		dn.doc.posting_date = so.doc.delivery_date
+		dn.insert()
+		dn.submit()
+		
+		actual_qty_1 = self._get_actual_qty()
+
+		self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
+
+		si_doclist = webnotes.map_doclist([
+			["Sales Order", "Sales Invoice"],
+			["Sales Order Item", "Sales Invoice Item"],
+			["Sales Taxes and Charges", "Sales Taxes and Charges"],
+			["Sales Team", "Sales Team"]], so.doc.name)
+
+		si = webnotes.bean(si_doclist)
+		si.doc.posting_date = dn.doc.posting_date
+		si.doc.debit_to = "_Test Customer - _TC"
+		for d in si.doclist.get({"parentfield": "entries"}):
+			d.income_account = "Sales - _TC"
+			d.cost_center = "_Test Cost Center - _TC"
+		si.insert()
+		si.submit()
+
+		# insert and submit stock entry for sales return
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Sales Return"
+		se.doc.delivery_note_no = dn.doc.name
+		se.doc.posting_date = "2013-03-10"
+		se.doclist[1].qty = se.doclist[1].transfer_qty = returned_qty
+
+		se.insert()
+		se.submit()
+
+		actual_qty_2 = self._get_actual_qty()
+		self.assertEquals(actual_qty_1 + returned_qty, actual_qty_2)
+
+		return se
+		
+	def test_purchase_receipt_return(self):
+		self._clear_stock()
+		
+		actual_qty_0 = self._get_actual_qty()
+		
+		from stock.doctype.purchase_receipt.test_purchase_receipt \
+			import test_records as purchase_receipt_test_records
+		
+		# submit purchase receipt
+		pr = webnotes.bean(copy=purchase_receipt_test_records[0])
+		pr.insert()
+		pr.submit()
+		
+		actual_qty_1 = self._get_actual_qty()
+		
+		self.assertEquals(actual_qty_0 + 10, actual_qty_1)
+		
+		pi_doclist = webnotes.map_doclist([
+			["Purchase Receipt", "Purchase Invoice"],
+			["Purchase Receipt Item", "Purchase Invoice Item"],
+			["Purchase Taxes and Charges", "Purchase Taxes and Charges"]], pr.doc.name)
+			
+		pi = webnotes.bean(pi_doclist)
+		pi.doc.posting_date = pr.doc.posting_date
+		pi.doc.credit_to = "_Test Supplier - _TC"
+		for d in pi.doclist.get({"parentfield": "entries"}):
+			d.expense_head = "_Test Account Cost for Goods Sold - _TC"
+			d.cost_center = "_Test Cost Center - _TC"
+		for d in pi.doclist.get({"parentfield": "purchase_tax_details"}):
+			d.cost_center = "_Test Cost Center - _TC"
+		
+		pi.run_method("calculate_taxes_and_totals")
+		pi.insert()
+		pi.submit()
+		
+		# submit purchase return
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Purchase Return"
+		se.doc.purchase_receipt_no = pr.doc.name
+		se.doc.posting_date = "2013-03-01"
+		se.doclist[1].qty = se.doclist[1].transfer_qty = 5
+		se.doclist[1].s_warehouse = "_Test Warehouse"
+		se.insert()
+		se.submit()
+		
+		actual_qty_2 = self._get_actual_qty()
+		
+		self.assertEquals(actual_qty_1 - 5, actual_qty_2)
+		
+		return se, pr.doc.name
+		
+	def test_over_stock_return(self):
+		from stock.doctype.stock_entry.stock_entry import StockOverReturnError
+		
+		# out of 10, 5 gets returned
+		prev_se, pr_docname = self.test_purchase_receipt_return()
+		
+		# submit purchase return - return another 6 qtys so that exception is raised
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Purchase Return"
+		se.doc.purchase_receipt_no = pr_docname
+		se.doc.posting_date = "2013-03-01"
+		se.doclist[1].qty = se.doclist[1].transfer_qty = 6
+		se.doclist[1].s_warehouse = "_Test Warehouse"
+		
+		self.assertRaises(StockOverReturnError, se.insert)
+		
+	def _test_purchase_return_jv(self, se):
+		from stock.doctype.stock_entry.stock_entry import make_return_jv
+		jv_list = make_return_jv(se.doc.name)
+		
+		self.assertEqual(len(jv_list), 3)
+		self.assertEqual(jv_list[0].get("voucher_type"), "Debit Note")
+		self.assertEqual(jv_list[0].get("posting_date"), se.doc.posting_date)
+		self.assertEqual(jv_list[1].get("account"), "_Test Supplier - _TC")
+		self.assertEqual(jv_list[2].get("account"), "_Test Account Cost for Goods Sold - _TC")
+		self.assertTrue(jv_list[1].get("against_voucher"))
+		
+	def test_make_return_jv_for_purchase_receipt(self):
+		se, pr_name = self.test_purchase_receipt_return()
+		self._test_purchase_return_jv(se)
+		
+		se, pr_name = self._test_purchase_return_return_against_purchase_order()
+		self._test_purchase_return_jv(se)
+		
+	def _test_purchase_return_return_against_purchase_order(self):
+		self._clear_stock()
+		
+		actual_qty_0 = self._get_actual_qty()
+		
+		from buying.doctype.purchase_order.test_purchase_order \
+			import test_records as purchase_order_test_records
+		
+		# submit purchase receipt
+		po = webnotes.bean(copy=purchase_order_test_records[0])
+		po.doc.is_subcontracted = None
+		po.doclist[1].item_code = "_Test Item"
+		po.doclist[1].import_rate = 50
+		po.insert()
+		po.submit()
+		
+		pr_doclist = webnotes.map_doclist([
+			["Purchase Order", "Purchase Receipt"],
+			["Purchase Order Item", "Purchase Receipt Item"],
+			["Purchase Taxes and Charges", "Purchase Taxes and Charges"]], po.doc.name)
+		
+		pr = webnotes.bean(pr_doclist)
+		pr.doc.posting_date = po.doc.transaction_date
+		pr.insert()
+		pr.submit()
+		
+		actual_qty_1 = self._get_actual_qty()
+		
+		self.assertEquals(actual_qty_0 + 10, actual_qty_1)
+		
+		pi_doclist = webnotes.map_doclist([
+			["Purchase Order", "Purchase Invoice"],
+			["Purchase Order Item", "Purchase Invoice Item"],
+			["Purchase Taxes and Charges", "Purchase Taxes and Charges"]], po.doc.name)
+			
+		pi = webnotes.bean(pi_doclist)
+		pi.doc.posting_date = pr.doc.posting_date
+		pi.doc.credit_to = "_Test Supplier - _TC"
+		for d in pi.doclist.get({"parentfield": "entries"}):
+			d.expense_head = "_Test Account Cost for Goods Sold - _TC"
+			d.cost_center = "_Test Cost Center - _TC"
+		for d in pi.doclist.get({"parentfield": "purchase_tax_details"}):
+			d.cost_center = "_Test Cost Center - _TC"
+		
+		pi.run_method("calculate_taxes_and_totals")
+		pi.insert()
+		pi.submit()
+		
+		# submit purchase return
+		se = webnotes.bean(copy=test_records[0])
+		se.doc.purpose = "Purchase Return"
+		se.doc.purchase_receipt_no = pr.doc.name
+		se.doc.posting_date = "2013-03-01"
+		se.doclist[1].qty = se.doclist[1].transfer_qty = 5
+		se.doclist[1].s_warehouse = "_Test Warehouse"
+		se.insert()
+		se.submit()
+		
+		actual_qty_2 = self._get_actual_qty()
+		
+		self.assertEquals(actual_qty_1 - 5, actual_qty_2)
+		
+		return se, pr.doc.name
+		
 test_records = [
 	[
 		{
diff --git a/stock/doctype/stock_ledger/stock_ledger.py b/stock/doctype/stock_ledger/stock_ledger.py
index 5dff992..fcb4a54 100644
--- a/stock/doctype/stock_ledger/stock_ledger.py
+++ b/stock/doctype/stock_ledger/stock_ledger.py
@@ -209,12 +209,13 @@
 
 			if v.get("actual_qty"):
 				sle_id = self.make_entry(v)
-
+				
 			args = v.copy()
 			args.update({
 				"sle_id": sle_id,
 				"is_amended": is_amended
 			})
+			
 			get_obj('Warehouse', v["warehouse"]).update_bin(args)
 
 
diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index d1fe3d9..3089a57 100644
--- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -39,7 +39,7 @@
 		self.check_stock_frozen_date()
 		self.scrub_posting_time()
 		self.doc.fiscal_year = get_fiscal_year(self.doc.posting_date)[0]
-	
+		
 	#check for item quantity available in stock
 	def actual_amt_check(self):
 		if self.doc.batch_no:
diff --git a/stock/page/stock_home/stock_home.js b/stock/page/stock_home/stock_home.js
index a09cae7..db77fce 100644
--- a/stock/page/stock_home/stock_home.js
+++ b/stock/page/stock_home/stock_home.js
@@ -95,12 +95,6 @@
 				description: wn._("Change UOM for an Item."),
 				"doctype": "Stock UOM Replace Utility"
 			},
-			{
-				"route":"Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool",
-				"label": wn._("Sales and Purchase Return Tool"),
-				doctype: "Sales and Purchase Return Tool",
-				description: wn._("Manage sales or purchase returns")
-			},
 		]
 	},
 	{
diff --git a/stock/stock_ledger.py b/stock/stock_ledger.py
index 883ced7..f15866d 100644
--- a/stock/stock_ledger.py
+++ b/stock/stock_ledger.py
@@ -36,6 +36,7 @@
 		}
 	"""
 	previous_sle = get_sle_before_datetime(args)
+	
 	qty_after_transaction = flt(previous_sle.get("qty_after_transaction"))
 	valuation_rate = flt(previous_sle.get("valuation_rate"))
 	stock_queue = json.loads(previous_sle.get("stock_queue") or "[]")
@@ -43,7 +44,7 @@
 
 	entries_to_fix = get_sle_after_datetime(previous_sle or \
 		{"item_code": args["item_code"], "warehouse": args["warehouse"]}, for_update=True)
-		
+	
 	valuation_method = get_valuation_method(args["item_code"])
 	
 	for sle in entries_to_fix:
@@ -127,7 +128,7 @@
 	if not args.get("posting_date"):
 		args["posting_date"] = "1900-01-01"
 	if not args.get("posting_time"):
-		args["posting_time"] = "12:00"
+		args["posting_time"] = "00:00"
 	
 	return webnotes.conn.sql("""select * from `tabStock Ledger Entry`
 		where item_code = %%(item_code)s
diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py
index 905e98f..2dc8c6a 100644
--- a/utilities/transaction_base.py
+++ b/utilities/transaction_base.py
@@ -16,7 +16,7 @@
 
 from __future__ import unicode_literals
 import webnotes
-from webnotes.utils import load_json, cstr, flt
+from webnotes.utils import load_json, cstr, flt, now_datetime
 from webnotes.model.doc import addchild
 
 from webnotes.model.controller import DocListController
@@ -246,4 +246,8 @@
 		[d.update({"doctype":"Communication"}) for d in comm_list]
 		
 		self.doclist.extend(webnotes.doclist([webnotes.doc(fielddata=d) \
-			for d in comm_list]))
\ No newline at end of file
+			for d in comm_list]))
+			
+	def validate_posting_time(self):
+		if not self.doc.posting_time:
+			self.doc.posting_time = now_datetime().strftime('%H:%M:%S')
\ No newline at end of file