From d7de07bfd4b65ee7db3640b18e36e74175fa4b4c Mon Sep 17 00:00:00 2001 From: ervishnucs Date: Wed, 4 Mar 2026 12:40:52 +0530 Subject: [PATCH 1/2] fix: prevent exchange rate flow from transaction to payment (cherry picked from commit 934abe5c6d33af63d9c8922e34ff5a1d48775d28) --- erpnext/accounts/doctype/payment_entry/payment_entry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 1671d3980a4..cb84204e053 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -3034,7 +3034,7 @@ def get_payment_entry( pe, doc, discount_amount, base_total_discount_loss, party_account_currency ) - pe.set_exchange_rate(ref_doc=doc) + pe.set_exchange_rate() pe.set_amounts() # If PE is created from PR directly, then no need to find open PRs for the references From 7900239c96ad2d3e40d1492d8481873a2e1cc8c0 Mon Sep 17 00:00:00 2001 From: ervishnucs Date: Sun, 5 Apr 2026 22:21:41 +0530 Subject: [PATCH 2/2] test: resolve failed testcases for exchage rate (cherry picked from commit 3b5a203d61aa980be35f0ba915f07f49afce7a9c) --- .../doctype/payment_entry/test_payment_entry.py | 4 ++++ .../payment_request/test_payment_request.py | 14 ++++++++++++-- erpnext/accounts/test/test_utils.py | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py index 759a6f0cfa2..7cf06944b53 100644 --- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py @@ -532,6 +532,8 @@ class TestPaymentEntry(ERPNextTestSuite): si.submit() pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC", bank_amount=4700) + pe.source_exchange_rate = 50 + pe.set_amounts() pe.reference_no = si.name pe.reference_date = nowdate() @@ -607,6 +609,8 @@ class TestPaymentEntry(ERPNextTestSuite): pe = get_payment_entry( "Sales Invoice", si.name, party_amount=20, bank_account="_Test Bank - _TC", bank_amount=900 ) + pe.source_exchange_rate = 50 + pe.set_amounts() pe.reference_no = "1" pe.reference_date = "2016-01-01" diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py index 453a52518a7..c2eef5412e5 100644 --- a/erpnext/accounts/doctype/payment_request/test_payment_request.py +++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py @@ -332,7 +332,12 @@ class TestPaymentRequest(ERPNextTestSuite): return_doc=1, ) - pe = pr.set_as_paid() + pe = pr.create_payment_entry(submit=False) + pe.source_exchange_rate = 50 + pe.target_exchange_rate = 50 + pe.set_amounts() + pe.insert(ignore_permissions=True) + pe.submit() expected_gle = dict( (d[0], d) @@ -418,7 +423,12 @@ class TestPaymentRequest(ERPNextTestSuite): pr = make_payment_request(dt=po_doc.doctype, dn=po_doc.name, recipient_id="nabin@erpnext.com") pr = frappe.get_doc(pr).save().submit() - pe = pr.create_payment_entry() + pe = pr.create_payment_entry(submit=False) + pe.target_exchange_rate = 80 + pe.paid_amount = 800 + pe.set_amounts() + pe.insert(ignore_permissions=True) + pe.submit() self.assertEqual(pe.base_paid_amount, 800) self.assertEqual(pe.paid_amount, 800) self.assertEqual(pe.base_received_amount, 800) diff --git a/erpnext/accounts/test/test_utils.py b/erpnext/accounts/test/test_utils.py index eddd30b68b6..9e2725d9b83 100644 --- a/erpnext/accounts/test/test_utils.py +++ b/erpnext/accounts/test/test_utils.py @@ -81,6 +81,8 @@ class TestUtils(ERPNextTestSuite): purchase_invoice.submit() payment_entry = get_payment_entry(purchase_invoice.doctype, purchase_invoice.name) + payment_entry.target_exchange_rate = 82.32 + payment_entry.set_amounts() payment_entry.paid_amount = 15725 payment_entry.deductions = [] payment_entry.save()