Merge pull request #7791 from nabinhait/pro_order_stock_qty
Build Qty considering quantity for which bom is created
diff --git a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.py b/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.py
index 4bb00a2..6d586dd 100644
--- a/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.py
+++ b/erpnext/manufacturing/report/production_order_stock_report/production_order_stock_report.py
@@ -2,7 +2,7 @@
# For license information, please see license.txt
from __future__ import unicode_literals
-from frappe.utils import flt, cint
+from frappe.utils import cint
import frappe
def execute(filters=None):
@@ -14,38 +14,38 @@
def get_item_list(prod_list, filters):
out = []
- low_price_data = []
- low_supplier = []
-
#Add a row for each item/qty
for prod_order in prod_list:
- bom = frappe.db.get_value("Production Order", prod_order.name, "bom_no")
- warehouse = frappe.db.get_value("Production Order", prod_order.name, "source_warehouse")
- desc = frappe.db.get_value("BOM", bom, "description")
- qty = frappe.db.get_value("Production Order", prod_order.name, "qty")
- produced_value = frappe.db.get_value("Production Order", prod_order.name, "produced_qty")
+ prod_details = frappe.db.get_value("Production Order", prod_order.name,
+ ["bom_no", "source_warehouse", "qty", "produced_qty"], as_dict=1)
+
+ desc = frappe.db.get_value("BOM", prod_details.bom_no, "description")
+
item_list = frappe.db.sql("""SELECT
bom_item.item_code as item_code,
- ifnull(ledger.actual_qty/bom_item.qty,0) as build_qty
+ ifnull(ledger.actual_qty*bom.quantity/bom_item.qty,0) as build_qty
FROM
- `tabBOM Item` AS bom_item
+ `tabBOM` as bom, `tabBOM Item` AS bom_item
LEFT JOIN `tabBin` AS ledger
ON bom_item.item_code = ledger.item_code
AND ledger.warehouse = ifnull(%(warehouse)s,%(filterhouse)s)
WHERE
- bom_item.parent = %(bom)s
+ bom.name = bom_item.parent
+ and bom.name = %(bom)s
GROUP BY
- bom_item.item_code""", {"bom": bom, "warehouse": warehouse, "filterhouse": filters.warehouse}, as_dict=1)
+ bom_item.item_code""",
+ {"bom": prod_details.bom_no, "warehouse": prod_details.source_warehouse,
+ "filterhouse": filters.warehouse}, as_dict=1)
+
stock_qty = 0
count = 0
- buildable_qty = qty
+ buildable_qty = prod_details.qty
for item in item_list:
count = count + 1
- if item.build_qty >= (qty-produced_value):
+ if item.build_qty >= (prod_details.qty - prod_details.produced_qty):
stock_qty = stock_qty + 1
elif buildable_qty >= item.build_qty:
buildable_qty = item.build_qty
-
if count == stock_qty:
build = "Y"
@@ -58,8 +58,8 @@
"req_items": cint(count),
"instock": stock_qty,
"description": desc,
- "bom_no": bom,
- "qty": qty,
+ "bom_no": prod_details.bom_no,
+ "qty": prod_details.qty,
"buildable_qty": buildable_qty,
"ready_to_build": build
})