diff --git a/erpnext/patches/v14_0/set_payroll_cost_centers.py b/erpnext/patches/v14_0/set_payroll_cost_centers.py
index db5baa5..89b305b 100644
--- a/erpnext/patches/v14_0/set_payroll_cost_centers.py
+++ b/erpnext/patches/v14_0/set_payroll_cost_centers.py
@@ -1,31 +1,32 @@
 import frappe
 
+
 def execute():
-    frappe.reload_doc('payroll', 'doctype', 'employee_cost_center')
-    frappe.reload_doc('payroll', 'doctype', 'salary_structure_assignment')
+	frappe.reload_doc('payroll', 'doctype', 'employee_cost_center')
+	frappe.reload_doc('payroll', 'doctype', 'salary_structure_assignment')
 
-    employees = frappe.get_all("Employee", fields=["department", "payroll_cost_center", "name"])
+	employees = frappe.get_all("Employee", fields=["department", "payroll_cost_center", "name"])
 
-    employee_cost_center = {}
-    for d in employees:
-        cost_center = d.payroll_cost_center
-        if not cost_center and d.department:
-            cost_center = frappe.get_cached_value("Department", d.department, "payroll_cost_center")
+	employee_cost_center = {}
+	for d in employees:
+		cost_center = d.payroll_cost_center
+		if not cost_center and d.department:
+			cost_center = frappe.get_cached_value("Department", d.department, "payroll_cost_center")
 
-        if cost_center:
-            employee_cost_center.setdefault(d.name, cost_center)
-    
-    salary_structure_assignments = frappe.get_all("Salary Structure Assignment",
-        filters = {"docstatus": ["!=", 2]},
-        fields=["name", "employee"])
+		if cost_center:
+			employee_cost_center.setdefault(d.name, cost_center)
 
-    for d in salary_structure_assignments:
-        cost_center = employee_cost_center.get(d.employee)
-        if cost_center:
-            assignment = frappe.get_doc("Salary Structure Assignment", d.name)
-            if not assignment.get("payroll_cost_centers"):
-                assignment.append("payroll_cost_centers", {
-                    "cost_center": cost_center,
-                    "percentage": 100
-                })
-                assignment.save()
\ No newline at end of file
+	salary_structure_assignments = frappe.get_all("Salary Structure Assignment",
+		filters = {"docstatus": ["!=", 2]},
+		fields=["name", "employee"])
+
+	for d in salary_structure_assignments:
+		cost_center = employee_cost_center.get(d.employee)
+		if cost_center:
+			assignment = frappe.get_doc("Salary Structure Assignment", d.name)
+			if not assignment.get("payroll_cost_centers"):
+				assignment.append("payroll_cost_centers", {
+					"cost_center": cost_center,
+					"percentage": 100
+				})
+				assignment.save()
\ No newline at end of file
diff --git a/erpnext/payroll/doctype/employee_cost_center/employee_cost_center.py b/erpnext/payroll/doctype/employee_cost_center/employee_cost_center.py
index 91bcc21..6c5be97 100644
--- a/erpnext/payroll/doctype/employee_cost_center/employee_cost_center.py
+++ b/erpnext/payroll/doctype/employee_cost_center/employee_cost_center.py
@@ -4,5 +4,6 @@
 # import frappe
 from frappe.model.document import Document
 
+
 class EmployeeCostCenter(Document):
 	pass
diff --git a/erpnext/payroll/doctype/payroll_entry/payroll_entry.py b/erpnext/payroll/doctype/payroll_entry/payroll_entry.py
index f61e688..a9a9554 100644
--- a/erpnext/payroll/doctype/payroll_entry/payroll_entry.py
+++ b/erpnext/payroll/doctype/payroll_entry/payroll_entry.py
@@ -234,7 +234,7 @@
 		if not self.employee_cost_centers.get(employee):
 			ss_assignment_name = frappe.db.get_value("Salary Structure Assignment",
 				{"employee": employee, "salary_structure": salary_structure, "docstatus": 1}, 'name')
-		
+
 			if ss_assignment_name:
 				cost_centers = dict(frappe.get_all("Employee Cost Center", {"parent": ss_assignment_name},
 					["cost_center", "percentage"], as_list=1))
@@ -244,7 +244,7 @@
 						default_cost_center = frappe.get_cached_value("Department", department, "payroll_cost_center")
 					if not default_cost_center:
 						default_cost_center = self.cost_center
-						
+
 					cost_centers = {
 						default_cost_center: 100
 					}
diff --git a/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py b/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py
index e88a2ca..4f097fa 100644
--- a/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py
+++ b/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py
@@ -131,14 +131,14 @@
 				frappe.db.set_value("Company", "_Test Company", "default_payroll_payable_account",
 					"_Test Payroll Payable - _TC")
 		currency=frappe.db.get_value("Company", "_Test Company", "default_currency")
-		
+
 		make_salary_structure("_Test Salary Structure 1", "Monthly", employee1, company="_Test Company", currency=currency, test_tax=False)
 		ss = make_salary_structure("_Test Salary Structure 2", "Monthly", employee2, company="_Test Company", currency=currency, test_tax=False)
 
 		# update cost centers in salary structure assignment for employee2
 		ssa = frappe.db.get_value("Salary Structure Assignment",
 			{"employee": employee2, "salary_structure": ss.name, "docstatus": 1}, 'name')
-		
+
 		ssa_doc = frappe.get_doc("Salary Structure Assignment", ssa)
 		ssa_doc.payroll_cost_centers = []
 		ssa_doc.append("payroll_cost_centers", {
diff --git a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py
index a7cee45..8359478 100644
--- a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py
+++ b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py
@@ -5,7 +5,7 @@
 import frappe
 from frappe import _
 from frappe.model.document import Document
-from frappe.utils import getdate, flt
+from frappe.utils import flt, getdate
 
 
 class DuplicateAssignment(frappe.ValidationError): pass
@@ -54,7 +54,7 @@
 						"account_name": _("Payroll Payable"), "company": self.company, "account_currency": frappe.db.get_value(
 							"Company", self.company, "default_currency"), "is_group": 0})
 			self.payroll_payable_account = payroll_payable_account
-	
+
 	@frappe.whitelist()
 	def set_payroll_cost_centers(self):
 		self.payroll_cost_centers = []
@@ -69,7 +69,7 @@
 		payroll_cost_center = frappe.db.get_value("Employee", self.employee, "payroll_cost_center")
 		if not payroll_cost_center and self.department:
 			payroll_cost_center = frappe.db.get_value("Department", self.department, "payroll_cost_center")
-		
+
 		return payroll_cost_center
 
 	def validate_cost_center_distribution(self):
@@ -77,8 +77,7 @@
 			total_percentage = sum([flt(d.percentage) for d in self.get("payroll_cost_centers", [])])
 			if total_percentage != 100:
 				frappe.throw(_("Total percentage against cost centers should be 100"))
-			
-			
+
 
 def get_assigned_salary_structure(employee, on_date):
 	if not employee or not on_date:
@@ -93,6 +92,7 @@
 		})
 	return salary_structure[0][0] if salary_structure else None
 
+
 @frappe.whitelist()
 def get_employee_currency(employee):
 	employee_currency = frappe.db.get_value('Salary Structure Assignment', {'employee': employee}, 'currency')
