From b31e43e3db2ea92850f5426d68173e7cf4a99179 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Wed, 7 Feb 2024 20:54:29 +0530 Subject: [PATCH] refactor: barebones hook on all doctypes with 'company' field (cherry picked from commit ec194ef076037b16edea68728069b3308a9a4216) --- erpnext/hooks.py | 5 ++++- .../transaction_deletion_record.py | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 369704812e4..e463116f291 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -312,7 +312,10 @@ period_closing_doctypes = [ doc_events = { "*": { - "validate": "erpnext.support.doctype.service_level_agreement.service_level_agreement.apply", + "validate": [ + "erpnext.support.doctype.service_level_agreement.service_level_agreement.apply", + "erpnext.setup.doctype.transaction_deletion_record.transaction_deletion_record.check_for_running_deletion_job", + ], }, tuple(period_closing_doctypes): { "validate": "erpnext.accounts.doctype.accounting_period.accounting_period.validate_accounting_period_on_doc_save", diff --git a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py index be161e30322..5a49a7d1d7f 100644 --- a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py +++ b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py @@ -450,3 +450,24 @@ def get_doctypes_to_be_ignored(): doctypes_to_be_ignored.extend(frappe.get_hooks("company_data_to_be_ignored") or []) return doctypes_to_be_ignored + + +def check_for_running_deletion_job(doc, method=None): + df = qb.DocType("DocField") + if ( + not_allowed := qb.from_(df) + .select(df.parent) + .where((df.fieldname == "company") & (df.parent == doc.doctype)) + .run() + ): + if running_deletion_jobs := frappe.db.get_all( + "Transaction Deletion Record", + filters={"docstatus": 1, "company": doc.company, "status": "Running"}, + ): + frappe.throw( + _( + "Transaction Deletion job {0} is running for this Company. Cannot make any transactions until the deletion job is completed" + ).format( + get_link_to_form("Transaction Deletion Record", running_deletion_jobs[0].name) + ) + )