refactor: rename interest_amount to interest, dunning_level
diff --git a/erpnext/accounts/doctype/dunning/dunning.js b/erpnext/accounts/doctype/dunning/dunning.js
index 45fcc43..98462b8 100644
--- a/erpnext/accounts/doctype/dunning/dunning.js
+++ b/erpnext/accounts/doctype/dunning/dunning.js
@@ -200,7 +200,7 @@
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 @@
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 @@
}
});
},
- 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 @@
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("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 e4b502a..f1283ae 100644
--- a/erpnext/accounts/doctype/dunning/dunning.py
+++ b/erpnext/accounts/doctype/dunning/dunning.py
@@ -24,10 +24,11 @@
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 bc351d8..99e1646 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,
@@ -80,10 +78,6 @@
"read_only": 1
},
{
- "fieldname": "section_break_9",
- "fieldtype": "Section Break"
- },
- {
"columns": 2,
"fieldname": "payment_amount",
"fieldtype": "Currency",
@@ -117,23 +111,12 @@
"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",