From 353db2f6121602f56ba68921eb028a3f6644e431 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Thu, 23 Sep 2021 20:13:52 +0200 Subject: [PATCH] refactor: rename interest_amount to interest, dunning_level --- erpnext/accounts/doctype/dunning/dunning.js | 20 ++++----- erpnext/accounts/doctype/dunning/dunning.py | 5 ++- .../overdue_payment/overdue_payment.json | 44 +++++++++---------- 3 files changed, 33 insertions(+), 36 deletions(-) diff --git a/erpnext/accounts/doctype/dunning/dunning.js b/erpnext/accounts/doctype/dunning/dunning.js index 45fcc4356d3..98462b89db7 100644 --- a/erpnext/accounts/doctype/dunning/dunning.js +++ b/erpnext/accounts/doctype/dunning/dunning.js @@ -200,7 +200,7 @@ frappe.ui.form.on("Dunning", { if (frm.doc.dunning_type) { frappe.call({ method: - "erpnext.accounts.doctype.dunning.dunning.get_dunning_letter_text", + "erpnext.accounts.doctype.dunning.dunning.get_dunning_letter_text", args: { dunning_type: frm.doc.dunning_type, language: frm.doc.language, @@ -223,12 +223,12 @@ frappe.ui.form.on("Dunning", { frm.trigger("calculate_overdue_days"); }, rate_of_interest: function (frm) { - frm.trigger("calculate_interest_amount"); + frm.trigger("calculate_interest"); }, dunning_fee: function (frm) { frm.trigger("calculate_totals"); }, - overdue_payments_add: function(frm) { + overdue_payments_add: function (frm) { frm.trigger("calculate_totals"); }, overdue_payments_remove: function (frm) { @@ -245,16 +245,16 @@ frappe.ui.form.on("Dunning", { } }); }, - calculate_interest_amount: function (frm) { + calculate_interest: function (frm) { frm.doc.overdue_payments.forEach((row) => { - const interest_per_year = row.outstanding * frm.doc.rate_of_interest / 100; - const interest_amount = flt((interest_per_year * cint(row.overdue_days)) / 365 || 0, precision("interest_amount")); - frappe.model.set_value(row.doctype, row.name, "interest_amount", interest_amount); + const interest_per_day = frm.doc.rate_of_interest / 100 / 365; + const interest = flt((interest_per_day * row.outstanding * cint(row.overdue_days)) / 365 || 0, precision("interest")); + frappe.model.set_value(row.doctype, row.name, "interest", interest); }); }, calculate_totals: function (frm) { const total_interest = frm.doc.overdue_payments - .reduce((prev, cur) => prev + cur.interest_amount, 0); + .reduce((prev, cur) => prev + cur.interest, 0); const total_outstanding = frm.doc.overdue_payments .reduce((prev, cur) => prev + cur.outstanding, 0); const dunning_amount = flt(total_interest + frm.doc.dunning_fee, precision("dunning_amount")); @@ -268,7 +268,7 @@ frappe.ui.form.on("Dunning", { make_payment_entry: function (frm) { return frappe.call({ method: - "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry", + "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry", args: { dt: frm.doc.doctype, dn: frm.doc.name, @@ -282,7 +282,7 @@ frappe.ui.form.on("Dunning", { }); frappe.ui.form.on("Overdue Payment", { - interest_amount: function(frm, cdt, cdn) { + interest: function (frm, cdt, cdn) { frm.trigger("calculate_totals"); } }); \ No newline at end of file diff --git a/erpnext/accounts/doctype/dunning/dunning.py b/erpnext/accounts/doctype/dunning/dunning.py index ac86aa98dda..591379f0ca4 100644 --- a/erpnext/accounts/doctype/dunning/dunning.py +++ b/erpnext/accounts/doctype/dunning/dunning.py @@ -27,10 +27,11 @@ class Dunning(AccountsController): self.income_account = frappe.db.get_value("Company", self.company, "default_income_account") def validate_overdue_payments(self): + daily_interest = self.rate_of_interest / 100 / 365 + for row in self.overdue_payments: row.overdue_days = (getdate(self.posting_date) - getdate(row.due_date)).days or 0 - interest_per_year = flt(row.outstanding) * flt(self.rate_of_interest) / 100 - row.interest_amount = (interest_per_year * cint(row.overdue_days)) / 365 + row.interest = row.outstanding * daily_interest * row.overdue_days def validate_totals(self): self.total_outstanding = sum(row.outstanding for row in self.overdue_payments) diff --git a/erpnext/accounts/doctype/overdue_payment/overdue_payment.json b/erpnext/accounts/doctype/overdue_payment/overdue_payment.json index bc351d835a2..99e16469d04 100644 --- a/erpnext/accounts/doctype/overdue_payment/overdue_payment.json +++ b/erpnext/accounts/doctype/overdue_payment/overdue_payment.json @@ -7,6 +7,7 @@ "field_order": [ "sales_invoice", "payment_schedule", + "dunning_level", "payment_term", "section_break_15", "description", @@ -16,21 +17,18 @@ "mode_of_payment", "column_break_5", "invoice_portion", - "section_break_9", + "section_break_16", "payment_amount", "outstanding", "paid_amount", "discounted_amount", - "column_break_3", - "base_payment_amount", - "interest_amount" + "interest" ], "fields": [ { "columns": 2, "fieldname": "payment_term", "fieldtype": "Link", - "in_list_view": 1, "label": "Payment Term", "options": "Payment Term", "print_hide": 1, @@ -79,10 +77,6 @@ "label": "Invoice Portion", "read_only": 1 }, - { - "fieldname": "section_break_9", - "fieldtype": "Section Break" - }, { "columns": 2, "fieldname": "payment_amount", @@ -116,24 +110,13 @@ "print_hide": 1, "read_only": 1 }, - { - "fieldname": "column_break_3", - "fieldtype": "Column Break" - }, - { - "fieldname": "base_payment_amount", - "fieldtype": "Currency", - "label": "Payment Amount (Company Currency)", - "options": "Company:company:default_currency", - "print_hide": 1, - "read_only": 1 - }, { "fieldname": "sales_invoice", "fieldtype": "Link", "in_list_view": 1, "label": "Sales Invoice", "options": "Sales Invoice", + "read_only": 1, "reqd": 1 }, { @@ -151,17 +134,30 @@ "read_only": 1 }, { - "fieldname": "interest_amount", + "default": "1", + "fieldname": "dunning_level", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Dunning Level", + "read_only": 1 + }, + { + "fieldname": "section_break_16", + "fieldtype": "Section Break" + }, + { + "fieldname": "interest", "fieldtype": "Currency", "in_list_view": 1, - "label": "Interest Amount", + "label": "Interest", + "options": "currency", "read_only": 1 } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2021-09-17 12:10:42.278923", + "modified": "2021-09-23 13:48:27.898830", "modified_by": "Administrator", "module": "Accounts", "name": "Overdue Payment",