Merge pull request #17562 from fproldan/fix_bundlestock
fix: Available Stock for Packing Items error
This commit is contained in:
@@ -11,7 +11,6 @@ def execute(filters=None):
|
|||||||
columns = get_columns()
|
columns = get_columns()
|
||||||
iwq_map = get_item_warehouse_quantity_map()
|
iwq_map = get_item_warehouse_quantity_map()
|
||||||
item_map = get_item_details()
|
item_map = get_item_details()
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
for sbom, warehouse in iwq_map.items():
|
for sbom, warehouse in iwq_map.items():
|
||||||
total = 0
|
total = 0
|
||||||
@@ -30,7 +29,6 @@ def execute(filters=None):
|
|||||||
if (total == len(warehouse)):
|
if (total == len(warehouse)):
|
||||||
row = ["", "", "Total", "", "", total_qty]
|
row = ["", "", "Total", "", "", total_qty]
|
||||||
data.append(row)
|
data.append(row)
|
||||||
|
|
||||||
return columns, data
|
return columns, data
|
||||||
|
|
||||||
def get_columns():
|
def get_columns():
|
||||||
@@ -39,45 +37,30 @@ def get_columns():
|
|||||||
|
|
||||||
return columns
|
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():
|
def get_item_details():
|
||||||
item_map = {}
|
item_map = {}
|
||||||
for item in frappe.db.sql("""select name, item_name, description, stock_uom
|
for item in frappe.db.sql("""SELECT name, item_name, description, stock_uom
|
||||||
from `tabItem`""", as_dict=1):
|
from `tabItem`""", as_dict=1):
|
||||||
item_map.setdefault(item.name, item)
|
item_map.setdefault(item.name, item)
|
||||||
|
|
||||||
return item_map
|
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():
|
def get_item_warehouse_quantity_map():
|
||||||
query = """SELECT parent, warehouse, MIN(qty) AS qty
|
query = """SELECT parent, warehouse, MIN(qty) AS qty
|
||||||
FROM (SELECT b.parent, bi.item_code, bi.warehouse,
|
FROM (SELECT b.parent, bi.item_code, bi.warehouse,
|
||||||
sum(bi.projected_qty) / b.qty AS qty
|
sum(bi.projected_qty) / b.qty AS qty
|
||||||
FROM tabBin AS bi, (SELECT b.parent, b.item_code, b.qty, w.name
|
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) AS b
|
FROM `tabProduct Bundle Item` b, `tabWarehouse` w,
|
||||||
|
`tabProduct Bundle` pb
|
||||||
|
where b.parent = pb.name) AS b
|
||||||
WHERE bi.item_code = b.item_code
|
WHERE bi.item_code = b.item_code
|
||||||
AND bi.warehouse = b.name
|
AND bi.warehouse = b.name
|
||||||
GROUP BY b.parent, b.item_code, bi.warehouse
|
GROUP BY b.parent, b.item_code, bi.warehouse
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT b.parent, b.item_code, b.name, 0 AS qty
|
SELECT b.parent, b.item_code, b.name, 0 AS qty
|
||||||
FROM (SELECT b.parent, b.item_code, b.qty, w.name
|
FROM (SELECT pb.new_item_code as parent, b.item_code, b.qty, w.name
|
||||||
FROM `tabProduct Bundle Item` b, `tabWarehouse` w) AS b
|
FROM `tabProduct Bundle Item` b, `tabWarehouse` w,
|
||||||
|
`tabProduct Bundle` pb
|
||||||
|
where b.parent = pb.name) AS b
|
||||||
WHERE NOT EXISTS(SELECT *
|
WHERE NOT EXISTS(SELECT *
|
||||||
FROM `tabBin` AS bi
|
FROM `tabBin` AS bi
|
||||||
WHERE bi.item_code = b.item_code
|
WHERE bi.item_code = b.item_code
|
||||||
|
|||||||
Reference in New Issue
Block a user