fix(Transaction Deletion Record): sql syntax error while fetching lead address
(cherry picked from commit af0d6eeae8)
This commit is contained in:
@@ -190,35 +190,42 @@ class TransactionDeletionRecord(Document):
|
||||
"""Delete addresses to which leads are linked"""
|
||||
self.validate_doc_status()
|
||||
if not self.delete_leads_and_addresses:
|
||||
leads = frappe.get_all("Lead", filters={"company": self.company})
|
||||
leads = ["'%s'" % row.get("name") for row in leads]
|
||||
leads = frappe.db.get_all("Lead", filters={"company": self.company}, pluck="name")
|
||||
addresses = []
|
||||
if leads:
|
||||
addresses = frappe.db.sql_list(
|
||||
"""select parent from `tabDynamic Link` where link_name
|
||||
in ({leads})""".format(leads=",".join(leads))
|
||||
addresses = frappe.db.get_all(
|
||||
"Dynamic Link", filters={"link_name": ("in", leads)}, pluck="parent"
|
||||
)
|
||||
|
||||
if addresses:
|
||||
addresses = ["%s" % frappe.db.escape(addr) for addr in addresses]
|
||||
|
||||
frappe.db.sql(
|
||||
"""delete from `tabAddress` where name in ({addresses}) and
|
||||
name not in (select distinct dl1.parent from `tabDynamic Link` dl1
|
||||
inner join `tabDynamic Link` dl2 on dl1.parent=dl2.parent
|
||||
and dl1.link_doctype<>dl2.link_doctype)""".format(addresses=",".join(addresses))
|
||||
)
|
||||
address = qb.DocType("Address")
|
||||
dl1 = qb.DocType("Dynamic Link")
|
||||
dl2 = qb.DocType("Dynamic Link")
|
||||
|
||||
frappe.db.sql(
|
||||
"""delete from `tabDynamic Link` where link_doctype='Lead'
|
||||
and parenttype='Address' and link_name in ({leads})""".format(leads=",".join(leads))
|
||||
)
|
||||
qb.from_(address).delete().where(
|
||||
(address.name.isin(addresses))
|
||||
& (
|
||||
address.name.notin(
|
||||
qb.from_(dl1)
|
||||
.join(dl2)
|
||||
.on((dl1.parent == dl2.parent) & (dl1.link_doctype != dl2.link_doctype))
|
||||
.select(dl1.parent)
|
||||
.distinct()
|
||||
)
|
||||
)
|
||||
).run()
|
||||
|
||||
dynamic_link = qb.DocType("Dynamic Link")
|
||||
qb.from_(dynamic_link).delete().where(
|
||||
(dynamic_link.link_doctype == "Lead")
|
||||
& (dynamic_link.parenttype == "Address")
|
||||
& (dynamic_link.link_name.isin(leads))
|
||||
).run()
|
||||
|
||||
customer = qb.DocType("Customer")
|
||||
qb.update(customer).set(customer.lead_name, None).where(customer.lead_name.isin(leads)).run()
|
||||
|
||||
frappe.db.sql(
|
||||
"""update `tabCustomer` set lead_name=NULL where lead_name in ({leads})""".format(
|
||||
leads=",".join(leads)
|
||||
)
|
||||
)
|
||||
self.db_set("delete_leads_and_addresses", 1)
|
||||
self.enqueue_task(task="Reset Company Values")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user