refactor(supplier): Using query builder for get_total_accepted_amount (#54873)

Use the query builder for get_total_accepted_amount to assure compatibility with PostgreSQL.
This commit is contained in:
Loïc Oberle
2026-05-12 19:14:30 +02:00
committed by GitHub
parent 66914ac2fc
commit d128fb92cf

View File

@@ -327,28 +327,21 @@ def get_total_rejected_items(scorecard):
def get_total_accepted_amount(scorecard): def get_total_accepted_amount(scorecard):
"""Gets the total amount (in company currency) accepted in the period (based on Purchase Receipts)""" """Gets the total amount (in company currency) accepted in the period (based on Purchase Receipts)"""
supplier = frappe.get_doc("Supplier", scorecard.supplier) pr = frappe.qb.DocType("Purchase Receipt")
pr_item = frappe.qb.DocType("Purchase Receipt Item")
# Look up all PO Items with delivery dates between our dates query = (
data = frappe.db.sql( frappe.qb.from_(pr)
""" .join(pr_item)
SELECT .on(pr_item.parent == pr.name)
SUM(pr_item.qty * pr_item.base_rate) .select(frappe.qb.fn.Sum(pr_item.qty * pr_item.base_rate))
FROM .where(pr.supplier == scorecard.supplier)
`tabPurchase Receipt Item` pr_item, .where(pr.posting_date[scorecard.start_date : scorecard.end_date])
`tabPurchase Receipt` pr .where(pr_item.docstatus == 1)
WHERE )
pr.supplier = %(supplier)s
AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
AND pr_item.docstatus = 1
AND pr_item.parent = pr.name""",
{"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date},
as_dict=0,
)[0][0]
if not data: result = query.run()
data = 0 return frappe.utils.flt(result[0][0]) if result else 0.0
return data
def get_total_accepted_items(scorecard): def get_total_accepted_items(scorecard):