removed complications from sales purchase return
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 131e9ff..edaf63b 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -279,7 +279,7 @@
 						
 	def validate_return_reference_doc(self):
 		"""validate item with reference doc"""
-		ref = get_return_reference_details(self.doc.fields)
+		ref = get_return_doclist_and_details(self.doc.fields)
 		
 		if ref.doclist:
 			# validate docstatus
@@ -703,7 +703,7 @@
 def query_return_item(doctype, txt, searchfield, start, page_len, filters):
 	txt = txt.replace("%", "")
 
-	ref = get_return_reference_details(filters)
+	ref = get_return_doclist_and_details(filters)
 			
 	stock_items = get_stock_items_for_return(ref.doclist, ref.parentfields)
 	
@@ -737,7 +737,7 @@
 
 	return stock_items
 	
-def get_return_reference_details(args):
+def get_return_doclist_and_details(args):
 	ref = webnotes._dict()
 	
 	# get ref_doclist
@@ -768,7 +768,7 @@
 	if not se.doc.purpose in ["Sales Return", "Purchase Return"]:
 		return
 	
-	ref = get_return_reference_details(se.doc.fields)
+	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)
@@ -794,8 +794,6 @@
 			"doctype": "Journal Voucher Detail",
 			"parentfield": "entries",
 			"account": r.get("account"),
-			"debit": r.get("debit"),
-			"credit": r.get("credit"),
 			"against_invoice": r.get("against_invoice"),
 			"against_voucher": r.get("against_voucher"),
 			"balance": get_balance_on(r.get("account"), se.doc.posting_date)
@@ -807,42 +805,32 @@
 	# customer account entry
 	parent = {
 		"account": ref.doclist[0].debit_to,
-		"credit": 0.0,
 		"against_invoice": ref.doclist[0].name,
 	}
 	
 	# income account entries
-	children = {}
+	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, debit = get_sales_account_and_amount_from_item(ref.doclist, ref_item,
-			se_item.transfer_qty)
+		account = get_sales_account_from_item(ref.doclist, ref_item)
 		
 		if account not in children:
-			children[account] = 0
-		children[account] += debit
-		parent["credit"] += debit
+			children.append(account)
 			
-	# find tax account and value and add corresponding rows
+	return [parent] + [{"account": account} for account in children]
 	
-	return [parent] + [{"account": account, "debit": debit} for account, debit in children.items()]
-	
-def get_sales_account_and_amount_from_item(doclist, ref_item, transfer_qty):
-	account = debit = None
+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})
-			packing_ratio = parent_item.qty / ref_item.qty
-
-			debit = parent_item.basic_rate * transfer_qty * packing_ratio
 			account = parent_item.income_account
 	else:
-		debit = ref_item.basic_rate * transfer_qty
 		account = ref_item.income_account
 	
-	return account, debit	
+	return account
 	
 def make_return_jv_from_delivery_note(se, ref):
 	invoices_against_delivery = get_invoice_list("Sales Invoice Item", "delivery_note",
@@ -854,11 +842,14 @@
 		
 		invoices_against_delivery = get_invoice_list("Sales Invoice Item", "sales_order",
 			sales_orders_against_delivery)
+			
+	if not invoices_against_delivery:
+		return []
 	
-	against_invoice = {}
+	parent = {}
+	children = []
 	
 	for se_item in se.doclist.get({"parentfield": "mtn_details"}):
-		pending = se_item.transfer_qty
 		for sales_invoice in invoices_against_delivery:
 			si = webnotes.bean("Sales Invoice", sales_invoice)
 			si.run_method("make_packing_list")
@@ -866,44 +857,24 @@
 			
 			if not ref_item:
 				continue
-			
+				
 			ref_item = ref_item[0]
 			
-			if ref_item.qty < pending:
-				transfer_qty = ref_item.qty
-				pending -= ref_item.qty
-			else:
-				transfer_qty = pending
-				pending = 0
+			account = get_sales_account_from_item(si.doclist, ref_item)
 			
-			account, debit = get_sales_account_and_amount_from_item(si.doclist, ref_item,
-				transfer_qty)
-				
-			if si.doclist[0].name not in against_invoice:
-				against_invoice[sales_invoice] = {
-					"parent": {"account": si.doclist[0].debit_to, "credit": 0},
-					"children": {}
-				}
-				
-			against_invoice[sales_invoice]["parent"]["credit"] += debit
+			if account not in children:
+				children.append(account)
 			
-			if account not in against_invoice[sales_invoice]["children"]:
-				against_invoice[sales_invoice]["children"][account] = 0
+			if not parent:
+				parent = {"account": si.doc.debit_to}
+
+			break
 			
-			against_invoice[sales_invoice]["children"][account] += debit
-			
-			# find tax account and value and add corresponding rows
-			
-			if pending <= 0:
-				break
+	if len(invoices_against_delivery) == 1:
+		parent["against_invoice"] = invoices_against_delivery[0]
 	
-	result = []
-	for sales_invoice, opts in against_invoice.items():
-		parent = opts["parent"]
-		parent.update({"against_invoice": sales_invoice})
-		children = [{"account": account, "debit": debit} 
-			for account, debit in opts["children"].items()]
-		result += [parent] + children
+	result = [parent] + [{"account": account} for account in children]
+	
 	return result
 	
 def get_invoice_list(doctype, link_field, value):
@@ -925,53 +896,36 @@
 		invoice_against_receipt = get_invoice_list("Purchase Invoice Item", "purchase_order",
 			purchase_orders_against_receipt)
 			
-	against_voucher = {}
+	if not invoice_against_receipt:
+		return []
+	
+	parent = {}
+	children = []
 	
 	for se_item in se.doclist.get({"parentfield": "mtn_details"}):
-		pending = se_item.transfer_qty
 		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]
 			
-			if ref_item.qty < pending:
-				transfer_qty = ref_item.qty
-				pending -= ref_item.qty
-			else:
-				transfer_qty = pending
-				pending = 0
-			
-			credit = ref_item.rate * transfer_qty
 			account = ref_item.expense_head
 			
-			if pi.doclist[0].name not in against_voucher:
-				against_voucher[purchase_invoice] = {
-					"parent": {"account": pi.doclist[0].credit_to, "debit": 0},
-					"children": {}
-				}
+			if account not in children:
+				children.append(account)
 			
-			against_voucher[purchase_invoice]["parent"]["debit"] += credit
+			if not parent:
+				parent = {"account": pi.doc.credit_to}
 
-			if account not in against_voucher[purchase_invoice]["children"]:
-				against_voucher[purchase_invoice]["children"][account] = 0
-				
-			against_voucher[purchase_invoice]["children"][account] += credit
+			break
 			
-			# find tax account and value and add corresponding rows
-			
-			if pending <= 0:
-				break
+	if len(invoice_against_receipt) == 1:
+		parent["against_voucher"] = invoice_against_receipt[0]
 	
-	result = []
-	for purchase_invoice, opts in against_voucher.items():
-		parent = opts["parent"]
-		parent.update({"against_voucher": purchase_invoice})
-		children = [{"account": account, "credit": credit} 
-			for account, credit in opts["children"].items()]
-		result += [parent] + children
+	result = [parent] + [{"account": account} for account in children]
+	
 	return result
 		
\ No newline at end of file
diff --git a/stock/doctype/stock_entry/test_stock_entry.py b/stock/doctype/stock_entry/test_stock_entry.py
index 049b0e6..322fcfa 100644
--- a/stock/doctype/stock_entry/test_stock_entry.py
+++ b/stock/doctype/stock_entry/test_stock_entry.py
@@ -309,7 +309,7 @@
 	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, returned_value):
+	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)
 		
@@ -320,35 +320,27 @@
 		self.assertEqual(jv_list[2].get("account"), "Sales - _TC")
 		self.assertTrue(jv_list[1].get("against_invoice"))
 		
-		# debit == credit
-		debit = sum([flt(d.get("debit")) for d in jv_list])
-		credit = sum([flt(d.get("credit")) for d in jv_list])
-		self.assertEqual(debit, credit)
-		
-		# validate value of debit
-		self.assertEqual(debit, returned_value)
-		
 	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, 1000)
+		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, 2000)
+		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, 200)
+		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, 200)
+		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, 400)
+		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, 400)
+		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()
@@ -477,7 +469,7 @@
 		
 		self.assertRaises(StockOverReturnError, se.insert)
 		
-	def _test_purchase_return_jv(self, se, returned_value):
+	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)
 		
@@ -488,20 +480,12 @@
 		self.assertEqual(jv_list[2].get("account"), "_Test Account Cost for Goods Sold - _TC")
 		self.assertTrue(jv_list[1].get("against_voucher"))
 		
-		# debit == credit
-		debit = sum([flt(d.get("debit")) for d in jv_list])
-		credit = sum([flt(d.get("credit")) for d in jv_list])
-		self.assertEqual(debit, credit)
-		
-		# validate value of credit
-		self.assertEqual(credit, returned_value)
-		
 	def test_make_return_jv_for_purchase_receipt(self):
 		se, pr_name = self.test_purchase_receipt_return()
-		self._test_purchase_return_jv(se, 250)
+		self._test_purchase_return_jv(se)
 		
 		se, pr_name = self._test_purchase_return_return_against_purchase_order()
-		self._test_purchase_return_jv(se, 250)
+		self._test_purchase_return_jv(se)
 		
 	def _test_purchase_return_return_against_purchase_order(self):
 		self._clear_stock()