Merge pull request #40848 from rohitwaghchaure/fixed-12763
fix: group warehouse added in the stock reconciliation
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 913051a..ccd7f64 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -1021,7 +1021,9 @@
@frappe.whitelist()
def get_items(warehouse, posting_date, posting_time, company, item_code=None, ignore_empty_stock=False):
ignore_empty_stock = cint(ignore_empty_stock)
- items = [frappe._dict({"item_code": item_code, "warehouse": warehouse})]
+ items = []
+ if item_code and warehouse:
+ items = get_item_and_warehouses(item_code, warehouse)
if not item_code:
items = get_items_for_stock_reco(warehouse, company)
@@ -1066,6 +1068,20 @@
return res
+def get_item_and_warehouses(item_code, warehouse):
+ from frappe.utils.nestedset import get_descendants_of
+
+ items = []
+ if frappe.get_cached_value("Warehouse", warehouse, "is_group"):
+ childrens = get_descendants_of("Warehouse", warehouse, ignore_permissions=True, order_by="lft")
+ for ch_warehouse in childrens:
+ items.append(frappe._dict({"item_code": item_code, "warehouse": ch_warehouse}))
+ else:
+ items = [frappe._dict({"item_code": item_code, "warehouse": warehouse})]
+
+ return items
+
+
def get_items_for_stock_reco(warehouse, company):
lft, rgt = frappe.db.get_value("Warehouse", warehouse, ["lft", "rgt"])
items = frappe.db.sql(
@@ -1080,7 +1096,7 @@
and i.is_stock_item = 1
and i.has_variants = 0
and exists(
- select name from `tabWarehouse` where lft >= {lft} and rgt <= {rgt} and name = bin.warehouse
+ select name from `tabWarehouse` where lft >= {lft} and rgt <= {rgt} and name = bin.warehouse and is_group = 0
)
""",
as_dict=1,
@@ -1095,7 +1111,7 @@
where
i.name = id.parent
and exists(
- select name from `tabWarehouse` where lft >= %s and rgt <= %s and name=id.default_warehouse
+ select name from `tabWarehouse` where lft >= %s and rgt <= %s and name=id.default_warehouse and is_group = 0
)
and i.is_stock_item = 1
and i.has_variants = 0
@@ -1157,7 +1173,7 @@
frappe._dict(
{
"item_code": row[0],
- "warehouse": warehouse,
+ "warehouse": row[3],
"qty": row[8],
"item_name": row[1],
"batch_no": row[4],