From 7f03e24c5518fefe6a939e34f26bf6da0a34456f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 29 May 2014 18:53:09 +0530 Subject: [PATCH] Valuation rate of raw materials in BOM. #1688 --- erpnext/manufacturing/doctype/bom/bom.py | 29 ++++++++---------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index 13bf0875e4..56bff32f8e 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import frappe -from frappe.utils import cint, cstr, flt, now, nowdate +from frappe.utils import cint, cstr, flt from frappe import _ from frappe.model.document import Document @@ -132,26 +132,15 @@ class BOM(Document): return bom and bom[0]['unit_cost'] or 0 def get_valuation_rate(self, args): - """ Get average valuation rate of relevant warehouses - as per valuation method (MAR/FIFO) - as on costing date - """ - from erpnext.stock.utils import get_incoming_rate - posting_date, posting_time = nowdate(), now().split()[1] - warehouse = frappe.db.sql("select warehouse from `tabBin` where item_code = %s", args['item_code']) - rate = [] - for wh in warehouse: - r = get_incoming_rate({ - "item_code": args.get("item_code"), - "warehouse": wh[0], - "posting_date": posting_date, - "posting_time": posting_time, - "qty": args.get("qty") or 0 - }) - if r: - rate.append(r) + """ Get weighted average of valuation rate from all warehouses """ - return rate and flt(sum(rate))/len(rate) or 0 + total_qty, total_value = 0, 0 + for d in frappe.db.sql("""select actual_qty, stock_value from `tabBin` + where item_code=%s and actual_qty > 0""", args['item_code'], as_dict=1): + total_qty += flt(d.actual_qty) + total_value += flt(d.stock_value) + + return total_value / total_qty def manage_default_bom(self): """ Uncheck others if current one is selected as default,