fix: credit note receive payment entry
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 49ca76e..23b5894 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -33,6 +33,7 @@
 	get_account_currency,
 	get_balance_on,
 	get_outstanding_invoices,
+	get_party_types_from_account_type,
 )
 from erpnext.controllers.accounts_controller import (
 	AccountsController,
@@ -1071,10 +1072,24 @@
 					against_voucher_type = d.reference_doctype
 					against_voucher = d.reference_name
 
+				reverse_dr_or_cr = 0
+				if d.reference_doctype in ["Sales Invoice", "Purchase Invoice"]:
+					is_return = frappe.db.get_value(d.reference_doctype, d.reference_name, "is_return")
+					payable_party_types = get_party_types_from_account_type("Payable")
+					receivable_party_types = get_party_types_from_account_type("Receivable")
+					if is_return and self.party_type in receivable_party_types and self.payment_type == "Pay":
+						reverse_dr_or_cr = 1
+					elif is_return and self.party_type in payable_party_types and self.payment_type == "Receive":
+						reverse_dr_or_cr = 1
+
 				gle.update(
 					{
-						dr_or_cr: abs(allocated_amount_in_company_currency),
-						dr_or_cr + "_in_account_currency": abs(d.allocated_amount),
+						dr_or_cr: abs(allocated_amount_in_company_currency)
+						if reverse_dr_or_cr
+						else allocated_amount_in_company_currency,
+						dr_or_cr + "_in_account_currency": abs(d.allocated_amount)
+						if reverse_dr_or_cr
+						else d.allocated_amount,
 						"against_voucher_type": against_voucher_type,
 						"against_voucher": against_voucher,
 						"cost_center": cost_center,
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 1c7052f..0a116a7 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -2041,3 +2041,7 @@
 	journal_entry.save()
 	journal_entry.submit()
 	return journal_entry.name
+
+
+def get_party_types_from_account_type(account_type):
+	return frappe.db.get_list("Party Type", {"account_type": account_type}, pluck="name")