Validate total advance against grand total considering write off amount
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index bec57f4..40748df 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -404,11 +404,14 @@
self.doc.total_advance = flt(total_allocated_amount, self.doc.precision("total_advance"))
if self.doc.party_account_currency == self.doc.currency:
- invoice_total = self.doc.grand_total
- else:
- invoice_total = flt(self.doc.grand_total * self.doc.conversion_rate,
+ invoice_total = flt(self.doc.grand_total - self.write_off_amount,
self.doc.precision("grand_total"))
-
+ else:
+ base_write_off_amount = flt(self.doc.write_off_amount * self.doc.conversion_rate,
+ self.doc.precision("base_write_off_amount"))
+ invoice_total = flt(self.doc.grand_total * self.doc.conversion_rate,
+ self.doc.precision("grand_total")) - base_write_off_amount
+
if invoice_total > 0 and self.doc.total_advance > invoice_total:
frappe.throw(_("Advance amount cannot be greater than {0} {1}")
.format(self.doc.party_account_currency, invoice_total))