mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-15 03:01:22 +00:00
feat: resolve dunning on payment entry
This commit is contained in:
@@ -68,15 +68,30 @@ class Dunning(AccountsController):
|
|||||||
|
|
||||||
def resolve_dunning(doc, state):
|
def resolve_dunning(doc, state):
|
||||||
"""
|
"""
|
||||||
Todo: refactor
|
Check if all payments have been made and resolve dunning, if yes. Called
|
||||||
|
when a Payment Entry is submitted.
|
||||||
"""
|
"""
|
||||||
for reference in doc.references:
|
for reference in doc.references:
|
||||||
if reference.reference_doctype == "Sales Invoice" and reference.outstanding_amount <= 0:
|
if reference.reference_doctype == "Sales Invoice" and reference.outstanding_amount <= 0:
|
||||||
dunnings = frappe.get_list("Dunning", filters={
|
unresolved_dunnings = frappe.get_all("Dunning",
|
||||||
"sales_invoice": reference.reference_name, "status": ("!=", "Resolved")}, ignore_permissions=True)
|
filters={
|
||||||
|
"sales_invoice": reference.reference_name,
|
||||||
|
"status": ("!=", "Resolved")
|
||||||
|
},
|
||||||
|
pluck="name"
|
||||||
|
)
|
||||||
|
|
||||||
for dunning in dunnings:
|
for dunning_name in unresolved_dunnings:
|
||||||
frappe.db.set_value("Dunning", dunning.name, "status", "Resolved")
|
resolve = True
|
||||||
|
dunning = frappe.get_doc("Dunning", dunning_name)
|
||||||
|
for overdue_payment in dunning.overdue_payments:
|
||||||
|
outstanding = frappe.get_value("Payment Schedule", overdue_payment.payment_schedule, "outstanding")
|
||||||
|
if outstanding >= 0:
|
||||||
|
resolve = False
|
||||||
|
|
||||||
|
if resolve:
|
||||||
|
dunning.status = "Resolved"
|
||||||
|
dunning.save()
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
|
|||||||
Reference in New Issue
Block a user