From a19611a2e966a5577dc67d7832db0a26c33cca72 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 25 May 2026 16:02:09 +0530 Subject: [PATCH] refactor: handle processes stuck in running state in process pcv (cherry picked from commit f414778486e7526e8d4b07eccc627fb858acd6e3) --- .../process_period_closing_voucher.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py index 805d639cdae..51450334406 100644 --- a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py +++ b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py @@ -137,9 +137,10 @@ def pause_pcv_processing(docname: str): ppcv = qb.DocType("Process Period Closing Voucher") qb.update(ppcv).set(ppcv.status, "Paused").where(ppcv.name.eq(docname)).run() + # If a date is stuck in 'Running' state, this will allow it to procced. if queued_dates := frappe.db.get_all( "Process Period Closing Voucher Detail", - filters={"parent": docname, "status": "Queued"}, + filters={"parent": docname, "status": ["in", ["Queued", "Running"]]}, pluck="name", ): ppcvd = qb.DocType("Process Period Closing Voucher Detail") @@ -173,6 +174,9 @@ def resume_pcv_processing(docname: str): ppcvd = qb.DocType("Process Period Closing Voucher Detail") qb.update(ppcvd).set(ppcvd.status, "Queued").where(ppcvd.name.isin(paused_dates)).run() start_pcv_processing(docname) + else: + # If a parent doc is stuck in 'Running' state, will allow it to proceed. + schedule_next_date(docname) def update_default_dimensions(dimension_fields, gl_entry, dimension_values):