Skip to content

Commit 20b43b4

Browse files
venkat102mergify[bot]
authored andcommitted
fix(Transaction Deletion Record): sql syntax error while fetching lead address
(cherry picked from commit af0d6ee)
1 parent 5c1f6f0 commit 20b43b4

1 file changed

Lines changed: 28 additions & 21 deletions

File tree

erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -190,35 +190,42 @@ def delete_lead_addresses(self):
190190
"""Delete addresses to which leads are linked"""
191191
self.validate_doc_status()
192192
if not self.delete_leads_and_addresses:
193-
leads = frappe.get_all("Lead", filters={"company": self.company})
194-
leads = ["'%s'" % row.get("name") for row in leads]
193+
leads = frappe.db.get_all("Lead", filters={"company": self.company}, pluck="name")
195194
addresses = []
196195
if leads:
197-
addresses = frappe.db.sql_list(
198-
"""select parent from `tabDynamic Link` where link_name
199-
in ({leads})""".format(leads=",".join(leads))
196+
addresses = frappe.db.get_all(
197+
"Dynamic Link", filters={"link_name": ("in", leads)}, pluck="parent"
200198
)
201-
202199
if addresses:
203200
addresses = ["%s" % frappe.db.escape(addr) for addr in addresses]
204201

205-
frappe.db.sql(
206-
"""delete from `tabAddress` where name in ({addresses}) and
207-
name not in (select distinct dl1.parent from `tabDynamic Link` dl1
208-
inner join `tabDynamic Link` dl2 on dl1.parent=dl2.parent
209-
and dl1.link_doctype<>dl2.link_doctype)""".format(addresses=",".join(addresses))
210-
)
202+
address = qb.DocType("Address")
203+
dl1 = qb.DocType("Dynamic Link")
204+
dl2 = qb.DocType("Dynamic Link")
205+
206+
qb.from_(address).delete().where(
207+
(address.name.isin(addresses))
208+
& (
209+
address.name.notin(
210+
qb.from_(dl1)
211+
.join(dl2)
212+
.on((dl1.parent == dl2.parent) & (dl1.link_doctype != dl2.link_doctype))
213+
.select(dl1.parent)
214+
.distinct()
215+
)
216+
)
217+
).run()
211218

212-
frappe.db.sql(
213-
"""delete from `tabDynamic Link` where link_doctype='Lead'
214-
and parenttype='Address' and link_name in ({leads})""".format(leads=",".join(leads))
215-
)
219+
dynamic_link = qb.DocType("Dynamic Link")
220+
qb.from_(dynamic_link).delete().where(
221+
(dynamic_link.link_doctype == "Lead")
222+
& (dynamic_link.parenttype == "Address")
223+
& (dynamic_link.link_name.isin(leads))
224+
).run()
225+
226+
customer = qb.DocType("Customer")
227+
qb.update(customer).set(customer.lead_name, None).where(customer.lead_name.isin(leads)).run()
216228

217-
frappe.db.sql(
218-
"""update `tabCustomer` set lead_name=NULL where lead_name in ({leads})""".format(
219-
leads=",".join(leads)
220-
)
221-
)
222229
self.db_set("delete_leads_and_addresses", 1)
223230
self.enqueue_task(task="Reset Company Values")
224231

0 commit comments

Comments
 (0)