diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index 9ed5c76..f2e5a9e 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -32,7 +32,7 @@
 
 cur_frm.cscript.leave_without_pay = function(doc,dt,dn){
 	if (doc.employee && doc.fiscal_year && doc.month) {
-		return $c_obj(doc, 'get_leave_details',doc.leave_without_pay,function(r, rt) {
+		return $c_obj(doc, 'get_leave_details', {"lwp": doc.leave_without_pay}, function(r, rt) {
 			var doc = locals[dt][dn];
 			cur_frm.refresh();
 			calculate_all(doc, dt, dn);
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 818c95e..671fbb8 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -90,14 +90,14 @@
 				start_date = joining_date
 			elif joining_date > month['month_end_date']:
 				return
-		
+				
+		end_date = month['month_end_date']
 		if relieving_date:
 			if relieving_date > start_date and relieving_date < month['month_end_date']:
 				end_date = relieving_date
 			elif relieving_date < month['month_start_date']:
-				frappe.throw(_("Employee relieved on {0} must be set as 'Left'").format(relieving_date))
-		else:
-			end_date = month['month_end_date']
+				frappe.throw(_("Employee relieved on {0} must be set as 'Left'")
+					.format(relieving_date))			
 			
 		payment_days = date_diff(end_date, start_date) + 1
 
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index d712cc9..55295f4 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -10,6 +10,9 @@
 			frm.fields_dict["attributes"].grid.set_column_disp("attribute_value", true);
 		}
 
+		// should never check Private
+		frm.fields_dict["website_image"].df.is_private = 0;
+
 	},
 
 	refresh: function(frm) {
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index dfd281a..6bdafcf 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -47,8 +47,6 @@
 
 		if not self.stock_uom:
 			msgprint(_("Please enter default Unit of Measure"), raise_exception=1)
-		if self.image and not self.website_image:
-			self.website_image = self.image
 
 		self.check_warehouse_is_set_for_stock_item()
 		self.validate_uom()
@@ -68,6 +66,7 @@
 		self.validate_has_variants()
 		self.validate_attributes()
 		self.validate_variant_attributes()
+		self.validate_website_image()
 		self.make_thumbnail()
 
 		if not self.get("__islocal"):
@@ -83,6 +82,29 @@
 		self.update_variants()
 		self.update_template_item()
 
+	def validate_website_image(self):
+		"""Validate if the website image is a public file"""
+		auto_set_website_image = False
+		if not self.website_image and self.image:
+			auto_set_website_image = True
+			self.website_image = self.image
+
+		file = frappe.db.get_value("File", filters={
+			"file_url": self.website_image,
+			"attached_to_doctype": self.doctype,
+			"attached_to_name": self.name
+		}, fieldname=["name", "is_private"], as_dict=True)
+
+		if not file:
+			self.website_image = None
+			if not auto_set_website_image:
+				frappe.msgprint(_("Website Image {0} attached to Item {1} cannot be found").format(self.website_image, self.name))
+
+		elif file.is_private:
+			self.website_image = None
+			if not auto_set_website_image:
+				frappe.msgprint(_("Website Image should be a public file or website URL"))
+
 	def make_thumbnail(self):
 		"""Make a thumbnail of `website_image`"""
 		import requests.exceptions
@@ -383,7 +405,7 @@
 		for d in self.get("reorder_levels"):
 			if d.warehouse_reorder_level and not d.warehouse_reorder_qty:
 				frappe.throw(_("Row #{0}: Please set reorder quantity").format(d.idx))
-					
+
 
 	def validate_warehouse_for_reorder(self):
 		warehouse = []
