diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 1047e88..e2ed9d3 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -521,52 +521,53 @@
 		self.set_paid_amount()
 
 	def on_update_after_submit(self):
-		needs_repost = 0
+		if hasattr(self, "repost_required"):
+			needs_repost = 0
 
-		# Check if any field affecting accounting entry is altered
-		doc_before_update = self.get_doc_before_save()
-		accounting_dimensions = get_accounting_dimensions() + ["cost_center", "project"]
+			# Check if any field affecting accounting entry is altered
+			doc_before_update = self.get_doc_before_save()
+			accounting_dimensions = get_accounting_dimensions() + ["cost_center", "project"]
 
-		# Check if opening entry check updated
-		if doc_before_update.get("is_opening") != self.is_opening:
-			needs_repost = 1
-
-		if not needs_repost:
-			# Parent Level Accounts excluding party account
-			for field in (
-				"additional_discount_account",
-				"cash_bank_account",
-				"account_for_change_amount",
-				"write_off_account",
-				"loyalty_redemption_account",
-				"unrealized_profit_loss_account",
-			):
-				if doc_before_update.get(field) != self.get(field):
-					needs_repost = 1
-					break
-
-			# Check for parent accounting dimensions
-			for dimension in accounting_dimensions:
-				if doc_before_update.get(dimension) != self.get(dimension):
-					needs_repost = 1
-					break
-
-			# Check for child tables
-			if self.check_if_child_table_updated(
-				"items",
-				doc_before_update,
-				("income_account", "expense_account", "discount_account"),
-				accounting_dimensions,
-			):
+			# Check if opening entry check updated
+			if doc_before_update.get("is_opening") != self.is_opening:
 				needs_repost = 1
 
-			if self.check_if_child_table_updated(
-				"taxes", doc_before_update, ("account_head",), accounting_dimensions
-			):
-				needs_repost = 1
+			if not needs_repost:
+				# Parent Level Accounts excluding party account
+				for field in (
+					"additional_discount_account",
+					"cash_bank_account",
+					"account_for_change_amount",
+					"write_off_account",
+					"loyalty_redemption_account",
+					"unrealized_profit_loss_account",
+				):
+					if doc_before_update.get(field) != self.get(field):
+						needs_repost = 1
+						break
 
-		self.validate_accounts()
-		self.db_set("repost_required", needs_repost)
+				# Check for parent accounting dimensions
+				for dimension in accounting_dimensions:
+					if doc_before_update.get(dimension) != self.get(dimension):
+						needs_repost = 1
+						break
+
+				# Check for child tables
+				if self.check_if_child_table_updated(
+					"items",
+					doc_before_update,
+					("income_account", "expense_account", "discount_account"),
+					accounting_dimensions,
+				):
+					needs_repost = 1
+
+				if self.check_if_child_table_updated(
+					"taxes", doc_before_update, ("account_head",), accounting_dimensions
+				):
+					needs_repost = 1
+
+			self.validate_accounts()
+			self.db_set("repost_required", needs_repost)
 
 	def check_if_child_table_updated(
 		self, child_table, doc_before_update, fields_to_check, accounting_dimensions
@@ -585,11 +586,14 @@
 
 	@frappe.whitelist()
 	def repost_accounting_entries(self):
-		self.docstatus = 2
-		self.make_gl_entries_on_cancel()
-		self.docstatus = 1
-		self.make_gl_entries()
-		self.db_set("repost_required", 0)
+		if self.repost_required:
+			self.docstatus = 2
+			self.make_gl_entries_on_cancel()
+			self.docstatus = 1
+			self.make_gl_entries()
+			self.db_set("repost_required", 0)
+		else:
+			frappe.throw(_("No updates pending for reposting"))
 
 	def set_paid_amount(self):
 		paid_amount = 0.0
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 301d3e1..ed04747 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -2728,6 +2728,31 @@
 
 		check_gl_entries(self, si.name, expected_gle, add_days(nowdate(), -1))
 
+		# Update Invoice post submit and then check GL Entries again
+
+		si.load_from_db()
+		si.items[0].income_account = "Service - _TC"
+		si.additional_discount_account = "_Test Account Sales - _TC"
+		si.taxes[0].account_head = "VAT 5% - _TC"
+		si.save()
+
+		si.load_from_db()
+		self.assertTrue(si.repost_required)
+
+		si.repost_accounting_entries()
+
+		expected_gle = [
+			["_Test Account Sales - _TC", 22.0, 0.0, nowdate()],
+			["Debtors - _TC", 88, 0.0, nowdate()],
+			["Service - _TC", 0.0, 100.0, nowdate()],
+			["VAT 5% - _TC", 0.0, 10.0, nowdate()],
+		]
+
+		check_gl_entries(self, si.name, expected_gle, add_days(nowdate(), -1))
+
+		si.load_from_db()
+		self.assertFalse(si.repost_required)
+
 	def test_asset_depreciation_on_sale_with_pro_rata(self):
 		"""
 		Tests if an Asset set to depreciate yearly on June 30, that gets sold on Sept 30, creates an additional depreciation entry on its date of sale.
@@ -3269,6 +3294,7 @@
 		"""select account, debit, credit, posting_date
 		from `tabGL Entry`
 		where voucher_type='Sales Invoice' and voucher_no=%s and posting_date > %s
+		and is_cancelled = 0
 		order by posting_date asc, account asc""",
 		(voucher_no, posting_date),
 		as_dict=1,
