mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-13 20:18:45 +00:00
fix(Transaction Deletion Record): sql syntax error while fetching lead address
(cherry picked from commit af0d6eeae8)
This commit is contained in:
@@ -220,35 +220,42 @@ class TransactionDeletionRecord(Document):
|
|||||||
"""Delete addresses to which leads are linked"""
|
"""Delete addresses to which leads are linked"""
|
||||||
self.validate_doc_status()
|
self.validate_doc_status()
|
||||||
if not self.delete_leads_and_addresses:
|
if not self.delete_leads_and_addresses:
|
||||||
leads = frappe.get_all("Lead", filters={"company": self.company})
|
leads = frappe.db.get_all("Lead", filters={"company": self.company}, pluck="name")
|
||||||
leads = ["'%s'" % row.get("name") for row in leads]
|
|
||||||
addresses = []
|
addresses = []
|
||||||
if leads:
|
if leads:
|
||||||
addresses = frappe.db.sql_list(
|
addresses = frappe.db.get_all(
|
||||||
"""select parent from `tabDynamic Link` where link_name
|
"Dynamic Link", filters={"link_name": ("in", leads)}, pluck="parent"
|
||||||
in ({leads})""".format(leads=",".join(leads))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if addresses:
|
if addresses:
|
||||||
addresses = ["%s" % frappe.db.escape(addr) for addr in addresses]
|
addresses = ["%s" % frappe.db.escape(addr) for addr in addresses]
|
||||||
|
|
||||||
frappe.db.sql(
|
address = qb.DocType("Address")
|
||||||
"""delete from `tabAddress` where name in ({addresses}) and
|
dl1 = qb.DocType("Dynamic Link")
|
||||||
name not in (select distinct dl1.parent from `tabDynamic Link` dl1
|
dl2 = qb.DocType("Dynamic Link")
|
||||||
inner join `tabDynamic Link` dl2 on dl1.parent=dl2.parent
|
|
||||||
and dl1.link_doctype<>dl2.link_doctype)""".format(addresses=",".join(addresses))
|
|
||||||
)
|
|
||||||
|
|
||||||
frappe.db.sql(
|
qb.from_(address).delete().where(
|
||||||
"""delete from `tabDynamic Link` where link_doctype='Lead'
|
(address.name.isin(addresses))
|
||||||
and parenttype='Address' and link_name in ({leads})""".format(leads=",".join(leads))
|
& (
|
||||||
)
|
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.db_set("delete_leads_and_addresses", 1)
|
||||||
self.enqueue_task(task="Reset Company Values")
|
self.enqueue_task(task="Reset Company Values")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user