Try ERPNext Buy Support Partners Foundation

Why set exchange gain and loss button activated when only paid from and paid to currency different

frm.toggle_display("set_exchange_gain_loss",
			(frm.doc.paid_amount && frm.doc.received_amount && frm.doc.difference_amount &&
				((frm.doc.paid_from_account_currency != company_currency ||
					frm.doc.paid_to_account_currency != company_currency) &&
					frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency)));

I feel this is a lack of understanding of business logic.

In reality whenever any currency is different from Company Currency there can be a exchange gain/loss and button should appear.

With payments of non-company currency Z invoices to/from non-company currency Z accounts we have to manually enter the difference amount to the exchange gain/loss account to accomplish same purpose.

Much easier if button appeared.