fix: Simply cancel reverse entries
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index deb905b..07173a3 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -532,10 +532,7 @@
 
 	def make_gl_entries(self, gl_entries=None, from_repost=False):
 		if not gl_entries:
-			if self.docstatus == 1:
-				gl_entries = self.get_gl_entries()
-			else:
-				gl_entries = self.get_gl_entries(cancel=1)
+			gl_entries = self.get_gl_entries()
 
 		if gl_entries:
 			update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes"
@@ -551,7 +548,13 @@
 				provisional_entries = [a for a in gl_entries if a.voucher_type == "Purchase Receipt"]
 				make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
 				if provisional_entries:
-					make_gl_entries(provisional_entries)
+					for entry in provisional_entries:
+						frappe.db.set_value(
+							"GL Entry",
+							{"voucher_type": "Purchase Receipt", "voucher_detail_no": entry.voucher_detail_no},
+							"is_cancelled",
+							1,
+						)
 
 			if update_outstanding == "No":
 				update_outstanding_amt(
@@ -565,7 +568,7 @@
 		elif self.docstatus == 2 and cint(self.update_stock) and self.auto_accounting_for_stock:
 			make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
 
-	def get_gl_entries(self, warehouse_account=None, cancel=0):
+	def get_gl_entries(self, warehouse_account=None):
 		self.auto_accounting_for_stock = erpnext.is_perpetual_inventory_enabled(self.company)
 		if self.auto_accounting_for_stock:
 			self.stock_received_but_not_billed = self.get_company_default("stock_received_but_not_billed")
@@ -578,7 +581,7 @@
 		gl_entries = []
 
 		self.make_supplier_gl_entry(gl_entries)
-		self.make_item_gl_entries(gl_entries, cancel=cancel)
+		self.make_item_gl_entries(gl_entries)
 		self.make_discount_gl_entries(gl_entries)
 
 		if self.check_asset_cwip_enabled():
@@ -645,7 +648,7 @@
 				)
 			)
 
-	def make_item_gl_entries(self, gl_entries, cancel=0):
+	def make_item_gl_entries(self, gl_entries):
 		# item gl entries
 		stock_items = self.get_stock_items()
 		if self.update_stock and self.auto_accounting_for_stock:
@@ -842,7 +845,7 @@
 							if expense_booked_in_pr:
 								# Intentionally passing purchase invoice item to handle partial billing
 								purchase_receipt_doc.add_provisional_gl_entry(
-									item, gl_entries, self.posting_date, provisional_account, reverse=not cancel
+									item, gl_entries, self.posting_date, provisional_account, reverse=1
 								)
 
 					if not self.is_internal_transfer():