refactor: link running doc validation to company master

(cherry picked from commit 5a3afea8c7)

# Conflicts:
#	erpnext/setup/doctype/company/company.js
#	erpnext/setup/doctype/company/company.py
This commit is contained in:
ruthra kumar
2024-03-20 14:32:27 +05:30
committed by Mergify
parent fab5c1170d
commit b429f75d65
3 changed files with 87 additions and 11 deletions

View File

@@ -169,6 +169,7 @@ frappe.ui.form.on("Company", {
},
delete_company_transactions: function (frm) {
<<<<<<< HEAD
frappe.verify_password(function () {
var d = frappe.prompt(
{
@@ -200,6 +201,48 @@ frappe.ui.form.on("Company", {
onerror: function () {
frappe.msgprint(__("Wrong Password"));
},
=======
frappe.call({
method: "erpnext.setup.doctype.transaction_deletion_record.transaction_deletion_record.is_deletion_doc_running",
args: {
company: frm.doc.name,
},
freeze: true,
callback: function (r) {
if (!r.exc) {
frappe.verify_password(function () {
var d = frappe.prompt(
{
fieldtype: "Data",
fieldname: "company_name",
label: __("Please enter the company name to confirm"),
reqd: 1,
description: __(
"Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone."
),
},
function (data) {
if (data.company_name !== frm.doc.name) {
frappe.msgprint(__("Company name not same"));
return;
}
frappe.call({
method: "erpnext.setup.doctype.company.company.create_transaction_deletion_request",
args: {
company: data.company_name,
},
freeze: true,
callback: function (r, rt) {},
onerror: function () {
frappe.msgprint(__("Wrong Password"));
},
});
},
__("Delete all the Transactions for this Company"),
__("Delete")
);
d.get_primary_btn().addClass("btn-danger");
>>>>>>> 5a3afea8c7 (refactor: link running doc validation to company master)
});
},
__("Delete all the Transactions for this Company"),

View File

@@ -11,7 +11,11 @@ from frappe.cache_manager import clear_defaults_cache
from frappe.contacts.address_and_contact import load_address_and_contact
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
from frappe.desk.page.setup_wizard.setup_wizard import make_records
<<<<<<< HEAD
from frappe.utils import cint, formatdate, get_timestamp, today
=======
from frappe.utils import cint, formatdate, get_link_to_form, get_timestamp, today
>>>>>>> 5a3afea8c7 (refactor: link running doc validation to company master)
from frappe.utils.nestedset import NestedSet, rebuild_tree
from erpnext.accounts.doctype.account.account import get_account_currency
@@ -812,6 +816,25 @@ def get_default_company_address(name, sort_key="is_primary_address", existing_ad
@frappe.whitelist()
def create_transaction_deletion_request(company):
<<<<<<< HEAD
tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
tdr.insert()
tdr.submit()
=======
from erpnext.setup.doctype.transaction_deletion_record.transaction_deletion_record import (
is_deletion_doc_running,
)
is_deletion_doc_running(company)
tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
tdr.submit()
tdr.start_deletion_tasks()
frappe.msgprint(
_("A Transaction Deletion Document: {0} is triggered for {0}").format(
get_link_to_form("Transaction Deletion Record", tdr.name)
),
frappe.bold(company),
)
>>>>>>> 5a3afea8c7 (refactor: link running doc validation to company master)

View File

@@ -477,7 +477,25 @@ def get_doctypes_to_be_ignored():
return doctypes_to_be_ignored
@frappe.whitelist()
def is_deletion_doc_running(company: str | None = None, err_msg: str | None = None):
if company:
if running_deletion_jobs := frappe.db.get_all(
"Transaction Deletion Record",
filters={"docstatus": 1, "company": company, "status": "Running"},
):
if not err_msg:
err_msg = ""
frappe.throw(
title=_("Deletion in Progress!"),
msg=_("Transaction Deletion Document: {0} is running for this Company. {1}").format(
get_link_to_form("Transaction Deletion Record", running_deletion_jobs[0].name), err_msg
),
)
def check_for_running_deletion_job(doc, method=None):
# Check if DocType has 'company' field
df = qb.DocType("DocField")
if (
not_allowed := qb.from_(df)
@@ -485,14 +503,6 @@ def check_for_running_deletion_job(doc, method=None):
.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)
)
)
is_deletion_doc_running(
doc.company, _("Cannot make any transactions until the deletion job is completed")
)