diff --git a/erpnext/hr/doctype/additional_salary/additional_salary.json b/erpnext/hr/doctype/additional_salary/additional_salary.json
index e669e10..b29b30b 100644
--- a/erpnext/hr/doctype/additional_salary/additional_salary.json
+++ b/erpnext/hr/doctype/additional_salary/additional_salary.json
@@ -60,7 +60,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Company", 
    "length": 0, 
@@ -94,7 +94,7 @@
    "in_filter": 0, 
    "in_global_search": 0, 
    "in_list_view": 1, 
-   "in_standard_filter": 0, 
+   "in_standard_filter": 1, 
    "label": "Employee", 
    "length": 0, 
    "no_copy": 0, 
@@ -107,7 +107,7 @@
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 0, 
+   "search_index": 1, 
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
@@ -127,7 +127,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Employee Name", 
    "length": 0, 
@@ -161,7 +161,7 @@
    "in_filter": 0, 
    "in_global_search": 0, 
    "in_list_view": 1, 
-   "in_standard_filter": 0, 
+   "in_standard_filter": 1, 
    "label": "Salary Component", 
    "length": 0, 
    "no_copy": 0, 
@@ -174,7 +174,7 @@
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 0, 
+   "search_index": 1, 
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
@@ -251,7 +251,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "from_date", 
+   "fieldname": "payroll_date", 
    "fieldtype": "Date", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -260,7 +260,7 @@
    "in_global_search": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
-   "label": "From Date", 
+   "label": "Payroll Date", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -271,39 +271,7 @@
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "to_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "To Date", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
+   "search_index": 1, 
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
@@ -322,7 +290,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_global_search": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Amount", 
    "length": 0, 
@@ -381,6 +349,39 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "salary_slip", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Salary Slip", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Salary Slip", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "translatable": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_in_quick_entry": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "amended_from", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -417,7 +418,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-07-26 12:05:16.337082", 
+ "modified": "2018-07-28 17:50:25.725444", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Additional Salary", 
@@ -471,5 +472,6 @@
  "sort_order": "DESC", 
  "title_field": "employee", 
  "track_changes": 1, 
- "track_seen": 0
+ "track_seen": 0, 
+ "track_views": 0
 }
diff --git a/erpnext/hr/doctype/additional_salary/additional_salary.py b/erpnext/hr/doctype/additional_salary/additional_salary.py
index e758227..b54d726 100644
--- a/erpnext/hr/doctype/additional_salary/additional_salary.py
+++ b/erpnext/hr/doctype/additional_salary/additional_salary.py
@@ -17,11 +17,9 @@
 	def validate_dates(self):
  		date_of_joining, relieving_date = frappe.db.get_value("Employee", self.employee,
 			["date_of_joining", "relieving_date"])
- 		if getdate(self.from_date) > getdate(self.to_date):
- 			frappe.throw(_("To date can not be less than from date"))
- 		elif date_of_joining and getdate(self.from_date) < getdate(date_of_joining):
- 			frappe.throw(_("From date can not be less than employee's joining date"))
- 		elif relieving_date and getdate(self.to_date) > getdate(relieving_date):
+ 		if date_of_joining and getdate(self.payroll_date) < getdate(date_of_joining):
+ 			frappe.throw(_("Payroll date can not be less than employee's joining date"))
+ 		elif relieving_date and getdate(self.payroll_date) > getdate(relieving_date):
  			frappe.throw(_("To date can not greater than employee's relieving date"))
 
 	def get_amount(self, sal_start_date, sal_end_date):
@@ -39,46 +37,27 @@
 @frappe.whitelist()
 def get_additional_salary_component(employee, start_date, end_date):
 	additional_components = frappe.db.sql("""
-	select name from `tabAdditional Salary`
-	where employee=%(employee)s
-	and docstatus = 1
-	and (
-		(%(from_date)s between from_date and to_date)
-		or (%(to_date)s between from_date and to_date)
-		or (from_date between %(from_date)s and %(to_date)s)
-	)""", {
+		select salary_component, sum(amount) as amount from `tabAdditional Salary`
+		where employee=%(employee)s
+			and docstatus = 1
+			and payroll_date between %(from_date)s and %(to_date)s
+		group by salary_component
+	""", {
 		'employee': employee,
 		'from_date': start_date,
 		'to_date': end_date
-	})
+	}, as_dict=1)
 
-	if additional_components:
-		additional_components_array = []
-		for additional_component in additional_components:
-			additional_component_obj = frappe.get_doc("Additional Salary", additional_component[0])
-			amount = additional_component_obj.get_amount(start_date, end_date)
-			salary_component = frappe.get_doc("Salary Component", additional_component_obj.salary_component)
-			added = False
-			for added_component in additional_components_array:
-				if added_component["struct_row"]["salary_component"] == salary_component.name:
-					added_component["amount"] += amount
-					added = True
-			if added:
-				continue
-			struct_row = {}
-			additional_components_dict = {}
-			struct_row['depends_on_lwp'] = salary_component.depends_on_lwp
-			struct_row['salary_component'] = salary_component.name
-			struct_row['abbr'] = salary_component.salary_component_abbr
-			struct_row['do_not_include_in_total'] = salary_component.do_not_include_in_total
-			struct_row['is_tax_applicable'] = salary_component.is_tax_applicable
-			struct_row['variable_based_on_taxable_salary'] = salary_component.variable_based_on_taxable_salary
-			struct_row['is_additional_component'] = salary_component.is_additional_component
-			additional_components_dict['amount'] = amount
-			additional_components_dict['struct_row'] = struct_row
-			additional_components_dict['type'] = salary_component.type
-			additional_components_array.append(additional_components_dict)
+	additional_components_list = []
+	for d in additional_components:
+		component = frappe.get_doc("Salary Component", d.salary_component)
+		struct_row = {'salary_component': d.salary_component}
+		for field in ["depends_on_lwp", "abbr", "is_tax_applicable", "variable_based_on_taxable_salary", "is_additional_component"]:
+			struct_row[field] = component.get(field)
 
-		if len(additional_components_array) > 0:
-			return additional_components_array
-	return False
+		additional_components_list.append({
+			'amount': d.amount,
+			'type': component.type,
+			'struct_row': struct_row
+		})
+	return additional_components_list
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_encashment/leave_encashment.py b/erpnext/hr/doctype/leave_encashment/leave_encashment.py
index a61210c..9944bc5 100644
--- a/erpnext/hr/doctype/leave_encashment/leave_encashment.py
+++ b/erpnext/hr/doctype/leave_encashment/leave_encashment.py
@@ -30,8 +30,7 @@
 		additional_salary.company = frappe.get_value("Employee", self.employee, "company")
 		additional_salary.employee = self.employee
 		additional_salary.salary_component = frappe.get_value("Leave Type", self.leave_type, "earning_component")
-		additional_salary.from_date = self.encashment_date
-		additional_salary.to_date = self.encashment_date
+		additional_salary.payroll_date = self.encashment_date
 		additional_salary.amount = self.encashment_amount
 		additional_salary.submit()
 
diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.py b/erpnext/hr/doctype/payroll_entry/payroll_entry.py
index 2d866ba..7eaa063 100644
--- a/erpnext/hr/doctype/payroll_entry/payroll_entry.py
+++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.py
@@ -12,7 +12,6 @@
 from erpnext.hr.doctype.employee.employee import get_holiday_list_for_employee
 
 class PayrollEntry(Document):
-
 	def on_submit(self):
 		self.create_salary_slips()
 
@@ -97,41 +96,25 @@
 			Creates salary slip for selected employees if already not created
 		"""
 		self.check_permission('write')
-		self.created = 1;
-		emp_list = self.get_emp_list()
-		ss_list = []
+		self.created = 1
+		emp_list = [d.employee for d in self.get_emp_list()]
 		if emp_list:
-			for emp in emp_list:
-				if not frappe.db.sql("""select
-						name from `tabSalary Slip`
-					where
-						docstatus!= 2 and
-						employee = %s and
-						start_date >= %s and
-						end_date <= %s and
-						company = %s
-						""", (emp['employee'], self.start_date, self.end_date, self.company)):
-					ss = frappe.get_doc({
-						"doctype": "Salary Slip",
-						"salary_slip_based_on_timesheet": self.salary_slip_based_on_timesheet,
-						"payroll_frequency": self.payroll_frequency,
-						"start_date": self.start_date,
-						"end_date": self.end_date,
-						"employee": emp['employee'],
-						"employee_name": frappe.get_value("Employee", {"name":emp['employee']}, "employee_name"),
-						"company": self.company,
-						"posting_date": self.posting_date,
-						"deduct_tax_for_unclaimed_employee_benefits": self.deduct_tax_for_unclaimed_employee_benefits,
-						"deduct_tax_for_unsubmitted_tax_exemption_proof": self.deduct_tax_for_unsubmitted_tax_exemption_proof
-					})
-					ss.insert()
-					ss_dict = {}
-					ss_dict["Employee Name"] = ss.employee_name
-					ss_dict["Total Pay"] = fmt_money(ss.rounded_total,currency = frappe.defaults.get_global_default("currency"))
-					ss_dict["Salary Slip"] = format_as_links(ss.name)[0]
-					ss_list.append(ss_dict)
-		return create_log(ss_list)
-
+			args = frappe._dict({
+				"salary_slip_based_on_timesheet": self.salary_slip_based_on_timesheet,
+				"payroll_frequency": self.payroll_frequency,
+				"start_date": self.start_date,
+				"end_date": self.end_date,
+				"company": self.company,
+				"posting_date": self.posting_date,
+				"deduct_tax_for_unclaimed_employee_benefits": self.deduct_tax_for_unclaimed_employee_benefits,
+				"deduct_tax_for_unsubmitted_tax_exemption_proof": self.deduct_tax_for_unsubmitted_tax_exemption_proof,
+				"payroll_entry": self.payroll_entry
+			})
+			if len(emp_list) > 50:
+				frappe.enqueue(create_salary_slips_for_employees, timeout=600, employees=emp_list, args=args)
+			else:
+				create_salary_slips_for_employees(emp_list, args, publish_progress=False)
+			
 	def get_sal_slip_list(self, ss_status, as_dict=False):
 		"""
 			Returns list of salary slips based on selected criteria
@@ -151,9 +134,6 @@
 		"""
 		self.check_permission('write')
 
-		# self.create_salary_slips()
-
-		jv_name = ""
 		ss_list = self.get_sal_slip_list(ss_status=0)
 		submitted_ss = []
 		not_submitted_ss = []
@@ -175,14 +155,15 @@
 
 				except frappe.ValidationError:
 					not_submitted_ss.append(ss_dict)
+
 		if submitted_ss:
-			jv_name = self.make_accrual_jv_entry()
+			self.make_accrual_jv_entry()
 			frappe.msgprint(_("Salary Slip submitted for period from {0} to {1}")
 				.format(ss_obj.start_date, ss_obj.end_date))
 
 			self.email_salary_slip(submitted_ss)
 
-		return create_submit_log(submitted_ss, not_submitted_ss, jv_name)
+		return create_submit_log(submitted_ss, not_submitted_ss)
 
 	def email_salary_slip(self, submitted_ss):
 		if frappe.db.get_single_value("HR Settings", "email_salary_slip_to_employee"):
@@ -509,28 +490,16 @@
 	else:
 		frappe.throw(_("Fiscal Year {0} not found").format(year))
 
-
-@frappe.whitelist()
-def create_log(ss_list):
-	if not ss_list:
-		frappe.throw(
-			_("There's no employee for the given criteria. Check that Salary Slips have not already been created."),
-			title='Error'
-		)
-	return ss_list
-
-
 def format_as_links(salary_slip):
 	return ['<a href="#Form/Salary Slip/{0}">{0}</a>'.format(salary_slip)]
 
 
-def create_submit_log(submitted_ss, not_submitted_ss, jv_name):
-
+def create_submit_log(submitted_ss, not_submitted_ss):
 	if not submitted_ss and not not_submitted_ss:
 		frappe.msgprint(_("No salary slip found to submit for the above selected criteria OR salary slip already submitted"))
 
 	if not_submitted_ss:
-		frappe.msgprint(_("Could not submit any Salary Slip <br>\
+		frappe.msgprint(_("Could not submit some Salary Slips <br>\
 			Possible reasons: <br>\
 			1. Net pay is less than 0. <br>\
 			2. Company Email Address specified in employee master is not valid. <br>"))
@@ -584,3 +553,26 @@
 	response['submitted'] = 1 if bank_entries else 0
 
 	return response
+
+def create_salary_slips_for_employees(employees, args, publish_progress=True):
+	salary_slips_exists_for = get_existing_salary_slips(employees, args)
+	count=0
+	for emp in employees:
+		if emp not in salary_slips_exists_for:
+			ss = frappe.new_doc("Salary Slip")
+			ss.employee = emp
+			ss.update(args)
+			ss.insert()
+			count+=1
+			if publish_progress:
+				frappe.publish_progress(count*100/len(set(employees) - set(salary_slips_exists_for)),
+					title = _("Creating Salary Slips..."))
+
+def get_existing_salary_slips(employees, args):
+	return frappe.db.sql_list("""
+		select distinct employee from `tabSalary Slip` 
+		where docstatus!= 2 and company = %s
+			and start_date >= %s and end_date <= %s 
+			and employee in (%s)
+	""" % ('%s', '%s', '%s', ', '.join(['%s']*len(employees))),
+		[args.company, args.start_date, args.end_date] + employees)
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index 755bb40..cbbc9e9 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -39,10 +39,13 @@
 	start_date: function(frm, dt, dn){
 		if(frm.doc.start_date){
 			frm.trigger("set_end_date");
-			get_emp_and_leave_details(frm.doc, dt, dn);
 		}
 	},
 
+	end_date: function(frm, dt, dn) {
+		get_emp_and_leave_details(frm.doc, dt, dn);
+	},
+
 	set_end_date: function(frm){
 		frappe.call({
 			method: 'erpnext.hr.doctype.payroll_entry.payroll_entry.get_end_date',
@@ -82,8 +85,6 @@
 	payroll_frequency: function(frm, dt, dn) {
 		frm.trigger("toggle_fields");
 		frm.set_value('end_date', '');
-		frm.set_value('start_date', '');
-		get_emp_and_leave_details(frm.doc, dt, dn);
 	},
 
 	employee: function(frm, dt, dn) {
@@ -121,21 +122,14 @@
 // Get leave details
 //---------------------------------------------------------------------
 var get_emp_and_leave_details = function(doc, dt, dn) {
-	if(!doc.start_date){
-		return frappe.call({
-			method: 'get_emp_and_leave_details',
-			doc: locals[dt][dn],
-			callback: function(r, rt) {
-				cur_frm.refresh();
-				calculate_all(doc, dt, dn);
-			}
-		});
-	}
-}
-
-cur_frm.cscript.employee = function(doc,dt,dn){
-	doc.salary_structure = ''
-	get_emp_and_leave_details(doc, dt, dn);
+	return frappe.call({
+		method: 'get_emp_and_leave_details',
+		doc: locals[dt][dn],
+		callback: function(r, rt) {
+			cur_frm.refresh();
+			calculate_all(doc, dt, dn);
+		}
+	});
 }
 
 cur_frm.cscript.leave_without_pay = function(doc,dt,dn){
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.json b/erpnext/hr/doctype/salary_slip/salary_slip.json
index 473d6e3..2e2856d 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.json
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.json
@@ -325,6 +325,39 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "fieldname": "payroll_entry", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Payroll Entry", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Payroll Entry", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "translatable": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_in_quick_entry": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "company", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -1872,7 +1905,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-06-28 12:18:50.538159", 
+ "modified": "2018-07-27 19:23:35.587516", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Slip", 
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 5a91796..f6e3208 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -241,10 +241,14 @@
 		if self.payroll_frequency:
 			cond += """and ss.payroll_frequency = '%(payroll_frequency)s'""" % {"payroll_frequency": self.payroll_frequency}
 
-		st_name = frappe.db.sql("""select sa.salary_structure from `tabSalary Structure Assignment` sa
-			join `tabSalary Structure` ss where sa.salary_structure=ss.name
-			and sa.docstatus = 1 and ss.docstatus = 1 and ss.is_active ='Yes' %s
-			order by sa.from_date desc limit 1 """ %cond, {'employee': self.employee, 'start_date': self.start_date,
+		st_name = frappe.db.sql("""
+			select sa.salary_structure
+			from `tabSalary Structure Assignment` sa join `tabSalary Structure` ss
+			where sa.salary_structure=ss.name
+				and sa.docstatus = 1 and ss.docstatus = 1 and ss.is_active ='Yes' %s
+			order by sa.from_date desc
+			limit 1
+		""" %cond, {'employee': self.employee, 'start_date': self.start_date,
 			'end_date': self.end_date, 'joining_date': joining_date})
 
 		if st_name:
@@ -480,17 +484,26 @@
 		else:
 			self.set_status()
 			self.update_status(self.name)
+			self.update_salary_slip_in_additional_salary()
 			if (frappe.db.get_single_value("HR Settings", "email_salary_slip_to_employee")) and not frappe.flags.via_payroll_entry:
 				self.email_salary_slip()
 
 	def on_cancel(self):
 		self.set_status()
 		self.update_status()
+		self.update_salary_slip_in_additional_salary()
 
 	def on_trash(self):
 		from frappe.model.naming import revert_series_if_last
 		revert_series_if_last(self.series, self.name)
 
+	def update_salary_slip_in_additional_salary(self):
+		salary_slip = self.name if self.docstatus==1 else None
+		frappe.db.sql("""
+			update `tabAdditional Salary` set salary_slip=%s
+			where employee=%s and payroll_date between %s and %s and docstatus=1
+		""", (salary_slip, self.employee, self.start_date, self.end_date))
+
 	def email_salary_slip(self):
 		receiver = frappe.db.get_value("Employee", self.employee, "prefered_email")
 
diff --git a/erpnext/hr/doctype/salary_structure_assignment/salary_structure_assignment.json b/erpnext/hr/doctype/salary_structure_assignment/salary_structure_assignment.json
index 95308dc..66cb910 100644
--- a/erpnext/hr/doctype/salary_structure_assignment/salary_structure_assignment.json
+++ b/erpnext/hr/doctype/salary_structure_assignment/salary_structure_assignment.json
@@ -28,7 +28,7 @@
    "in_filter": 0, 
    "in_global_search": 0, 
    "in_list_view": 1, 
-   "in_standard_filter": 0, 
+   "in_standard_filter": 1, 
    "label": "Employee", 
    "length": 0, 
    "no_copy": 0, 
@@ -41,7 +41,7 @@
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 0, 
+   "search_index": 1, 
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
@@ -129,7 +129,7 @@
    "in_filter": 0, 
    "in_global_search": 0, 
    "in_list_view": 1, 
-   "in_standard_filter": 0, 
+   "in_standard_filter": 1, 
    "label": "Salary Structure", 
    "length": 0, 
    "no_copy": 0, 
@@ -142,7 +142,7 @@
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 0, 
+   "search_index": 1, 
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
@@ -412,7 +412,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-06-22 14:54:05.494234", 
+ "modified": "2018-07-27 16:23:17.490097", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Structure Assignment", 
@@ -485,5 +485,6 @@
  "sort_order": "DESC", 
  "title_field": "employee_name", 
  "track_changes": 1, 
- "track_seen": 0
+ "track_seen": 0, 
+ "track_views": 0
 }
\ No newline at end of file
