refactor: rewrite blanket_order.py queries in QB

This commit is contained in:
s-aga-r
2023-03-02 17:18:46 +05:30
parent f5937f46cb
commit f3993783a3

View File

@@ -6,6 +6,7 @@ import frappe
from frappe import _ from frappe import _
from frappe.model.document import Document from frappe.model.document import Document
from frappe.model.mapper import get_mapped_doc from frappe.model.mapper import get_mapped_doc
from frappe.query_builder.functions import Sum
from frappe.utils import flt, getdate from frappe.utils import flt, getdate
from erpnext.stock.doctype.item.item import get_item_defaults from erpnext.stock.doctype.item.item import get_item_defaults
@@ -29,21 +30,23 @@ class BlanketOrder(Document):
def update_ordered_qty(self): def update_ordered_qty(self):
ref_doctype = "Sales Order" if self.blanket_order_type == "Selling" else "Purchase Order" ref_doctype = "Sales Order" if self.blanket_order_type == "Selling" else "Purchase Order"
trans = frappe.qb.DocType(ref_doctype)
trans_item = frappe.qb.DocType(f"{ref_doctype} Item")
item_ordered_qty = frappe._dict( item_ordered_qty = frappe._dict(
frappe.db.sql( (
""" frappe.qb.from_(trans_item)
select trans_item.item_code, sum(trans_item.stock_qty) as qty .from_(trans)
from `tab{0} Item` trans_item, `tab{0}` trans .select(trans_item.item_code, Sum(trans_item.stock_qty).as_("qty"))
where trans.name = trans_item.parent .where(
and trans_item.blanket_order=%s (trans.name == trans_item.parent)
and trans.docstatus=1 & (trans_item.blanket_order == self.name)
and trans.status not in ('Closed', 'Stopped') & (trans.docstatus == 1)
group by trans_item.item_code & (trans.status.notin(["Stopped", "Closed"]))
""".format( )
ref_doctype .groupby(trans_item.item_code)
), ).run()
self.name,
)
) )
for d in self.items: for d in self.items: