refactor: rename interest_amount to interest, dunning_level

This commit is contained in:
barredterra
2021-09-23 20:13:52 +02:00
committed by marination
parent be5fb94837
commit bc40f3f425
3 changed files with 33 additions and 36 deletions

View File

@@ -200,7 +200,7 @@ frappe.ui.form.on("Dunning", {
if (frm.doc.dunning_type) { if (frm.doc.dunning_type) {
frappe.call({ frappe.call({
method: method:
"erpnext.accounts.doctype.dunning.dunning.get_dunning_letter_text", "erpnext.accounts.doctype.dunning.dunning.get_dunning_letter_text",
args: { args: {
dunning_type: frm.doc.dunning_type, dunning_type: frm.doc.dunning_type,
language: frm.doc.language, language: frm.doc.language,
@@ -223,12 +223,12 @@ frappe.ui.form.on("Dunning", {
frm.trigger("calculate_overdue_days"); frm.trigger("calculate_overdue_days");
}, },
rate_of_interest: function (frm) { rate_of_interest: function (frm) {
frm.trigger("calculate_interest_amount"); frm.trigger("calculate_interest");
}, },
dunning_fee: function (frm) { dunning_fee: function (frm) {
frm.trigger("calculate_totals"); frm.trigger("calculate_totals");
}, },
overdue_payments_add: function(frm) { overdue_payments_add: function (frm) {
frm.trigger("calculate_totals"); frm.trigger("calculate_totals");
}, },
overdue_payments_remove: function (frm) { 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) => { frm.doc.overdue_payments.forEach((row) => {
const interest_per_year = row.outstanding * frm.doc.rate_of_interest / 100; const interest_per_day = frm.doc.rate_of_interest / 100 / 365;
const interest_amount = flt((interest_per_year * cint(row.overdue_days)) / 365 || 0, precision("interest_amount")); 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_amount", interest_amount); frappe.model.set_value(row.doctype, row.name, "interest", interest);
}); });
}, },
calculate_totals: function (frm) { calculate_totals: function (frm) {
const total_interest = frm.doc.overdue_payments 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 const total_outstanding = frm.doc.overdue_payments
.reduce((prev, cur) => prev + cur.outstanding, 0); .reduce((prev, cur) => prev + cur.outstanding, 0);
const dunning_amount = flt(total_interest + frm.doc.dunning_fee, precision("dunning_amount")); 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) { make_payment_entry: function (frm) {
return frappe.call({ return frappe.call({
method: method:
"erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry", "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry",
args: { args: {
dt: frm.doc.doctype, dt: frm.doc.doctype,
dn: frm.doc.name, dn: frm.doc.name,
@@ -282,7 +282,7 @@ frappe.ui.form.on("Dunning", {
}); });
frappe.ui.form.on("Overdue Payment", { frappe.ui.form.on("Overdue Payment", {
interest_amount: function(frm, cdt, cdn) { interest: function (frm, cdt, cdn) {
frm.trigger("calculate_totals"); frm.trigger("calculate_totals");
} }
}); });

View File

@@ -24,10 +24,11 @@ class Dunning(AccountsController):
self.income_account = frappe.db.get_value("Company", self.company, "default_income_account") self.income_account = frappe.db.get_value("Company", self.company, "default_income_account")
def validate_overdue_payments(self): def validate_overdue_payments(self):
daily_interest = self.rate_of_interest / 100 / 365
for row in self.overdue_payments: for row in self.overdue_payments:
row.overdue_days = (getdate(self.posting_date) - getdate(row.due_date)).days or 0 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 = row.outstanding * daily_interest * row.overdue_days
row.interest_amount = (interest_per_year * cint(row.overdue_days)) / 365
def validate_totals(self): def validate_totals(self):
self.total_outstanding = sum(row.outstanding for row in self.overdue_payments) self.total_outstanding = sum(row.outstanding for row in self.overdue_payments)

View File

@@ -7,6 +7,7 @@
"field_order": [ "field_order": [
"sales_invoice", "sales_invoice",
"payment_schedule", "payment_schedule",
"dunning_level",
"payment_term", "payment_term",
"section_break_15", "section_break_15",
"description", "description",
@@ -16,21 +17,18 @@
"mode_of_payment", "mode_of_payment",
"column_break_5", "column_break_5",
"invoice_portion", "invoice_portion",
"section_break_9", "section_break_16",
"payment_amount", "payment_amount",
"outstanding", "outstanding",
"paid_amount", "paid_amount",
"discounted_amount", "discounted_amount",
"column_break_3", "interest"
"base_payment_amount",
"interest_amount"
], ],
"fields": [ "fields": [
{ {
"columns": 2, "columns": 2,
"fieldname": "payment_term", "fieldname": "payment_term",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1,
"label": "Payment Term", "label": "Payment Term",
"options": "Payment Term", "options": "Payment Term",
"print_hide": 1, "print_hide": 1,
@@ -79,10 +77,6 @@
"label": "Invoice Portion", "label": "Invoice Portion",
"read_only": 1 "read_only": 1
}, },
{
"fieldname": "section_break_9",
"fieldtype": "Section Break"
},
{ {
"columns": 2, "columns": 2,
"fieldname": "payment_amount", "fieldname": "payment_amount",
@@ -116,24 +110,13 @@
"print_hide": 1, "print_hide": 1,
"read_only": 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", "fieldname": "sales_invoice",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1, "in_list_view": 1,
"label": "Sales Invoice", "label": "Sales Invoice",
"options": "Sales Invoice", "options": "Sales Invoice",
"read_only": 1,
"reqd": 1 "reqd": 1
}, },
{ {
@@ -151,17 +134,30 @@
"read_only": 1 "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", "fieldtype": "Currency",
"in_list_view": 1, "in_list_view": 1,
"label": "Interest Amount", "label": "Interest",
"options": "currency",
"read_only": 1 "read_only": 1
} }
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"istable": 1, "istable": 1,
"links": [], "links": [],
"modified": "2021-09-17 12:10:42.278923", "modified": "2021-09-23 13:48:27.898830",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Overdue Payment", "name": "Overdue Payment",