From ac6d11eb3ce96cf72c9f1ade44fc377ed0ea8949 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 10 Aug 2015 19:13:30 +0530 Subject: [PATCH] minor improvements --- .../stock/doctype/stock_entry/stock_entry.py | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 42dd409afb..62f5b88d9a 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -604,27 +604,39 @@ class StockEntry(StockController): from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict # item dict = { item_code: {qty, description, stock_uom} } - item_dict = get_bom_items_as_dict(self.bom_no, self.company, qty=qty, fetch_exploded = self.use_multi_level_bom) + item_dict = get_bom_items_as_dict(self.bom_no, self.company, qty=qty, + fetch_exploded = self.use_multi_level_bom) for item in item_dict.values(): item.from_warehouse = self.from_warehouse or item.default_warehouse return item_dict def get_transfered_raw_materials(self): - raw_materials = frappe.db.sql("""select item_name, item_code, sum(qty) as qty, sed.t_warehouse as warehouse, - description, stock_uom, expense_account, cost_center from `tabStock Entry` se,`tabStock Entry Detail` sed - where se.name = sed.parent and se.docstatus=1 and se.purpose='Material Transfer for Manufacture' and - se.production_order= %s and ifnull(sed.t_warehouse, '') != '' group by sed.item_code, sed.t_warehouse""", - self.production_order, as_dict=1) + transferred_materials = frappe.db.sql(""" + select + item_name, item_code, sum(qty) as qty, sed.t_warehouse as warehouse, + description, stock_uom, expense_account, cost_center + from `tabStock Entry` se,`tabStock Entry Detail` sed + where + se.name = sed.parent and se.docstatus=1 and se.purpose='Material Transfer for Manufacture' + and se.production_order= %s and ifnull(sed.t_warehouse, '') != '' + group by sed.item_code, sed.t_warehouse + """, self.production_order, as_dict=1) - transfered_materials = frappe.db.sql("""select item_code, sed.s_warehouse as warehouse, sum(qty) as qty from `tabStock Entry` se, - `tabStock Entry Detail` sed where se.name = sed.parent and se.docstatus=1 and - se.purpose='Manufacture' and se.production_order= %s and ifnull(sed.s_warehouse, '') != '' - group by sed.item_code, sed.s_warehouse""", self.production_order, as_dict=1) + materials_already_backflushed = frappe.db.sql(""" + select + item_code, sed.s_warehouse as warehouse, sum(qty) as qty + from + `tabStock Entry` se, `tabStock Entry Detail` sed + where + se.name = sed.parent and se.docstatus=1 and se.purpose='Manufacture' + and se.production_order= %s and ifnull(sed.s_warehouse, '') != '' + group by sed.item_code, sed.s_warehouse + """, self.production_order, as_dict=1) - transfered_qty= {} - for d in transfered_materials: - transfered_qty.setdefault(d.item_code,[]).append({d.warehouse: d.qty}) + backflushed_materials= {} + for d in materials_already_backflushed: + backflushed_materials.setdefault(d.item_code,[]).append({d.warehouse: d.qty}) po_qty = frappe.db.sql("""select qty, produced_qty, material_transferred_for_manufacturing from `tabProduction Order` where name=%s""", self.production_order, as_dict=1)[0] @@ -632,14 +644,14 @@ class StockEntry(StockController): produced_qty = flt(po_qty.produced_qty) trans_qty = flt(po_qty.material_transferred_for_manufacturing) - for item in raw_materials: + for item in transferred_materials: qty= item.qty if manufacturing_qty > (produced_qty + flt(self.fg_completed_qty)): qty = (qty/trans_qty) * flt(self.fg_completed_qty) - elif transfered_qty.get(item.item_code): - for d in transfered_qty.get(item.item_code): + elif backflushed_materials.get(item.item_code): + for d in backflushed_materials.get(item.item_code): if d.get(item.warehouse): qty-= d.get(item.warehouse)