From 457515fc08866f0de238ff3511cac0192624819c Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 18 Jun 2014 13:10:10 +0530 Subject: [PATCH] Stock Entry: get fg item incoming rate if bom is mentioned --- .../stock/doctype/stock_entry/stock_entry.py | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 3df78c8def..1dc624f21e 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -217,8 +217,8 @@ class StockEntry(StockController): Available Qty: {4}, Transfer Qty: {5}""").format(d.idx, d.s_warehouse, self.posting_date, self.posting_time, d.actual_qty, d.transfer_qty)) - # get incoming rate if not d.bom_no: + # set incoming rate if not flt(d.incoming_rate) or d.s_warehouse or self.purpose == "Sales Return": incoming_rate = self.get_incoming_rate(args) if flt(incoming_rate) > 0: @@ -227,15 +227,16 @@ class StockEntry(StockController): d.amount = flt(d.transfer_qty) * flt(d.incoming_rate) raw_material_cost += flt(d.amount) - # set incoming rate for fg item - if self.production_order and self.purpose == "Manufacture/Repack": - for d in self.get("mtn_details"): - if d.bom_no: - if not flt(d.incoming_rate): - bom = frappe.db.get_value("BOM", d.bom_no, ["operating_cost", "quantity"], as_dict=1) - operation_cost_per_unit = flt(bom.operating_cost) / flt(bom.quantity) - d.incoming_rate = operation_cost_per_unit + (raw_material_cost / flt(d.transfer_qty)) - d.amount = flt(d.transfer_qty) * flt(d.incoming_rate) + # bom no exists and purpose is Manufacture/Repack + elif self.purpose == "Manufacture/Repack": + + # set incoming rate for fg item + if not flt(d.incoming_rate): + bom = frappe.db.get_value("BOM", d.bom_no, ["operating_cost", "quantity"], as_dict=1) + operation_cost_per_unit = flt(bom.operating_cost) / flt(bom.quantity) + d.incoming_rate = operation_cost_per_unit + (raw_material_cost / flt(d.transfer_qty)) + + d.amount = flt(d.transfer_qty) * flt(d.incoming_rate) def get_incoming_rate(self, args): incoming_rate = 0