Merge pull request #36888 from ruthra-kumar/gain_loss_refactor_issue_01_patch_failed
fix: calcuate received/paid amount on exchange rate change in Payment Entry
This commit is contained in:
commit
0d26f67be5
@ -535,12 +535,16 @@ frappe.ui.form.on('Payment Entry', {
|
|||||||
},
|
},
|
||||||
|
|
||||||
source_exchange_rate: function(frm) {
|
source_exchange_rate: function(frm) {
|
||||||
|
let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency;
|
||||||
if (frm.doc.paid_amount) {
|
if (frm.doc.paid_amount) {
|
||||||
frm.set_value("base_paid_amount", flt(frm.doc.paid_amount) * flt(frm.doc.source_exchange_rate));
|
frm.set_value("base_paid_amount", flt(frm.doc.paid_amount) * flt(frm.doc.source_exchange_rate));
|
||||||
// target exchange rate should always be same as source if both account currencies is same
|
// target exchange rate should always be same as source if both account currencies is same
|
||||||
if(frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) {
|
if(frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) {
|
||||||
frm.set_value("target_exchange_rate", frm.doc.source_exchange_rate);
|
frm.set_value("target_exchange_rate", frm.doc.source_exchange_rate);
|
||||||
frm.set_value("base_received_amount", frm.doc.base_paid_amount);
|
frm.set_value("base_received_amount", frm.doc.base_paid_amount);
|
||||||
|
} else if (company_currency == frm.doc.paid_to_account_currency) {
|
||||||
|
frm.set_value("received_amount", frm.doc.base_paid_amount);
|
||||||
|
frm.set_value("base_received_amount", frm.doc.base_paid_amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
frm.events.set_unallocated_amount(frm);
|
frm.events.set_unallocated_amount(frm);
|
||||||
@ -552,6 +556,7 @@ frappe.ui.form.on('Payment Entry', {
|
|||||||
|
|
||||||
target_exchange_rate: function(frm) {
|
target_exchange_rate: function(frm) {
|
||||||
frm.set_paid_amount_based_on_received_amount = true;
|
frm.set_paid_amount_based_on_received_amount = true;
|
||||||
|
let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency;
|
||||||
|
|
||||||
if (frm.doc.received_amount) {
|
if (frm.doc.received_amount) {
|
||||||
frm.set_value("base_received_amount",
|
frm.set_value("base_received_amount",
|
||||||
@ -561,6 +566,9 @@ frappe.ui.form.on('Payment Entry', {
|
|||||||
(frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency)) {
|
(frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency)) {
|
||||||
frm.set_value("source_exchange_rate", frm.doc.target_exchange_rate);
|
frm.set_value("source_exchange_rate", frm.doc.target_exchange_rate);
|
||||||
frm.set_value("base_paid_amount", frm.doc.base_received_amount);
|
frm.set_value("base_paid_amount", frm.doc.base_received_amount);
|
||||||
|
} else if (company_currency == frm.doc.paid_from_account_currency) {
|
||||||
|
frm.set_value("paid_amount", frm.doc.base_received_amount);
|
||||||
|
frm.set_value("base_paid_amount", frm.doc.base_received_amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
frm.events.set_unallocated_amount(frm);
|
frm.events.set_unallocated_amount(frm);
|
||||||
|
@ -2300,7 +2300,7 @@ def set_paid_amount_and_received_amount(
|
|||||||
if bank_amount:
|
if bank_amount:
|
||||||
received_amount = bank_amount
|
received_amount = bank_amount
|
||||||
else:
|
else:
|
||||||
if company_currency != bank.account_currency:
|
if bank and company_currency != bank.account_currency:
|
||||||
received_amount = paid_amount / doc.get("conversion_rate", 1)
|
received_amount = paid_amount / doc.get("conversion_rate", 1)
|
||||||
else:
|
else:
|
||||||
received_amount = paid_amount * doc.get("conversion_rate", 1)
|
received_amount = paid_amount * doc.get("conversion_rate", 1)
|
||||||
@ -2309,7 +2309,7 @@ def set_paid_amount_and_received_amount(
|
|||||||
if bank_amount:
|
if bank_amount:
|
||||||
paid_amount = bank_amount
|
paid_amount = bank_amount
|
||||||
else:
|
else:
|
||||||
if company_currency != bank.account_currency:
|
if bank and company_currency != bank.account_currency:
|
||||||
paid_amount = received_amount / doc.get("conversion_rate", 1)
|
paid_amount = received_amount / doc.get("conversion_rate", 1)
|
||||||
else:
|
else:
|
||||||
# if party account currency and bank currency is different then populate paid amount as well
|
# if party account currency and bank currency is different then populate paid amount as well
|
||||||
|
Loading…
x
Reference in New Issue
Block a user