From 8964612b8e08fefa9439584b0d9084596c07f07e Mon Sep 17 00:00:00 2001 From: Sagar Sharma Date: Tue, 6 Sep 2022 13:04:03 +0530 Subject: [PATCH] fix: consider Stock Entry purpose while getting total supplied qty --- .../stock/doctype/stock_entry/stock_entry.py | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index e0bdc9229f5..fa7900bd3b2 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -856,15 +856,22 @@ class StockEntry(StockController): se_item.item_code, self.purchase_order ) ) - total_supplied = frappe.db.sql( - """select sum(transfer_qty) - from `tabStock Entry Detail`, `tabStock Entry` - where `tabStock Entry`.purchase_order = %s - and `tabStock Entry`.docstatus = 1 - and `tabStock Entry Detail`.item_code = %s - and `tabStock Entry Detail`.parent = `tabStock Entry`.name""", - (self.purchase_order, se_item.item_code), - )[0][0] + + se = frappe.qb.DocType("Stock Entry") + se_detail = frappe.qb.DocType("Stock Entry Detail") + + total_supplied = ( + frappe.qb.from_(se) + .inner_join(se_detail) + .on(se.name == se_detail.parent) + .select(Sum(se_detail.transfer_qty)) + .where( + (se.purpose == "Send to Subcontractor") + & (se.purchase_order == self.purchase_order) + & (se_detail.item_code == se_item.item_code) + & (se.docstatus == 1) + ) + ).run()[0][0] if flt(total_supplied, precision) > flt(total_allowed, precision): frappe.throw(