mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 07:54:46 +00:00
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:
@@ -169,6 +169,7 @@ frappe.ui.form.on("Company", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
delete_company_transactions: function (frm) {
|
delete_company_transactions: function (frm) {
|
||||||
|
<<<<<<< HEAD
|
||||||
frappe.verify_password(function () {
|
frappe.verify_password(function () {
|
||||||
var d = frappe.prompt(
|
var d = frappe.prompt(
|
||||||
{
|
{
|
||||||
@@ -200,6 +201,48 @@ frappe.ui.form.on("Company", {
|
|||||||
onerror: function () {
|
onerror: function () {
|
||||||
frappe.msgprint(__("Wrong Password"));
|
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"),
|
__("Delete all the Transactions for this Company"),
|
||||||
|
|||||||
@@ -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.contacts.address_and_contact import load_address_and_contact
|
||||||
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
|
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
|
||||||
from frappe.desk.page.setup_wizard.setup_wizard import make_records
|
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_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 frappe.utils.nestedset import NestedSet, rebuild_tree
|
||||||
|
|
||||||
from erpnext.accounts.doctype.account.account import get_account_currency
|
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()
|
@frappe.whitelist()
|
||||||
def create_transaction_deletion_request(company):
|
def create_transaction_deletion_request(company):
|
||||||
|
<<<<<<< HEAD
|
||||||
tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
|
tdr = frappe.get_doc({"doctype": "Transaction Deletion Record", "company": company})
|
||||||
tdr.insert()
|
tdr.insert()
|
||||||
tdr.submit()
|
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)
|
||||||
|
|||||||
@@ -477,7 +477,25 @@ def get_doctypes_to_be_ignored():
|
|||||||
return 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):
|
def check_for_running_deletion_job(doc, method=None):
|
||||||
|
# Check if DocType has 'company' field
|
||||||
df = qb.DocType("DocField")
|
df = qb.DocType("DocField")
|
||||||
if (
|
if (
|
||||||
not_allowed := qb.from_(df)
|
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))
|
.where((df.fieldname == "company") & (df.parent == doc.doctype))
|
||||||
.run()
|
.run()
|
||||||
):
|
):
|
||||||
if running_deletion_jobs := frappe.db.get_all(
|
is_deletion_doc_running(
|
||||||
"Transaction Deletion Record",
|
doc.company, _("Cannot make any transactions until the deletion job is completed")
|
||||||
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)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user