diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.json b/erpnext/hr/doctype/salary_slip/salary_slip.json
index 2896f11..e0d0585 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.json
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.json
@@ -1,5 +1,5 @@
 {
- "creation": "2013-01-10 16:34:15.000000", 
+ "creation": "2013-01-10 16:34:15", 
  "docstatus": 0, 
  "doctype": "DocType", 
  "fields": [
@@ -355,7 +355,7 @@
  "icon": "icon-file-text", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-01-20 17:49:18.000000", 
+ "modified": "2014-05-01 04:31:14.543092", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Slip", 
@@ -387,6 +387,12 @@
    "role": "HR Manager", 
    "submit": 1, 
    "write": 1
+  }, 
+  {
+   "permlevel": 0, 
+   "read": 1, 
+   "restricted": 0, 
+   "role": "Employee"
   }
  ]
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index e3f713c..c7b4059 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -1,8 +1,11 @@
 # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
 
-import frappe
 import unittest
+import frappe
+from frappe.utils import today
+from erpnext.hr.doctype.employee.employee import make_salary_structure
+from erpnext.hr.doctype.salary_structure.salary_structure import make_salary_slip
 
 class TestSalarySlip(unittest.TestCase):
 	def setUp(self):
@@ -16,6 +19,7 @@
 
 	def tearDown(self):
 		frappe.db.set_value("HR Settings", "HR Settings", "include_holidays_in_total_working_days", 0)
+		frappe.set_user("Administrator")
 
 	def test_salary_slip_with_holidays_included(self):
 		frappe.db.set_value("HR Settings", "HR Settings", "include_holidays_in_total_working_days", 1)
@@ -42,6 +46,62 @@
 		self.assertEquals(ss.gross_pay, 15000)
 		self.assertEquals(ss.net_pay, 14851.67)
 
+	def test_employee_salary_slip_read_permission(self):
+		self.make_employee("test_employee@example.com")
+		self.make_employee("test_employee_2@example.com")
+
+		salary_slip_test_employee = frappe.get_doc("Salary Slip",
+			self.make_employee_salary_slip("test_employee@example.com"))
+
+		salary_slip_test_employee_2 = frappe.get_doc("Salary Slip",
+			self.make_employee_salary_slip("test_employee_2@example.com"))
+
+		frappe.set_user("test_employee@example.com")
+		self.assertTrue(salary_slip_test_employee.has_permission("read"))
+		self.assertFalse(salary_slip_test_employee_2.has_permission("read"))
+
+	def make_employee(self, user):
+		if not frappe.db.get_value("User", user):
+			frappe.get_doc({
+				"doctype": "User",
+				"email": user,
+				"first_name": user,
+				"new_password": "password",
+				"user_roles": [{"doctype": "UserRole", "role": "Employee"}]
+			}).insert()
+
+		if not frappe.db.get_value("Employee", {"user_id": user}):
+			frappe.get_doc({
+				"doctype": "Employee",
+				"naming_series": "_T-Employee-",
+				"employee_name": user,
+				"user_id": user,
+				"company": "_Test Company",
+				"date_of_birth": "1990-05-08",
+				"date_of_joining": "2013-01-01",
+				"department": "_Test Department 1",
+				"gender": "Female",
+				"status": "Active"
+			}).insert()
+
+	def make_employee_salary_slip(self, user):
+		employee = frappe.db.get_value("Employee", {"user_id": user})
+		salary_structure = frappe.db.get_value("Salary Structure", {"employee": employee})
+		if not salary_structure:
+			salary_structure = make_salary_structure(employee)
+			salary_structure.from_date = today()
+			salary_structure.insert()
+			salary_structure = salary_structure.name
+
+		salary_slip = frappe.db.get_value("Salary Slip", {"employee": employee})
+		if not salary_slip:
+			salary_slip = make_salary_slip(salary_structure)
+			salary_slip.insert()
+			salary_slip.submit()
+			salary_slip = salary_slip.name
+
+		return salary_slip
+
 test_dependencies = ["Leave Application"]
 
 test_records = frappe.get_test_records('Salary Slip')
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index a57a0ce..f46df7a 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -7,8 +7,7 @@
 from frappe.utils import cstr, flt
 from frappe.model.naming import make_autoname
 from frappe import _
-
-
+from frappe.model.mapper import get_mapped_doc
 from frappe.model.document import Document
 
 class SalaryStructure(Document):
@@ -70,11 +69,6 @@
 
 @frappe.whitelist()
 def make_salary_slip(source_name, target_doc=None):
-	return get_mapped_doc(source_name, target_doc).as_dict()
-
-def get_mapped_doc(source_name, target_doc=None):
-	from frappe.model.mapper import get_mapped_doc
-
 	def postprocess(source, target):
 		target.run_method("pull_emp_details")
 		target.run_method("get_leave_details")
