diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js index 27a38912a86..edfde8f52e1 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js @@ -5,7 +5,7 @@ frappe.ui.form.on("Period Closing Voucher", { onload: function (frm) { if (!frm.doc.transaction_date) frm.doc.transaction_date = frappe.datetime.obj_to_str(new Date()); - frm.ignore_doctypes_on_cancel_all = ["Process Period Closing Voucher"]; + frm.ignore_doctypes_on_cancel_all = ["Process Period Closing Voucher", "MapReduce Job"]; }, setup: function (frm) { diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py index 9d424f9b893..851f1a0627c 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py @@ -283,6 +283,8 @@ class PeriodClosingVoucher(AccountsController): "erpnext.accounts.doctype.period_closing_voucher.period_closing_voucher.mapper", "erpnext.accounts.doctype.period_closing_voucher.period_closing_voucher.reducer", data, + self.doctype, + self.name, ) def on_cancel(self): @@ -292,10 +294,17 @@ class PeriodClosingVoucher(AccountsController): "Payment Ledger Entry", "Account Closing Balance", "Process Period Closing Voucher", + "MapReduce Job", ) + self.block_if_future_closing_voucher_exists() self.validate_accounts_not_frozen(for_cancellation=True) + # TODO: add branching clause based on accounts settings + from frappe.utils.background_jobs import cancel_mapreduce_job + + cancel_mapreduce_job(self.doctype, self.name) + if not frappe.get_single_value("Accounts Settings", "use_legacy_controller_for_pcv"): self.cancel_process_pcv_docs() @@ -309,6 +318,11 @@ class PeriodClosingVoucher(AccountsController): def on_trash(self): super().on_trash() + # TODO: add branching clause based on accounts settings + from frappe.utils.background_jobs import remove_mapreduce_job + + remove_mapreduce_job(self.doctype, self.name) + ppcvs = frappe.db.get_all( "Process Period Closing Voucher", {"parent_pcv": self.name, "docstatus": ["in", [1, 2]]} )