chore: rewrite query using query builder
This commit is contained in:
parent
ee178ff2ce
commit
25718f5cc7
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user