Guess valuation rate in case of negative stock
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index cf57658..fc912c9 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -269,7 +269,7 @@
 			# get raw materials rate
 			if self.doctype == "Purchase Receipt":
 				from erpnext.stock.utils import get_incoming_rate
-				item_rate = get_incoming_rate({
+				rm.rate = get_incoming_rate({
 					"item_code": bom_item.item_code,
 					"warehouse": self.supplier_warehouse,
 					"posting_date": self.posting_date,
@@ -277,10 +277,9 @@
 					"qty": -1 * required_qty,
 					"serial_no": rm.serial_no
 				})
-				if not item_rate:
-					from erpnext.controllers.stock_controller import get_valuation_rate
-					item_rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse)
-				rm.rate = item_rate or bom_item.rate
+				if not rm.rate:
+					from erpnext.stock.stock_ledger import get_valuation_rate
+					rm.rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse)
 			else:
 				rm.rate = bom_item.rate