mirror of
https://github.com/frappe/erpnext.git
synced 2026-02-16 11:13:32 +00:00
fix: use query builder instead of raw SQL in get_rfq_containing_supplier
(cherry picked from commit 7f2a52ff71)
This commit is contained in:
@@ -9,6 +9,7 @@ from frappe import _
|
|||||||
from frappe.core.doctype.communication.email import make
|
from frappe.core.doctype.communication.email import make
|
||||||
from frappe.desk.form.load import get_attachments
|
from frappe.desk.form.load import get_attachments
|
||||||
from frappe.model.mapper import get_mapped_doc
|
from frappe.model.mapper import get_mapped_doc
|
||||||
|
from frappe.query_builder import Order
|
||||||
from frappe.utils import get_url
|
from frappe.utils import get_url
|
||||||
from frappe.utils.print_format import download_pdf
|
from frappe.utils.print_format import download_pdf
|
||||||
from frappe.utils.user import get_user_fullname
|
from frappe.utils.user import get_user_fullname
|
||||||
@@ -502,35 +503,32 @@ def get_supplier_tag():
|
|||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
@frappe.validate_and_sanitize_search_inputs
|
@frappe.validate_and_sanitize_search_inputs
|
||||||
def get_rfq_containing_supplier(doctype, txt, searchfield, start, page_len, filters):
|
def get_rfq_containing_supplier(doctype, txt, searchfield, start, page_len, filters):
|
||||||
conditions = ""
|
rfq = frappe.qb.DocType("Request for Quotation")
|
||||||
if txt:
|
rfq_supplier = frappe.qb.DocType("Request for Quotation Supplier")
|
||||||
conditions += "and rfq.name like '%%" + txt + "%%' "
|
|
||||||
|
|
||||||
if filters.get("transaction_date"):
|
query = (
|
||||||
conditions += "and rfq.transaction_date = '{}'".format(filters.get("transaction_date"))
|
frappe.qb.from_(rfq)
|
||||||
|
.from_(rfq_supplier)
|
||||||
rfq_data = frappe.db.sql(
|
.select(rfq.name)
|
||||||
f"""
|
.distinct()
|
||||||
select
|
.select(rfq.transaction_date, rfq.company)
|
||||||
distinct rfq.name, rfq.transaction_date,
|
.where(
|
||||||
rfq.company
|
(rfq.name == rfq_supplier.parent)
|
||||||
from
|
& (rfq_supplier.supplier == filters.get("supplier"))
|
||||||
`tabRequest for Quotation` rfq, `tabRequest for Quotation Supplier` rfq_supplier
|
& (rfq.docstatus == 1)
|
||||||
where
|
& (rfq.company == filters.get("company"))
|
||||||
rfq.name = rfq_supplier.parent
|
)
|
||||||
and rfq_supplier.supplier = %(supplier)s
|
.orderby(rfq.transaction_date, order=Order.asc)
|
||||||
and rfq.docstatus = 1
|
.limit(page_len)
|
||||||
and rfq.company = %(company)s
|
.offset(start)
|
||||||
{conditions}
|
|
||||||
order by rfq.transaction_date ASC
|
|
||||||
limit %(page_len)s offset %(start)s """,
|
|
||||||
{
|
|
||||||
"page_len": page_len,
|
|
||||||
"start": start,
|
|
||||||
"company": filters.get("company"),
|
|
||||||
"supplier": filters.get("supplier"),
|
|
||||||
},
|
|
||||||
as_dict=1,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if txt:
|
||||||
|
query = query.where(rfq.name.like(f"%%{txt}%%"))
|
||||||
|
|
||||||
|
if filters.get("transaction_date"):
|
||||||
|
query = query.where(rfq.transaction_date == filters.get("transaction_date"))
|
||||||
|
|
||||||
|
rfq_data = query.run(as_dict=1)
|
||||||
|
|
||||||
return rfq_data
|
return rfq_data
|
||||||
|
|||||||
Reference in New Issue
Block a user