use validate value method to validate valuation rate should be greater than 0 in stock entry
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index e5e53f2..6ca804e 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -17,7 +17,8 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, sendmail
+from webnotes.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate
+from webnotes.utils.email_lib import sendmail
 from webnotes.utils import comma_and
 from webnotes.model.doc import make_autoname
 from webnotes.model.bean import getlist
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 05d7460..278c283 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -207,9 +207,8 @@
 		
 	def validate_incoming_rate(self):
 		for d in getlist(self.doclist, 'mtn_details'):
-			if not flt(d.incoming_rate) and d.t_warehouse:
-				msgprint("Rate is mandatory for Item: %s at row %s" % (d.item_code, d.idx),
-					raise_exception=1)
+			if d.t_warehouse:
+				self.validate_value("incoming_rate", ">", 0, d)
 					
 	def validate_bom(self):
 		for d in getlist(self.doclist, 'mtn_details'):