mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-19 19:37:56 +00:00
Merge pull request #56231 from mihir-kandoi/pg-rfq-transaction-list
fix(controllers): fix supplier-RFQ portal list query (wrong column + Postgres DISTINCT)
This commit is contained in:
@@ -17,3 +17,20 @@ class TestWebsiteListForContact(ERPNextTestSuite):
|
|||||||
symbols = json.loads(context["currency_symbols"])
|
symbols = json.loads(context["currency_symbols"])
|
||||||
self.assertIsInstance(symbols, dict)
|
self.assertIsInstance(symbols, dict)
|
||||||
self.assertIn("USD", symbols)
|
self.assertIn("USD", symbols)
|
||||||
|
|
||||||
|
def test_rfq_transaction_list_returns_supplier_rfq(self):
|
||||||
|
# rfq_transaction_list filters RFQs by the supplier (parties[0]) and uses SELECT DISTINCT with
|
||||||
|
# ORDER BY creation -- both must be valid on Postgres, and the supplier filter must compare to the
|
||||||
|
# party value (not a stray `party[0]` column reference).
|
||||||
|
from erpnext.buying.doctype.request_for_quotation.test_request_for_quotation import (
|
||||||
|
make_request_for_quotation,
|
||||||
|
)
|
||||||
|
from erpnext.controllers.website_list_for_contact import rfq_transaction_list
|
||||||
|
|
||||||
|
rfq = make_request_for_quotation()
|
||||||
|
supplier = rfq.suppliers[0].supplier
|
||||||
|
|
||||||
|
rows = rfq_transaction_list(
|
||||||
|
"Request for Quotation Supplier", "Request for Quotation", [supplier], 0, 20
|
||||||
|
)
|
||||||
|
self.assertIn(rfq.name, [row.name for row in rows])
|
||||||
|
|||||||
@@ -184,9 +184,10 @@ def rfq_transaction_list(parties_doctype, doctype, parties, limit_start, limit_p
|
|||||||
party = frappe.qb.DocType(parties_doctype)
|
party = frappe.qb.DocType(parties_doctype)
|
||||||
data = (
|
data = (
|
||||||
frappe.qb.from_(party)
|
frappe.qb.from_(party)
|
||||||
.select(party.parent.as_("name"), party.supplier)
|
# creation must be selected: Postgres requires SELECT DISTINCT order-by exprs in the select list
|
||||||
|
.select(party.parent.as_("name"), party.supplier, party.creation)
|
||||||
.distinct()
|
.distinct()
|
||||||
.where((party.supplier == party[0]) & (party.docstatus == 1))
|
.where((party.supplier == parties[0]) & (party.docstatus == 1))
|
||||||
.orderby(party.creation, order=frappe.qb.desc)
|
.orderby(party.creation, order=frappe.qb.desc)
|
||||||
.limit(limit_page_length)
|
.limit(limit_page_length)
|
||||||
.offset(limit_start)
|
.offset(limit_start)
|
||||||
|
|||||||
Reference in New Issue
Block a user