diff --git a/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py b/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py index 48494247595..32711b2fce0 100644 --- a/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py +++ b/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py @@ -11,7 +11,6 @@ def execute(filters=None): columns = get_columns() iwq_map = get_item_warehouse_quantity_map() item_map = get_item_details() - data = [] for sbom, warehouse in iwq_map.items(): total = 0 @@ -20,7 +19,7 @@ def execute(filters=None): for wh, item_qty in warehouse.items(): total += 1 row = [sbom, item_map.get(sbom).item_name, item_map.get(sbom).description, - item_map.get(sbom).stock_uom, wh] + item_map.get(sbom).stock_uom, wh] available_qty = item_qty total_qty += flt(available_qty) row += [available_qty] @@ -30,54 +29,38 @@ def execute(filters=None): if (total == len(warehouse)): row = ["", "", "Total", "", "", total_qty] data.append(row) - return columns, data - + def get_columns(): columns = ["Item Code:Link/Item:100", "Item Name::100", "Description::120", \ - "UOM:Link/UOM:80", "Warehouse:Link/Warehouse:100", "Quantity::100"] + "UOM:Link/UOM:80", "Warehouse:Link/Warehouse:100", "Quantity::100"] return columns -def get_product_bundle_items(): - sbom_item_map = {} - for sbom in frappe.db.sql("""select pb.new_item_code as parent, pbi.item_code, pbi.qty - from `tabProduct Bundle Item` as pbi, `tabProduct Bundle` as pb - where pb.docstatus < 2 and pb.name = pbi.parent""", as_dict=1): - sbom_item_map.setdefault(sbom.parent, {}).setdefault(sbom.item_code, sbom.qty) - - return sbom_item_map - def get_item_details(): item_map = {} - for item in frappe.db.sql("""select name, item_name, description, stock_uom - from `tabItem`""", as_dict=1): - item_map.setdefault(item.name, item) - + for item in frappe.db.sql("""SELECT name, item_name, description, stock_uom + from `tabItem`""", as_dict=1): + item_map.setdefault(item.name, item) return item_map -def get_item_warehouse_quantity(): - iwq_map = {} - bin = frappe.db.sql("""select item_code, warehouse, actual_qty from `tabBin` - where actual_qty > 0""") - for item, wh, qty in bin: - iwq_map.setdefault(item, {}).setdefault(wh, qty) - - return iwq_map - def get_item_warehouse_quantity_map(): query = """SELECT parent, warehouse, MIN(qty) AS qty FROM (SELECT b.parent, bi.item_code, bi.warehouse, sum(bi.projected_qty) / b.qty AS qty - FROM tabBin AS bi, (SELECT b.parent, b.item_code, b.qty, w.name - FROM `tabProduct Bundle Item` b, `tabWarehouse` w) AS b + FROM tabBin AS bi, (SELECT pb.new_item_code as parent, b.item_code, b.qty, w.name + FROM `tabProduct Bundle Item` b, `tabWarehouse` w, + `tabProduct Bundle` pb + where b.parent = pb.name) AS b WHERE bi.item_code = b.item_code AND bi.warehouse = b.name GROUP BY b.parent, b.item_code, bi.warehouse UNION ALL SELECT b.parent, b.item_code, b.name, 0 AS qty - FROM (SELECT b.parent, b.item_code, b.qty, w.name - FROM `tabProduct Bundle Item` b, `tabWarehouse` w) AS b + FROM (SELECT pb.new_item_code as parent, b.item_code, b.qty, w.name + FROM `tabProduct Bundle Item` b, `tabWarehouse` w, + `tabProduct Bundle` pb + where b.parent = pb.name) AS b WHERE NOT EXISTS(SELECT * FROM `tabBin` AS bi WHERE bi.item_code = b.item_code @@ -92,4 +75,4 @@ def get_item_warehouse_quantity_map(): last_sbom = line.get("parent") actual_dict = sbom_map.setdefault(last_sbom, {}) actual_dict.setdefault(line.get("warehouse"), line.get("qty")) - return sbom_map + return sbom_map \ No newline at end of file