mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 07:54:46 +00:00
refactor: rewrite blanket_order.py queries in QB
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user