mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-01 11:19:09 +00:00
refactor: rewrite Warehouse wise Item Balance Age and Value Report queries in QB
(cherry picked from commit 8103856a41)
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
from frappe.query_builder.functions import Count
|
||||||
from frappe.utils import flt
|
from frappe.utils import flt
|
||||||
|
|
||||||
from erpnext.stock.report.stock_ageing.stock_ageing import FIFOSlots, get_average_age
|
from erpnext.stock.report.stock_ageing.stock_ageing import FIFOSlots, get_average_age
|
||||||
@@ -98,7 +99,7 @@ def get_columns(filters):
|
|||||||
|
|
||||||
def validate_filters(filters):
|
def validate_filters(filters):
|
||||||
if not (filters.get("item_code") or filters.get("warehouse")):
|
if not (filters.get("item_code") or filters.get("warehouse")):
|
||||||
sle_count = flt(frappe.db.sql("""select count(name) from `tabStock Ledger Entry`""")[0][0])
|
sle_count = flt(frappe.qb.from_("Stock Ledger Entry").select(Count("name")).run()[0][0])
|
||||||
if sle_count > 500000:
|
if sle_count > 500000:
|
||||||
frappe.throw(_("Please set filter based on Item or Warehouse"))
|
frappe.throw(_("Please set filter based on Item or Warehouse"))
|
||||||
if not filters.get("company"):
|
if not filters.get("company"):
|
||||||
@@ -108,25 +109,16 @@ def validate_filters(filters):
|
|||||||
def get_warehouse_list(filters):
|
def get_warehouse_list(filters):
|
||||||
from frappe.core.doctype.user_permission.user_permission import get_permitted_documents
|
from frappe.core.doctype.user_permission.user_permission import get_permitted_documents
|
||||||
|
|
||||||
condition = ""
|
wh = frappe.qb.DocType("Warehouse")
|
||||||
user_permitted_warehouse = get_permitted_documents("Warehouse")
|
query = frappe.qb.from_(wh).select(wh.name).where(wh.is_group == 0)
|
||||||
value = ()
|
|
||||||
if user_permitted_warehouse:
|
|
||||||
condition = "and name in %s"
|
|
||||||
value = set(user_permitted_warehouse)
|
|
||||||
elif not user_permitted_warehouse and filters.get("warehouse"):
|
|
||||||
condition = "and name = %s"
|
|
||||||
value = filters.get("warehouse")
|
|
||||||
|
|
||||||
return frappe.db.sql(
|
user_permitted_warehouse = get_permitted_documents("Warehouse")
|
||||||
"""select name
|
if user_permitted_warehouse:
|
||||||
from `tabWarehouse` where is_group = 0
|
query = query.where(wh.name.isin(set(user_permitted_warehouse)))
|
||||||
{condition}""".format(
|
elif filters.get("warehouse"):
|
||||||
condition=condition
|
query = query.where(wh.name == filters.get("warehouse"))
|
||||||
),
|
|
||||||
value,
|
return query.run(as_dict=True)
|
||||||
as_dict=1,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def add_warehouse_column(columns, warehouse_list):
|
def add_warehouse_column(columns, warehouse_list):
|
||||||
|
|||||||
Reference in New Issue
Block a user