Merge pull request #36899 from ruthra-kumar/use_own_exchange_rate_on_references
fix: difference amount calculation logic in Payment Entry UI
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index 4e1c23d..9a0adf5 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -547,7 +547,9 @@
frm.set_value("base_received_amount", frm.doc.base_paid_amount);
}
- frm.events.set_unallocated_amount(frm);
+ // set_unallocated_amount is called by below method,
+ // no need trigger separately
+ frm.events.set_total_allocated_amount(frm);
}
// Make read only if Accounts Settings doesn't allow stale rates
@@ -571,7 +573,9 @@
frm.set_value("base_paid_amount", frm.doc.base_received_amount);
}
- frm.events.set_unallocated_amount(frm);
+ // set_unallocated_amount is called by below method,
+ // no need trigger separately
+ frm.events.set_total_allocated_amount(frm);
}
frm.set_paid_amount_based_on_received_amount = false;
@@ -887,12 +891,18 @@
},
set_total_allocated_amount: function(frm) {
+ let exchange_rate = 1;
+ if (frm.doc.payment_type == "Receive") {
+ exchange_rate = frm.doc.source_exchange_rate;
+ } else if (frm.doc.payment_type == "Pay") {
+ exchange_rate = frm.doc.target_exchange_rate;
+ }
var total_allocated_amount = 0.0;
var base_total_allocated_amount = 0.0;
$.each(frm.doc.references || [], function(i, row) {
if (row.allocated_amount) {
total_allocated_amount += flt(row.allocated_amount);
- base_total_allocated_amount += flt(flt(row.allocated_amount)*flt(row.exchange_rate),
+ base_total_allocated_amount += flt(flt(row.allocated_amount)*flt(exchange_rate),
precision("base_paid_amount"));
}
});