test case
diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.js b/erpnext/hr/doctype/payroll_entry/payroll_entry.js
index 5de8228..cc10d70 100644
--- a/erpnext/hr/doctype/payroll_entry/payroll_entry.js
+++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
 
+var in_progress = false;
+
 frappe.ui.form.on('Payroll Entry', {
 	onload: function (frm) {
 		frm.doc.posting_date = frappe.datetime.nowdate();
@@ -35,23 +37,23 @@
 					"is_group": 0,
 					"company": frm.doc.company
 				}
-			}
+			};
 		}),
-			frm.set_query("cost_center", function () {
-				return {
-					filters: {
-						"is_group": 0,
-						company: frm.doc.company
-					}
+		frm.set_query("cost_center", function () {
+			return {
+				filters: {
+					"is_group": 0,
+					company: frm.doc.company
 				}
-			}),
-			frm.set_query("project", function () {
-				return {
-					filters: {
-						company: frm.doc.company
-					}
+			};
+		}),
+		frm.set_query("project", function () {
+			return {
+				filters: {
+					company: frm.doc.company
 				}
-			})
+			};
+		});
 	},
 
 	payroll_frequency: function (frm) {
@@ -63,7 +65,7 @@
 			frm.trigger("set_end_date");
 		}else{
 			// reset flag
-			in_progress = false
+			in_progress = false;
 		}
 	},
 
@@ -71,7 +73,6 @@
 		frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet);
 	},
 
-
 	set_start_end_dates: function (frm) {
 		if (!frm.doc.salary_slip_based_on_timesheet) {
 			frappe.call({
@@ -87,7 +88,7 @@
 						frm.set_value('end_date', r.message.end_date);
 					}
 				}
-			})
+			});
 		}
 	},
 
@@ -109,19 +110,19 @@
 
 // Create salary slips
 
-cur_frm.cscript.custom_before_submit = function (doc, cdt, cdn) {
+cur_frm.cscript.custom_before_submit = function (doc) {
 	return $c('runserverobj', { 'method': 'create_salary_slips', 'docs': doc });
-}
+};
 
 // Submit salary slips
 
-submit_salary_slip = function (frm, cdt, cdn) {
-	doc = frm.doc;
+let submit_salary_slip = function (frm) {
+	var doc = frm.doc;
 	return $c('runserverobj', { 'method': 'submit_salary_slips', 'docs': doc });
 }
 
-make_bank_entry = function (frm, cdt, cdn) {
-	doc = frm.doc;
+let make_bank_entry = function (frm) {
+	var doc = frm.doc;
 	if (doc.company && doc.start_date && doc.end_date) {
 		return frappe.call({
 			doc: cur_frm.doc,
diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.py b/erpnext/hr/doctype/payroll_entry/payroll_entry.py
index ef9e4ae..a77df95 100644
--- a/erpnext/hr/doctype/payroll_entry/payroll_entry.py
+++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.py
@@ -112,8 +112,9 @@
 		return self.create_log(ss_list)
 
 	def create_log(self, ss_list):
-		if not ss_list or len(ss_list) < 1: 
+		if not ss_list or len(ss_list) < 1:
 			frappe.throw(_("No employee for the above selected criteria OR salary slip already created"))
+		return
 
 	def get_sal_slip_list(self, ss_status, as_dict=False):
 		"""
@@ -147,7 +148,7 @@
 			ss_dict["Total Pay"] = fmt_money(ss_obj.net_pay,
 				currency = frappe.defaults.get_global_default("currency"))	
 			ss_dict["Salary Slip"] = self.format_as_links(ss_obj.name)[0]
-			
+
 			if ss_obj.net_pay<0:
 				not_submitted_ss.append(ss_dict)
 			else:
@@ -173,7 +174,7 @@
 				Possible reasons: <br>\
 				1. Net pay is less than 0. <br>\
 				2. Company Email Address specified in employee master is not valid. <br>")
-
+		return
 	def format_as_links(self, salary_slip):
 		return ['<a href="#Form/Salary Slip/{0}">{0}</a>'.format(salary_slip)]
 
@@ -188,9 +189,9 @@
 			where t1.docstatus = 1 and start_date >= %s and end_date <= %s %s
 			""" % ('%s', '%s', cond), (self.start_date, self.end_date), as_dict=True)
 		return totals[0]
-	
+
 	def get_loan_accounts(self):
-		loan_accounts = frappe.get_all("Employee Loan", fields=["employee_loan_account", "interest_income_account"], 
+		loan_accounts = frappe.get_all("Employee Loan", fields=["employee_loan_account", "interest_income_account"],
 						filters = {"company": self.company, "docstatus":1})
 		if loan_accounts:
 			return loan_accounts[0]
@@ -237,7 +238,7 @@
 			frappe.throw(_("Please set Default Payroll Payable Account in Company {0}")
 				.format(self.company))
 
-		return payroll_payable_account	
+		return payroll_payable_account
 
 	def make_accural_jv_entry(self):
 		self.check_permission('write')
@@ -353,7 +354,7 @@
 			frappe.db.set_value("Salary Slip", ss_obj.name, "journal_entry", jv_name)
 
 	def set_start_end_dates(self):
-		self.update(get_start_end_dates(self.payroll_frequency, 
+		self.update(get_start_end_dates(self.payroll_frequency,
 			self.start_date or self.posting_date, self.company))
 
 @frappe.whitelist()
@@ -414,9 +415,7 @@
 def get_month_details(year, month):
 	ysd = frappe.db.get_value("Fiscal Year", year, "year_start_date")
 	if ysd:
-		from dateutil.relativedelta import relativedelta
 		import calendar, datetime
-		frappe.msgprint
 		diff_mnt = cint(month)-cint(ysd.month)
 		if diff_mnt<0:
 			diff_mnt = 12-int(ysd.month)+cint(month)
diff --git a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.js b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.js
index f1b82e0..69599bd 100644
--- a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.js
+++ b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.js
@@ -1,38 +1,38 @@
-QUnit.module('HR')
+QUnit.module('HR');
 
 QUnit.test("test: Payroll Entry", function (assert) {
 	assert.expect(5);
 	let done = assert.async();
 
 	frappe.run_serially([
-		() => {	
+		() => {
 			return frappe.tests.make('Payroll Entry', [
 				{company: 'For Testing'},
 				{posting_date: frappe.datetime.add_days(frappe.datetime.nowdate(), 0)},
 				{payroll_frequency: 'Monthly'},
-				// {start_date: },
 				{cost_center: 'Main - '+frappe.get_abbr(frappe.defaults.get_default("Company"))}
 			]);
 		},
 
+		() => frappe.timeout(1),
+		() => {
+			assert.equal(cur_frm.doc.company, 'For Testing');
+			assert.equal(cur_frm.doc.posting_date, frappe.datetime.add_days(frappe.datetime.nowdate(), 0));
+			assert.equal(cur_frm.doc.cost_center, 'Main - FT');
+		},
+
 		() => frappe.click_button('Submit'),
 		() => frappe.timeout(1),
 		() => frappe.click_button('Yes'),
 		() => frappe.timeout(2),
 
-		() => {
-			assert.equal(cur_frm.doc.company, 'For Testing');
-			assert.equal(cur_frm.doc.posting_date, frappe.datetime.add_days(frappe.datetime.nowdate(), 0));
-			assert.equal(cur_frm.doc.cost_center, 'Main - FT');
-		},
-
 		() => frappe.click_button('View Salary Slip'),
 		() => frappe.timeout(2),
 		() => assert.equal(cur_list.data[0].docstatus, 0),
 
-		() => frappe.set_route('Form', 'Payroll Entry', 'Payroll 0041'),
+		() => frappe.set_route('Form', 'Payroll Entry', 'Payroll 0001'),
 		() => frappe.click_button('Submit Salary Slip'),
-		() => frappe.timeout(2),
+		() => frappe.timeout(3),
 
 		() => frappe.click_button('Close'),
 		() => frappe.timeout(1),
@@ -40,7 +40,7 @@
 		() => frappe.click_button('View Salary Slip'),
 		() => frappe.timeout(2),
 		() => {
-			 assert.ok(cur_list.data[0].docstatus == 1, "Salary slip submitted");
+			assert.ok(cur_list.data[0].docstatus == 1, "Salary slip submitted");
 		},
 
 		() => done()
diff --git a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
index 47aba56..163a809 100644
--- a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
+++ b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
@@ -3,7 +3,6 @@
 # See license.txt
 from __future__ import unicode_literals
 
-import frappe
 import unittest
 
 class TestPayrollEntry(unittest.TestCase):
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index edf1d78..a5dcbcb 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -78,6 +78,7 @@
 erpnext/hr/doctype/loan_type/test_loan_type.js
 erpnext/hr/doctype/employee_loan_application/test_employee_loan_application.js
 erpnext/hr/doctype/employee_loan/test_employee_loan.js
+erpnext/hr/doctype/payroll_entry/test_payroll_entry.js
 erpnext/buying/doctype/supplier/test_supplier.js
 erpnext/buying/doctype/request_for_quotation/tests/test_request_for_quotation.js
 erpnext/buying/doctype/supplier_quotation/tests/test_supplier_quotation.js