mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-17 17:26:43 +00:00
refactor: rewrite Batch-Wise Balance History Report queries in QB
(cherry picked from commit 1c1f991d2f)
# Conflicts:
# erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.query_builder.functions import IfNull, Sum
|
||||
from frappe.utils import cint, flt, getdate
|
||||
from pypika import functions as fn
|
||||
|
||||
@@ -72,6 +73,7 @@ def get_stock_ledger_entries(filters):
|
||||
if not filters.get("from_date"):
|
||||
frappe.throw(_("'From Date' is required"))
|
||||
|
||||
<<<<<<< HEAD
|
||||
sle = frappe.qb.DocType("Stock Ledger Entry")
|
||||
query = (
|
||||
frappe.qb.from_(sle)
|
||||
@@ -101,6 +103,29 @@ def get_stock_ledger_entries(filters):
|
||||
for field in ["item_code", "batch_no", "company"]:
|
||||
if filters.get(field):
|
||||
query = query.where(sle[field] == filters.get(field))
|
||||
=======
|
||||
if not filters.get("to_date"):
|
||||
frappe.throw(_("'To Date' is required"))
|
||||
|
||||
sle = frappe.qb.DocType("Stock Ledger Entry")
|
||||
query = (
|
||||
frappe.qb.from_(sle)
|
||||
.select(
|
||||
sle.item_code,
|
||||
sle.batch_no,
|
||||
sle.warehouse,
|
||||
sle.posting_date,
|
||||
Sum(sle.actual_qty).as_("actual_qty"),
|
||||
)
|
||||
.where((sle.is_cancelled == 0) & (sle.docstatus < 2) & (IfNull(sle.batch_no, "") != ""))
|
||||
.groupby(sle.voucher_no, sle.batch_no, sle.item_code, sle.warehouse)
|
||||
.orderby(sle.item_code, sle.warehouse)
|
||||
)
|
||||
|
||||
for field in ("item_code", "warehouse", "batch_no", "company"):
|
||||
if filters.get(field):
|
||||
query = query.where(sle[field] == filters[field])
|
||||
>>>>>>> 1c1f991d2f (refactor: rewrite `Batch-Wise Balance History Report` queries in `QB`)
|
||||
|
||||
return query.run(as_dict=True)
|
||||
|
||||
@@ -136,7 +161,9 @@ def get_item_warehouse_batch_map(filters, float_precision):
|
||||
|
||||
def get_item_details(filters):
|
||||
item_map = {}
|
||||
for d in frappe.db.sql("select name, item_name, description, stock_uom from tabItem", as_dict=1):
|
||||
for d in (frappe.qb.from_("Item").select("name", "item_name", "description", "stock_uom")).run(
|
||||
as_dict=1
|
||||
):
|
||||
item_map.setdefault(d.name, d)
|
||||
|
||||
return item_map
|
||||
|
||||
Reference in New Issue
Block a user