fix: Patch dunnings made after accounts were frozen
- Consider "Accounts Frozen Until" and Period Closing Voucher
This commit is contained in:
parent
3bc79eebe3
commit
aeae8d646a
@ -7,7 +7,15 @@ def execute():
|
||||
frappe.reload_doc("accounts", "doctype", "overdue_payment")
|
||||
frappe.reload_doc("accounts", "doctype", "dunning")
|
||||
|
||||
all_dunnings = frappe.get_all("Dunning", filters={"docstatus": ("!=", 2)}, pluck="name")
|
||||
filters = {"docstatus": ("!=", 2)}
|
||||
|
||||
can_edit_accounts_after = get_accounts_closing_date()
|
||||
if can_edit_accounts_after:
|
||||
# Get dunnings after the date when accounts were frozen/closed
|
||||
filters["posting_date"] = (">", can_edit_accounts_after)
|
||||
|
||||
all_dunnings = frappe.get_all("Dunning", filters=filters, pluck="name")
|
||||
|
||||
for dunning_name in all_dunnings:
|
||||
dunning = frappe.get_doc("Dunning", dunning_name)
|
||||
if not dunning.sales_invoice:
|
||||
@ -47,3 +55,22 @@ def execute():
|
||||
# so we reverse previous GL Entries that recorded the dunning amount at
|
||||
# time of submission of the Dunning.
|
||||
make_reverse_gl_entries(voucher_type="Dunning", voucher_no=dunning.name)
|
||||
|
||||
|
||||
def get_accounts_closing_date():
|
||||
"""Get the date when accounts were frozen/closed"""
|
||||
accounts_frozen_till = frappe.db.get_single_value(
|
||||
"Accounts Settings", "acc_frozen_upto"
|
||||
) # always returns datetime.date
|
||||
|
||||
period_closing_date = frappe.db.get_value(
|
||||
"Period Closing Voucher", {"docstatus": 1}, "posting_date", order_by="posting_date desc"
|
||||
)
|
||||
|
||||
# Set most recent frozen/closing date as filter
|
||||
if accounts_frozen_till and period_closing_date:
|
||||
can_edit_accounts_after = max(accounts_frozen_till, period_closing_date)
|
||||
else:
|
||||
can_edit_accounts_after = accounts_frozen_till or period_closing_date
|
||||
|
||||
return can_edit_accounts_after
|
||||
|
Loading…
x
Reference in New Issue
Block a user