diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
index 0c481fa..ac39877 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
@@ -542,6 +542,7 @@
 		is_stock_item = True
 		bin_qty = get_bin_qty(item_code, warehouse)
 		pos_sales_qty = get_pos_reserved_qty(item_code, warehouse)
+
 		return bin_qty - pos_sales_qty, is_stock_item
 	else:
 		is_stock_item = True
diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py
index 9978912..c8f1422 100644
--- a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py
+++ b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py
@@ -83,30 +83,19 @@
 		pos_invoice_docs = [
 			frappe.get_cached_doc("POS Invoice", d.pos_invoice) for d in self.pos_invoices
 		]
-		batched_invoices = self.get_batched_invoices(pos_invoice_docs)
 
-		for invoice in batched_invoices:
-			sales_invoice, credit_note = "", ""
-			if not invoice[0].get("is_return"):
-				sales_invoice = self.process_merging_into_sales_invoice(invoice)
-			else:
-				credit_note = self.process_merging_into_credit_note(invoice)
+		returns = [d for d in pos_invoice_docs if d.get("is_return") == 1]
+		sales = [d for d in pos_invoice_docs if d.get("is_return") == 0]
 
-			self.save()  # save consolidated_sales_invoice & consolidated_credit_note ref in merge log
-			self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_note)
+		sales_invoice, credit_note = "", ""
+		if returns:
+			credit_note = self.process_merging_into_credit_note(returns)
 
-		# returns = [d for d in pos_invoice_docs if d.get("is_return") == 1]
-		# sales = [d for d in pos_invoice_docs if d.get("is_return") == 0]
+		if sales:
+			sales_invoice = self.process_merging_into_sales_invoice(sales)
 
-		# sales_invoice, credit_note = "", ""
-		# if returns:
-		# 	credit_note = self.process_merging_into_credit_note(returns)
-
-		# if sales:
-		# 	sales_invoice = self.process_merging_into_sales_invoice(sales)
-
-		# self.save()  # save consolidated_sales_invoice & consolidated_credit_note ref in merge log
-		# self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_note)
+		self.save()  # save consolidated_sales_invoice & consolidated_credit_note ref in merge log
+		self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_note)
 
 	def on_cancel(self):
 		pos_invoice_docs = [
@@ -171,23 +160,20 @@
 
 			for item in doc.get("items"):
 				found = False
-				if not item.serial_and_batch_bundle:
-					for i in items:
-
-						if (
-							i.item_code == item.item_code
-							and not i.serial_no
-							and not i.batch_no
-							and i.uom == item.uom
-							and i.net_rate == item.net_rate
-							and i.warehouse == item.warehouse
-						):
-							found = True
-							i.qty = i.qty + item.qty
-							i.amount = i.amount + item.net_amount
-							i.net_amount = i.amount
-							i.base_amount = i.base_amount + item.base_net_amount
-							i.base_net_amount = i.base_amount
+				for i in items:
+					if (
+						i.item_code == item.item_code
+						and not i.serial_and_batch_bundle
+						and i.uom == item.uom
+						and i.net_rate == item.net_rate
+						and i.warehouse == item.warehouse
+					):
+						found = True
+						i.qty = i.qty + item.qty
+						i.amount = i.amount + item.net_amount
+						i.net_amount = i.amount
+						i.base_amount = i.base_amount + item.base_net_amount
+						i.base_net_amount = i.base_amount
 
 				if not found:
 					item.rate = item.net_rate
@@ -287,21 +273,6 @@
 			si.flags.ignore_validate = True
 			si.cancel()
 
-	def get_batched_invoices(self, pos_invoice_docs):
-		grouped_batch = []
-		current_batch = []
-		for item in pos_invoice_docs:
-			if not current_batch:
-				current_batch.append(item)
-			elif current_batch[-1].get("is_return") != item.get("is_return"):
-				grouped_batch.append(current_batch)
-				current_batch = [item]
-			else:
-				current_batch.append(item)
-
-		grouped_batch.append(current_batch)
-		return grouped_batch
-
 
 def update_item_wise_tax_detail(consolidate_tax_row, tax_row):
 	consolidated_tax_detail = json.loads(consolidate_tax_row.item_wise_tax_detail)
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
index 43bd7ac..fcf2bce 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
@@ -3,7 +3,7 @@
 
 import collections
 import csv
-from collections import defaultdict
+from collections import Counter, defaultdict
 from typing import Dict, List
 
 import frappe
@@ -1197,6 +1197,7 @@
 		filters=[
 			["POS Invoice", "consolidated_invoice", "is", "not set"],
 			["POS Invoice", "docstatus", "=", 1],
+			["POS Invoice", "is_return", "=", 0],
 			["POS Invoice Item", "item_code", "=", kwargs.item_code],
 			["POS Invoice", "name", "!=", kwargs.ignore_voucher_no],
 		],
@@ -1242,8 +1243,14 @@
 				child_doc, parent_doc, ignore_voucher_detail_no=kwargs.get("ignore_voucher_detail_no")
 			)
 		)
+	# Counter is used to create a hashmap of serial nos, which contains count of each serial no
+	# ignore serial nos inlcudes serial nos which are sold and returned
+	# so we need to subtract returned serial nos from ignore serial nos after creating a counter of each
 
-	return list(set(ignore_serial_nos) - set(returned_serial_nos))
+	ignore_serial_nos_counter = Counter(ignore_serial_nos)
+	returned_serial_nos_counter = Counter(returned_serial_nos)
+
+	return list(ignore_serial_nos_counter - returned_serial_nos_counter)
 
 
 def get_reserved_batches_for_pos(kwargs):
