diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js index 9e3fa71e97..776bacfcce 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.js +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js @@ -676,30 +676,17 @@ frappe.ui.form.on('Payment Entry', { function(d) { return flt(d.amount) })); if(frm.doc.party) { - var party_amount = frm.doc.payment_type=="Receive" ? - frm.doc.paid_amount : frm.doc.received_amount; - var company_currency = frm.doc.company? frappe.get_doc(":Company", frm.doc.company).default_currency: ""; - - if (frm.doc.party_account_currency == company_currency) { - if(frm.doc.payment_type == "Receive" && frm.doc.total_allocated_amount <= party_amount + total_deductions) { - unallocated_amount = party_amount - (frm.doc.total_allocated_amount - total_deductions); - } else if (frm.doc.payment_type == "Pay" && frm.doc.total_allocated_amount <= party_amount - total_deductions) { - unallocated_amount = party_amount - (frm.doc.total_allocated_amount + total_deductions); - } - } else { - if(frm.doc.payment_type == "Receive" - && frm.doc.base_total_allocated_amount <= frm.doc.base_received_amount + total_deductions - && frm.doc.total_allocated_amount < frm.doc.paid_amount) { - unallocated_amount = (frm.doc.base_received_amount + total_deductions - - frm.doc.base_total_allocated_amount) / frm.doc.source_exchange_rate; - } else if (frm.doc.payment_type == "Pay" - && frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount - total_deductions - && frm.doc.total_allocated_amount < frm.doc.received_amount) { - unallocated_amount = (frm.doc.base_paid_amount - (total_deductions - + frm.doc.base_total_allocated_amount)) / frm.doc.target_exchange_rate; - } + if(frm.doc.payment_type == "Receive" + && frm.doc.base_total_allocated_amount < frm.doc.base_received_amount + total_deductions + && frm.doc.total_allocated_amount < frm.doc.paid_amount + (total_deductions / frm.doc.source_exchange_rate)) { + unallocated_amount = (frm.doc.base_received_amount + total_deductions + - frm.doc.base_total_allocated_amount) / frm.doc.source_exchange_rate; + } else if (frm.doc.payment_type == "Pay" + && frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount - total_deductions + && frm.doc.total_allocated_amount < frm.doc.received_amount + (total_deductions / frm.doc.target_exchange_rate)) { + unallocated_amount = (frm.doc.base_paid_amount - (total_deductions + + frm.doc.base_total_allocated_amount)) / frm.doc.target_exchange_rate; } - } frm.set_value("unallocated_amount", unallocated_amount); frm.trigger("set_difference_amount"); diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 7dfa5c8561..eafdac3c31 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -292,30 +292,18 @@ class PaymentEntry(AccountsController): def set_unallocated_amount(self): self.unallocated_amount = 0 - if self.party: total_deductions = sum([flt(d.amount) for d in self.get("deductions")]) - - if self.party_account_currency == self.company_currency: - if self.payment_type == "Receive" \ - and self.total_allocated_amount <= self.paid_amount + total_deductions: - self.unallocated_amount = self.paid_amount - \ - (self.total_allocated_amount - total_deductions) - elif self.payment_type == "Pay" \ - and self.total_allocated_amount <= self.received_amount - total_deductions: - self.unallocated_amount = self.received_amount - \ - (self.total_allocated_amount + total_deductions) - else: - if self.payment_type == "Receive" \ - and self.base_total_allocated_amount <= self.base_received_amount + total_deductions \ - and self.total_allocated_amount < self.paid_amount: - self.unallocated_amount = (self.base_received_amount + total_deductions - - self.base_total_allocated_amount) / self.source_exchange_rate - elif self.payment_type == "Pay" \ - and self.base_total_allocated_amount < (self.base_paid_amount - total_deductions) \ - and self.total_allocated_amount < self.received_amount: - self.unallocated_amount = (self.base_paid_amount - (total_deductions + - self.base_total_allocated_amount)) / self.target_exchange_rate + if self.payment_type == "Receive" \ + and self.base_total_allocated_amount < self.base_received_amount + total_deductions \ + and self.total_allocated_amount < self.paid_amount + (total_deductions / self.source_exchange_rate): + self.unallocated_amount = (self.base_received_amount + total_deductions - + self.base_total_allocated_amount) / self.source_exchange_rate + elif self.payment_type == "Pay" \ + and self.base_total_allocated_amount < (self.base_paid_amount - total_deductions) \ + and self.total_allocated_amount < self.received_amount + (total_deductions / self.target_exchange_rate): + self.unallocated_amount = (self.base_paid_amount - (total_deductions + + self.base_total_allocated_amount)) / self.target_exchange_rate def set_difference_amount(self): base_unallocated_amount = flt(self.unallocated_amount) * (flt(self.source_exchange_rate)