refactor: gain/loss should use same posting date as payment
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index 4ef35fd..96ae0c3 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -647,6 +647,7 @@
 
 			create_gain_loss_journal(
 				company,
+				today(),
 				inv.party_type,
 				inv.party,
 				inv.account,
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 06d05cb..eed74a5 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -1888,6 +1888,7 @@
 
 def create_gain_loss_journal(
 	company,
+	posting_date,
 	party_type,
 	party,
 	party_account,
@@ -1906,7 +1907,7 @@
 	journal_entry = frappe.new_doc("Journal Entry")
 	journal_entry.voucher_type = "Exchange Gain Or Loss"
 	journal_entry.company = company
-	journal_entry.posting_date = nowdate()
+	journal_entry.posting_date = posting_date or nowdate()
 	journal_entry.multi_currency = 1
 	journal_entry.is_system_generated = True
 
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index fd2be2c..9725c25 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -1096,8 +1096,10 @@
 								self.name,
 								arg.get("referenced_row"),
 							):
+								posting_date = frappe.db.get_value(arg.voucher_type, arg.voucher_no, "posting_date")
 								je = create_gain_loss_journal(
 									self.company,
+									posting_date,
 									arg.get("party_type"),
 									arg.get("party"),
 									party_account,
@@ -1177,6 +1179,7 @@
 
 						je = create_gain_loss_journal(
 							self.company,
+							self.posting_date,
 							self.party_type,
 							self.party,
 							party_account,