refactor: rewrite Batch Item Expiry Status Report
queries in QB
This commit is contained in:
parent
4efb8b142c
commit
2c9d9577e3
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
from frappe.query_builder.functions import IfNull
|
||||||
from frappe.utils import cint, getdate
|
from frappe.utils import cint, getdate
|
||||||
|
|
||||||
|
|
||||||
@ -54,30 +55,27 @@ def get_columns(filters):
|
|||||||
return columns
|
return columns
|
||||||
|
|
||||||
|
|
||||||
def get_conditions(filters):
|
def get_stock_ledger_entries(filters):
|
||||||
conditions = ""
|
|
||||||
if not filters.get("from_date"):
|
if not filters.get("from_date"):
|
||||||
frappe.throw(_("'From Date' is required"))
|
frappe.throw(_("'From Date' is required"))
|
||||||
|
|
||||||
if filters.get("to_date"):
|
if not filters.get("to_date"):
|
||||||
conditions += " and posting_date <= '%s'" % filters["to_date"]
|
|
||||||
else:
|
|
||||||
frappe.throw(_("'To Date' is required"))
|
frappe.throw(_("'To Date' is required"))
|
||||||
|
|
||||||
return conditions
|
sle = frappe.qb.DocType("Stock Ledger Entry")
|
||||||
|
query = (
|
||||||
|
frappe.qb.from_(sle)
|
||||||
def get_stock_ledger_entries(filters):
|
.select(sle.item_code, sle.batch_no, sle.warehouse, sle.posting_date, sle.actual_qty)
|
||||||
conditions = get_conditions(filters)
|
.where(
|
||||||
return frappe.db.sql(
|
(sle.is_cancelled == 0)
|
||||||
"""select item_code, batch_no, warehouse,
|
& (sle.docstatus < 2)
|
||||||
posting_date, actual_qty
|
& (IfNull(sle.batch_no, "") != "")
|
||||||
from `tabStock Ledger Entry`
|
& (sle.posting_date <= filters["to_date"])
|
||||||
where is_cancelled = 0
|
|
||||||
and docstatus < 2 and ifnull(batch_no, '') != '' %s order by item_code, warehouse"""
|
|
||||||
% conditions,
|
|
||||||
as_dict=1,
|
|
||||||
)
|
)
|
||||||
|
.orderby(sle.item_code, sle.warehouse)
|
||||||
|
)
|
||||||
|
|
||||||
|
return query.run(as_dict=True)
|
||||||
|
|
||||||
|
|
||||||
def get_item_warehouse_batch_map(filters, float_precision):
|
def get_item_warehouse_batch_map(filters, float_precision):
|
||||||
@ -112,7 +110,7 @@ def get_item_warehouse_batch_map(filters, float_precision):
|
|||||||
|
|
||||||
def get_item_details(filters):
|
def get_item_details(filters):
|
||||||
item_map = {}
|
item_map = {}
|
||||||
for d in frappe.db.sql("select name, item_name, description from tabItem", as_dict=1):
|
for d in (frappe.qb.from_("Item").select("name", "item_name", "description")).run(as_dict=True):
|
||||||
item_map.setdefault(d.name, d)
|
item_map.setdefault(d.name, d)
|
||||||
|
|
||||||
return item_map
|
return item_map
|
||||||
|
Loading…
x
Reference in New Issue
Block a user