Merge pull request #19928 from 0Pranav/delete-company-txn-query
fix: replace sql with orm query for deleting company communications
This commit is contained in:
commit
0dd7e77615
@ -106,7 +106,10 @@ def delete_lead_addresses(company_name):
|
|||||||
frappe.db.sql("""update tabCustomer set lead_name=NULL where lead_name in ({leads})""".format(leads=",".join(leads)))
|
frappe.db.sql("""update tabCustomer set lead_name=NULL where lead_name in ({leads})""".format(leads=",".join(leads)))
|
||||||
|
|
||||||
def delete_communications(doctype, company_name, company_fieldname):
|
def delete_communications(doctype, company_name, company_fieldname):
|
||||||
frappe.db.sql("""
|
reference_docs = frappe.get_all(doctype, filters={company_fieldname:company_name})
|
||||||
DELETE FROM `tabCommunication` WHERE reference_doctype = %s AND
|
reference_doc_names = [r.name for r in reference_docs]
|
||||||
EXISTS (SELECT name FROM `tab{0}` WHERE {1} = %s AND `tabCommunication`.reference_name = name)
|
|
||||||
""".format(doctype, company_fieldname), (doctype, company_name))
|
communications = frappe.get_all("Communication", filters={"reference_doctype":doctype,"reference_name":["in", reference_doc_names]})
|
||||||
|
communication_names = [c.name for c in communications]
|
||||||
|
|
||||||
|
frappe.delete_doc("Communication", communication_names)
|
||||||
|
@ -88,6 +88,57 @@ class TestCompany(unittest.TestCase):
|
|||||||
self.delete_mode_of_payment(template)
|
self.delete_mode_of_payment(template)
|
||||||
frappe.delete_doc("Company", template)
|
frappe.delete_doc("Company", template)
|
||||||
|
|
||||||
|
def test_delete_communication(self):
|
||||||
|
from erpnext.setup.doctype.company.delete_company_transactions import delete_communications
|
||||||
|
company = create_child_company()
|
||||||
|
lead = create_test_lead_in_company(company)
|
||||||
|
communication = create_company_communication("Lead", lead)
|
||||||
|
delete_communications("Lead", "Test Company", "company")
|
||||||
|
self.assertFalse(frappe.db.exists("Communcation", communication))
|
||||||
|
self.assertFalse(frappe.db.exists({"doctype":"Comunication Link", "link_name": communication}))
|
||||||
|
|
||||||
def delete_mode_of_payment(self, company):
|
def delete_mode_of_payment(self, company):
|
||||||
frappe.db.sql(""" delete from `tabMode of Payment Account`
|
frappe.db.sql(""" delete from `tabMode of Payment Account`
|
||||||
where company =%s """, (company))
|
where company =%s """, (company))
|
||||||
|
|
||||||
|
def create_company_communication(doctype, docname):
|
||||||
|
comm = frappe.get_doc({
|
||||||
|
"doctype": "Communication",
|
||||||
|
"communication_type": "Communication",
|
||||||
|
"content": "Deduplication of Links",
|
||||||
|
"communication_medium": "Email",
|
||||||
|
"reference_doctype":doctype,
|
||||||
|
"reference_name":docname
|
||||||
|
})
|
||||||
|
comm.insert()
|
||||||
|
|
||||||
|
def create_child_company():
|
||||||
|
child_company = frappe.db.exists("Company", "Test Company")
|
||||||
|
if not child_company:
|
||||||
|
child_company = frappe.get_doc({
|
||||||
|
"doctype":"Company",
|
||||||
|
"company_name":"Test Company",
|
||||||
|
"abbr":"test_company",
|
||||||
|
"default_currency":"INR"
|
||||||
|
})
|
||||||
|
child_company.insert()
|
||||||
|
else:
|
||||||
|
child_company = frappe.get_doc("Company", child_company)
|
||||||
|
|
||||||
|
return child_company.name
|
||||||
|
|
||||||
|
def create_test_lead_in_company(company):
|
||||||
|
lead = frappe.db.exists("Lead", "Test Lead in new company")
|
||||||
|
if not lead:
|
||||||
|
lead = frappe.get_doc({
|
||||||
|
"doctype": "Lead",
|
||||||
|
"lead_name": "Test Lead in new company",
|
||||||
|
"scompany": company
|
||||||
|
})
|
||||||
|
lead.insert()
|
||||||
|
else:
|
||||||
|
lead = frappe.get_doc("Lead", lead)
|
||||||
|
lead.company = company
|
||||||
|
lead.save()
|
||||||
|
return lead.name
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user