Negative stock allowed for perpetual inventory. Blocked in specific case
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 66d5792..cf57658 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -277,6 +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
 			else:
 				rm.rate = bom_item.rate