diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
index ff490f8..965a32d 100644
--- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
@@ -1,22 +1,10 @@
 # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 
-
-import datetime
-
 import frappe
 from frappe import _
 from frappe.model.document import Document
-from frappe.utils import (
-	cint,
-	get_datetime,
-	get_link_to_form,
-	get_time,
-	get_weekday,
-	now,
-	nowtime,
-	today,
-)
+from frappe.utils import cint, get_link_to_form, get_weekday, now, nowtime, today
 from frappe.utils.user import get_users_with_role
 from rq.timeouts import JobTimeoutException
 
@@ -58,7 +46,6 @@
 			self.db_set('status', self.status)
 
 	def on_submit(self):
-		self.deduplicate_similar_repost()
 		if not frappe.flags.in_test or self.flags.dont_run_in_test:
 			return
 
@@ -76,30 +63,27 @@
 		if self.based_on != "Item and Warehouse":
 			return
 
-		queued = frappe.db.get_value(
-				"Repost Item Valuation",
-				filters={
-					"docstatus": 1,
-					"status": "Queued",
-					"item_code": self.item_code,
-					"warehouse": self.warehouse,
-					"based_on": self.based_on,
-					"name": ("!=", self.name)
-				},
-				fieldname=["name", "posting_date", "posting_time"],
-				as_dict=True
-			)
-		if not queued:
-			return
+		filters = {
+			"item_code": self.item_code,
+			"warehouse": self.warehouse,
+			"name": self.name,
+			"posting_date": self.posting_date,
+			"posting_time": self.posting_time,
+		}
 
-		posting_timestamp = datetime.datetime.combine(get_datetime(self.posting_date), get_time(self.posting_time))
-		queued_timestamp = datetime.datetime.combine(get_datetime(queued.posting_date), get_time(queued.posting_time))
-
-		if posting_timestamp > queued_timestamp:
-			self.set_status("Skipped")
-		else:
-			frappe.db.set_value("Repost Item Valuation", queued.name, "status", "Skipped")
-
+		frappe.db.sql("""
+			update `tabRepost Item Valuation`
+			set status = 'Skipped'
+			WHERE item_code = %(item_code)s
+				and warehouse = %(warehouse)s
+				and name != %(name)s
+				and TIMESTAMP(posting_date, posting_time) > TIMESTAMP(%(posting_date)s, %(posting_time)s)
+				and docstatus = 1
+				and status = 'Queued'
+				and based_on = 'Item and Warehouse'
+				""",
+			filters
+		)
 
 def on_doctype_update():
 	frappe.db.add_index("Repost Item Valuation", ["warehouse", "item_code"], "item_warehouse")
@@ -182,6 +166,7 @@
 	for row in riv_entries:
 		doc = frappe.get_doc('Repost Item Valuation', row.name)
 		if doc.status in ('Queued', 'In Progress'):
+			doc.deduplicate_similar_repost()
 			repost(doc)
 
 	riv_entries = get_repost_item_valuation_entries()
diff --git a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
index ea79572..de79316 100644
--- a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
@@ -116,12 +116,14 @@
 		riv2 = frappe.get_doc(riv_args.update({"posting_date": "2021-01-03"}))
 		riv2.flags.dont_run_in_test = True
 		riv2.submit()
+		riv1.deduplicate_similar_repost()
 		_assert_status(riv2, "Skipped")
 
 		# older than exisitng duplicate - riv1
 		riv3 = frappe.get_doc(riv_args.update({"posting_date": "2021-01-01"}))
 		riv3.flags.dont_run_in_test = True
 		riv3.submit()
+		riv3.deduplicate_similar_repost()
 		_assert_status(riv3, "Queued")
 		_assert_status(riv1, "Skipped")
 
@@ -129,6 +131,7 @@
 		riv4 = frappe.get_doc(riv_args.update({"warehouse": "Stores - _TC"}))
 		riv4.flags.dont_run_in_test = True
 		riv4.submit()
+		riv4.deduplicate_similar_repost()
 		_assert_status(riv4, "Queued")
 		_assert_status(riv3, "Queued")
 
