chore: rewrite query using query builder

This commit is contained in:
Deepesh Garg 2023-10-01 13:27:44 +05:30
parent ee178ff2ce
commit 25718f5cc7

View File

@ -4,6 +4,7 @@
import frappe import frappe
from frappe import _ from frappe import _
from frappe.query_builder.functions import Concat_ws, Date
def execute(filters=None): def execute(filters=None):
@ -69,53 +70,41 @@ def get_columns():
def get_data(filters): def get_data(filters):
return frappe.db.sql( lead = frappe.qb.DocType("Lead")
""" address = frappe.qb.DocType("Address")
SELECT dynamic_link = frappe.qb.DocType("Dynamic Link")
`tabLead`.name,
`tabLead`.lead_name, query = (
`tabLead`.status, frappe.qb.from_(lead)
`tabLead`.lead_owner, .left_join(dynamic_link)
`tabLead`.territory, .on((lead.name == dynamic_link.link_name) & (dynamic_link.parenttype == "Address"))
`tabLead`.source, .left_join(address)
`tabLead`.email_id, .on(address.name == dynamic_link.parent)
`tabLead`.mobile_no, .select(
`tabLead`.phone, lead.name,
`tabLead`.owner, lead.lead_name,
`tabLead`.company, lead.status,
concat_ws(', ', lead.lead_owner,
trim(',' from `tabAddress`.address_line1), lead.territory,
trim(',' from tabAddress.address_line2) lead.source,
) AS address, lead.email_id,
`tabAddress`.state, lead.mobile_no,
`tabAddress`.pincode, lead.phone,
`tabAddress`.country lead.owner,
FROM lead.company,
`tabLead` left join `tabDynamic Link` on ( (Concat_ws(", ", address.address_line1, address.address_line2)).as_("address"),
`tabLead`.name = `tabDynamic Link`.link_name and address.state,
`tabDynamic Link`.parenttype = 'Address') address.pincode,
left join `tabAddress` on ( address.country,
`tabAddress`.name=`tabDynamic Link`.parent) )
WHERE .where(lead.company == filters.company)
company = %(company)s .where(Date(lead.creation).between(filters.from_date, filters.to_date))
AND DATE(`tabLead`.creation) BETWEEN %(from_date)s AND %(to_date)s
{conditions}
ORDER BY
`tabLead`.creation asc """.format(
conditions=get_conditions(filters)
),
filters,
as_dict=1,
) )
def get_conditions(filters):
conditions = []
if filters.get("territory"): if filters.get("territory"):
conditions.append(" and `tabLead`.territory=%(territory)s") query = query.where(lead.territory == filters.get("territory"))
if filters.get("status"): if filters.get("status"):
conditions.append(" and `tabLead`.status=%(status)s") query = query.where(lead.status == filters.get("status"))
return " ".join(conditions) if conditions else "" return query.run(as_dict=1)