fix: all warehouse filter for the stock report (backport #42584) (#42604)

fix: all warehouse filter for the stock report

(cherry picked from commit a4311e345d)

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
This commit is contained in:
mergify[bot]
2024-08-03 09:02:25 +05:30
committed by GitHub
parent 2de86eb0f4
commit 830b95bdcb
2 changed files with 19 additions and 11 deletions

View File

@@ -465,10 +465,13 @@ class FIFOSlots:
) )
) )
for field in ["item_code", "warehouse"]: for field in ["item_code"]:
if self.filters.get(field): if self.filters.get(field):
query = query.where(bundle[field] == self.filters.get(field)) query = query.where(bundle[field] == self.filters.get(field))
if self.filters.get("warehouse"):
query = self.__get_warehouse_conditions(bundle, query)
bundle_wise_serial_nos = frappe._dict({}) bundle_wise_serial_nos = frappe._dict({})
for bundle_name, serial_no in query.run(): for bundle_name, serial_no in query.run():
bundle_wise_serial_nos.setdefault(bundle_name, []).append(serial_no) bundle_wise_serial_nos.setdefault(bundle_name, []).append(serial_no)

View File

@@ -114,18 +114,23 @@ 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 if not filters.get("warehouse"):
return frappe.get_all(
"Warehouse",
filters={"company": filters.get("company"), "is_group": 0},
fields=["name"],
order_by="name",
)
wh = frappe.qb.DocType("Warehouse") warehouse = frappe.qb.DocType("Warehouse")
query = frappe.qb.from_(wh).select(wh.name).where(wh.is_group == 0) lft, rgt = frappe.db.get_value("Warehouse", filters.get("warehouse"), ["lft", "rgt"])
user_permitted_warehouse = get_permitted_documents("Warehouse") return (
if user_permitted_warehouse: frappe.qb.from_(warehouse)
query = query.where(wh.name.isin(set(user_permitted_warehouse))) .select("name")
elif filters.get("warehouse"): .where((warehouse.lft >= lft) & (warehouse.rgt <= rgt))
query = query.where(wh.name == filters.get("warehouse")) .run(as_dict=True)
)
return query.run(as_dict=True)
def add_warehouse_column(columns, warehouse_list): def add_warehouse_column(columns, warehouse_list):