From ed004018d6d41639e783245a537cf28c83f20b32 Mon Sep 17 00:00:00 2001 From: marination Date: Mon, 23 Sep 2019 14:00:09 +0530 Subject: [PATCH 1/4] fix: Outstanding Amount field of Discounted Invoices Table in Invoice Discounting It wrongly fetched grand total from sales invoice instead of outstanding amount. --- .../doctype/discounted_invoice/discounted_invoice.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json b/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json index 04d6303774..ee7f750481 100644 --- a/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json +++ b/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json @@ -38,7 +38,7 @@ "read_only": 1 }, { - "fetch_from": "sales_invoice.grand_total", + "fetch_from": "sales_invoice.outstanding_amount", "fieldname": "outstanding_amount", "fieldtype": "Currency", "in_list_view": 1, @@ -60,7 +60,7 @@ } ], "istable": 1, - "modified": "2019-08-07 15:13:55.808349", + "modified": "2019-09-23 13:59:16.450344", "modified_by": "Administrator", "module": "Accounts", "name": "Discounted Invoice", From e7f67592a8c7555c982c039e70956e6765ae5346 Mon Sep 17 00:00:00 2001 From: marination Date: Mon, 23 Sep 2019 17:18:55 +0530 Subject: [PATCH 2/4] fix: Made outstanding amount field read only and added validation Made the field editable so that outstanding amount can be adjusted --- .../discounted_invoice/discounted_invoice.json | 6 ++---- .../invoice_discounting/invoice_discounting.js | 11 ++++++++--- .../invoice_discounting/invoice_discounting.py | 12 +++++++++--- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json b/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json index ee7f750481..9a276cad49 100644 --- a/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json +++ b/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json @@ -38,13 +38,11 @@ "read_only": 1 }, { - "fetch_from": "sales_invoice.outstanding_amount", "fieldname": "outstanding_amount", "fieldtype": "Currency", "in_list_view": 1, "label": "Outstanding Amount", - "options": "Company:company:default_currency", - "read_only": 1 + "options": "Company:company:default_currency" }, { "fieldname": "column_break_3", @@ -60,7 +58,7 @@ } ], "istable": 1, - "modified": "2019-09-23 13:59:16.450344", + "modified": "2019-09-23 15:29:54.199318", "modified_by": "Administrator", "module": "Accounts", "name": "Discounted Invoice", diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js index f1f88a8d64..c061fb70bf 100644 --- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js +++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js @@ -97,7 +97,6 @@ frappe.ui.form.on('Invoice Discounting', { } frm.set_value("total_amount", total_amount); }, - get_invoices: (frm) => { var d = new frappe.ui.Dialog({ title: __('Get Invoices based on Filters'), @@ -205,9 +204,15 @@ frappe.ui.form.on('Invoice Discounting', { }); frappe.ui.form.on('Discounted Invoice', { - sales_invoice: (frm) => { + sales_invoice: (frm, cdt, cdn) => { frm.events.calculate_total_amount(frm); - frm.events.refresh_filters(frm); + frm.events.refresh_filters(frm); + + let row = locals[cdt][cdn]; + frappe.db.get_value("Sales Invoice",row["sales_invoice"], "outstanding_amount", (res) => { + row.outstanding_amount = res["outstanding_amount"]; + frm.refresh_field("invoices"); + }); }, invoices_remove: (frm) => { frm.events.calculate_total_amount(frm); diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py index 36c29113ea..39fc203d53 100644 --- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py +++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py @@ -26,14 +26,20 @@ class InvoiceDiscounting(AccountsController): frappe.throw(_("Loan Start Date and Loan Period are mandatory to save the Invoice Discounting")) def validate_invoices(self): - discounted_invoices = [record.sales_invoice for record in - frappe.get_all("Discounted Invoice",fields = ["sales_invoice"], filters= {"docstatus":1})] + discounted_invoices = [record.sales_invoice for record in + frappe.get_all("Discounted Invoice",fields=["sales_invoice"], filters={"docstatus":1})] for record in self.invoices: if record.sales_invoice in discounted_invoices: - frappe.throw("Row({0}): {1} is already discounted in {2}" + frappe.throw(_("Row({0}): {1} is already discounted in {2}") .format(record.idx, frappe.bold(record.sales_invoice), frappe.bold(record.parent))) + actual_outstanding = frappe.db.get_value("Sales Invoice", record.sales_invoice,"outstanding_amount") + if record.outstanding_amount > actual_outstanding : + frappe.throw(_ + ("Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2}").format( + record.idx, frappe.bold(actual_outstanding), frappe.bold(record.sales_invoice))) + def calculate_total_amount(self): self.total_amount = sum([flt(d.outstanding_amount) for d in self.invoices]) From a877115ff4851b94e87beaa337a45626bfe9209a Mon Sep 17 00:00:00 2001 From: marination Date: Thu, 26 Sep 2019 11:08:39 +0530 Subject: [PATCH 3/4] fix: Minor changes Added value in fetch from and removed client side code --- .../doctype/discounted_invoice/discounted_invoice.json | 4 +++- .../doctype/invoice_discounting/invoice_discounting.js | 8 +------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json b/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json index 9a276cad49..5c3519a159 100644 --- a/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json +++ b/erpnext/accounts/doctype/discounted_invoice/discounted_invoice.json @@ -38,6 +38,8 @@ "read_only": 1 }, { + "fetch_from": "sales_invoice.outstanding_amount", + "fetch_if_empty": 1, "fieldname": "outstanding_amount", "fieldtype": "Currency", "in_list_view": 1, @@ -58,7 +60,7 @@ } ], "istable": 1, - "modified": "2019-09-23 15:29:54.199318", + "modified": "2019-09-26 11:05:36.016772", "modified_by": "Administrator", "module": "Accounts", "name": "Discounted Invoice", diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js index c061fb70bf..f928f1179d 100644 --- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js +++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js @@ -204,15 +204,9 @@ frappe.ui.form.on('Invoice Discounting', { }); frappe.ui.form.on('Discounted Invoice', { - sales_invoice: (frm, cdt, cdn) => { + sales_invoice: (frm) => { frm.events.calculate_total_amount(frm); frm.events.refresh_filters(frm); - - let row = locals[cdt][cdn]; - frappe.db.get_value("Sales Invoice",row["sales_invoice"], "outstanding_amount", (res) => { - row.outstanding_amount = res["outstanding_amount"]; - frm.refresh_field("invoices"); - }); }, invoices_remove: (frm) => { frm.events.calculate_total_amount(frm); From 54becbb33a54df7b53ddd05e44a35ba5ed2151f0 Mon Sep 17 00:00:00 2001 From: Marica Date: Thu, 26 Sep 2019 11:24:34 +0530 Subject: [PATCH 4/4] fix: Codacy fix(whitespaces) --- .../accounts/doctype/invoice_discounting/invoice_discounting.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js index f928f1179d..0fab8b70f4 100644 --- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js +++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js @@ -206,7 +206,7 @@ frappe.ui.form.on('Invoice Discounting', { frappe.ui.form.on('Discounted Invoice', { sales_invoice: (frm) => { frm.events.calculate_total_amount(frm); - frm.events.refresh_filters(frm); + frm.events.refresh_filters(frm); }, invoices_remove: (frm) => { frm.events.calculate_total_amount(frm);