refactor(request_for_quotation): Use query builder instead of SQL (#55171)

This commit is contained in:
Loic Oberle
2026-05-22 12:40:18 +02:00
committed by GitHub
parent 1135429181
commit e7c4fb85f8

View File

@@ -575,27 +575,29 @@ def get_pdf(
def get_item_from_material_requests_based_on_supplier( def get_item_from_material_requests_based_on_supplier(
source_name: str, target_doc: str | Document | None = None source_name: str, target_doc: str | Document | None = None
): ):
mr_items_list = frappe.db.sql( Item = frappe.qb.DocType("Item")
""" Item_Supp = frappe.qb.DocType("Item Supplier")
SELECT MR = frappe.qb.DocType("Material Request")
mr.name, mr_item.item_code MR_Item = frappe.qb.DocType("Material Request Item")
FROM
`tabItem` as item, query = (
`tabItem Supplier` as item_supp, frappe.qb.from_(MR_Item)
`tabMaterial Request Item` as mr_item, .join(MR)
`tabMaterial Request` as mr .on(MR_Item.parent == MR.name)
WHERE item_supp.supplier = %(supplier)s .join(Item)
AND item.name = item_supp.parent .on(MR_Item.item_code == Item.name)
AND mr_item.parent = mr.name .join(Item_Supp)
AND mr_item.item_code = item.name .on(Item.name == Item_Supp.parent)
AND mr.status != "Stopped" .select(MR.name, MR_Item.item_code)
AND mr.material_request_type = "Purchase" .where(Item_Supp.supplier == source_name)
AND mr.docstatus = 1 .where(MR.status != "Stopped")
AND mr.per_ordered < 99.99""", .where(MR.material_request_type == "Purchase")
{"supplier": source_name}, .where(MR.docstatus == 1)
as_dict=1, .where(MR.per_ordered < 99.99)
) )
mr_items_list = query.run(as_dict=True)
material_requests = {} material_requests = {}
for d in mr_items_list: for d in mr_items_list:
material_requests.setdefault(d.name, []).append(d.item_code) material_requests.setdefault(d.name, []).append(d.item_code)