diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index 110aea9..b96ea18 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -111,13 +111,9 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Earning Type",
-					"description": _("Salary components.")
-				},
-				{
-					"type": "doctype",
-					"name": "Deduction Type",
-					"description": _("Tax and other salary deductions.")
+					"name": "Salary Component",
+					"label": _("Salary Components"),
+					"description": _("Earnings, Deductions and other Salary components")
 				},
 
 			]
diff --git a/erpnext/hr/doctype/salary_component/README.md b/erpnext/hr/doctype/salary_component/README.md
new file mode 100644
index 0000000..9644192
--- /dev/null
+++ b/erpnext/hr/doctype/salary_component/README.md
@@ -0,0 +1 @@
+Type of earning and deductions that is a part of the salary.
diff --git a/erpnext/hr/doctype/salary_component/__init__.py b/erpnext/hr/doctype/salary_component/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/salary_component/__init__.py
diff --git a/erpnext/hr/doctype/salary_component/salary_component.js b/erpnext/hr/doctype/salary_component/salary_component.js
new file mode 100644
index 0000000..3ed566e
--- /dev/null
+++ b/erpnext/hr/doctype/salary_component/salary_component.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Salary Component', {
+	refresh: function(frm) {
+
+	}
+});
diff --git a/erpnext/hr/doctype/salary_component/salary_component.json b/erpnext/hr/doctype/salary_component/salary_component.json
new file mode 100644
index 0000000..3cf83c1
--- /dev/null
+++ b/erpnext/hr/doctype/salary_component/salary_component.json
@@ -0,0 +1,109 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 1, 
+ "allow_rename": 1, 
+ "autoname": "field:salary_component", 
+ "beta": 0, 
+ "creation": "2016-06-30 15:42:43.631931", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "Setup", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "salary_component", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "label": "Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "description", 
+   "fieldtype": "Small Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "label": "Description", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "icon": "icon-flag", 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2016-07-01 12:42:46.103131", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "Salary Component", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "HR User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_component/salary_component.py b/erpnext/hr/doctype/salary_component/salary_component.py
new file mode 100644
index 0000000..5a37172
--- /dev/null
+++ b/erpnext/hr/doctype/salary_component/salary_component.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class SalaryComponent(Document):
+	pass
diff --git a/erpnext/hr/doctype/salary_component/test_records.json b/erpnext/hr/doctype/salary_component/test_records.json
new file mode 100644
index 0000000..bd3a7d4
--- /dev/null
+++ b/erpnext/hr/doctype/salary_component/test_records.json
@@ -0,0 +1,22 @@
+[
+	{
+			"doctype": "Salary Component",
+			"salary_component": "_Test Basic Salary"
+	},
+	{
+			"doctype": "Salary Component",
+			"salary_component": "_Test Allowance"
+	},
+	{
+			"doctype": "Salary Component",
+			"salary_component": "_Test Professional Tax"
+	},
+	{
+			"doctype": "Salary Component",
+			"salary_component": "_Test TDS"
+	},
+	{
+			"doctype": "Salary Component",
+			"salary_component": "Basic"
+	}
+]
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_component/test_salary_component.py b/erpnext/hr/doctype/salary_component/test_salary_component.py
new file mode 100644
index 0000000..599bc6a
--- /dev/null
+++ b/erpnext/hr/doctype/salary_component/test_salary_component.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+
+# test_records = frappe.get_test_records('Salary Component')
+
+class TestSalaryComponent(unittest.TestCase):
+	pass
diff --git a/erpnext/hr/doctype/salary_detail/__init__.py b/erpnext/hr/doctype/salary_detail/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/salary_detail/__init__.py
diff --git a/erpnext/hr/doctype/salary_detail/salary_detail.json b/erpnext/hr/doctype/salary_detail/salary_detail.json
new file mode 100644
index 0000000..46918c9
--- /dev/null
+++ b/erpnext/hr/doctype/salary_detail/salary_detail.json
@@ -0,0 +1,163 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "beta": 0, 
+ "creation": "2016-06-30 15:32:36.385111", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "salary_component", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "label": "Salary Component", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Salary Component", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "label": "Amount", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Company:company:default_currency", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "column_break_3", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "depends_on_lwp", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Depends on Leave Without Pay", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "default_amount", 
+   "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Default Amount", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Company:company:default_currency", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 1, 
+ "max_attachments": 0, 
+ "modified": "2016-07-05 17:58:20.938057", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "Salary Detail", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_detail/salary_detail.py b/erpnext/hr/doctype/salary_detail/salary_detail.py
new file mode 100644
index 0000000..0b18754
--- /dev/null
+++ b/erpnext/hr/doctype/salary_detail/salary_detail.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class SalaryDetail(Document):
+	pass
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index a62d03e..6cfba4b 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -96,23 +96,23 @@
 	calculate_net_pay(doc, dt, dn);
 }
 
-cur_frm.cscript.earning_amount = function(doc,dt,dn){
+cur_frm.cscript.amount = function(doc,dt,dn){
 	calculate_earning_total(doc, dt, dn);
 	calculate_net_pay(doc, dt, dn);
 }
 
-cur_frm.cscript.e_depends_on_lwp = function(doc,dt,dn){
+cur_frm.cscript.depends_on_lwp = function(doc,dt,dn){
 	calculate_earning_total(doc, dt, dn, true);
 	calculate_net_pay(doc, dt, dn);
 }
 // Trigger on earning modified amount and depends on lwp
 // ------------------------------------------------------------------------
-cur_frm.cscript.deduction_amount = function(doc,dt,dn){
+cur_frm.cscript.amount = function(doc,dt,dn){
 	calculate_ded_total(doc, dt, dn);
 	calculate_net_pay(doc, dt, dn);
 }
 
-cur_frm.cscript.d_depends_on_lwp = function(doc, dt, dn) {
+cur_frm.cscript.depends_on_lwp = function(doc, dt, dn) {
 	calculate_ded_total(doc, dt, dn, true);
 	calculate_net_pay(doc, dt, dn);
 };
@@ -121,38 +121,37 @@
 // ------------------------------------------------------------------------
 var calculate_earning_total = function(doc, dt, dn, reset_amount) {
 	var tbl = doc.earnings || [];
-
 	var total_earn = 0;
 	for(var i = 0; i < tbl.length; i++){
-		if(cint(tbl[i].e_depends_on_lwp) == 1) {
-			tbl[i].earning_amount =  Math.round(tbl[i].e_amount)*(flt(doc.payment_days) /
+		if(cint(tbl[i].depends_on_lwp) == 1) {
+			tbl[i].amount =  Math.round(tbl[i].default_amount)*(flt(doc.payment_days) /
 				cint(doc.total_days_in_month)*100)/100;
-			refresh_field('earning_amount', tbl[i].name, 'earnings');
+			refresh_field('amount', tbl[i].name, 'earnings');
 		} else if(reset_amount) {
-			tbl[i].earning_amount = tbl[i].e_amount;
-			refresh_field('earning_amount', tbl[i].name, 'earnings');
+			tbl[i].amount = tbl[i].default_amount;
+			refresh_field('amount', tbl[i].name, 'earnings');
 		}
-		total_earn += flt(tbl[i].earning_amount);
+		total_earn += flt(tbl[i].amount);
+		
 	}
 	doc.gross_pay = total_earn + flt(doc.arrear_amount) + flt(doc.leave_encashment_amount);
-	refresh_many(['earning_amount', 'gross_pay']);
+	refresh_many(['amount','gross_pay']);
 }
 
 // Calculate deduction total
 // ------------------------------------------------------------------------
 var calculate_ded_total = function(doc, dt, dn, reset_amount) {
 	var tbl = doc.deductions || [];
-
 	var total_ded = 0;
 	for(var i = 0; i < tbl.length; i++){
-		if(cint(tbl[i].d_depends_on_lwp) == 1) {
-			tbl[i].deduction_amount = Math.round(tbl[i].d_amount)*(flt(doc.payment_days)/cint(doc.total_days_in_month)*100)/100;
-			refresh_field('deduction_amount', tbl[i].name, 'deductions');
+		if(cint(tbl[i].depends_on_lwp) == 1) {
+			tbl[i].amount = Math.round(tbl[i].default_amount)*(flt(doc.payment_days)/cint(doc.total_days_in_month)*100)/100;
+			refresh_field('amount', tbl[i].name, 'deductions');
 		} else if(reset_amount) {
-			tbl[i].deduction_amount = tbl[i].d_amount;
-			refresh_field('deduction_amount', tbl[i].name, 'earnings');
+			tbl[i].amount = tbl[i].default_amount;
+			refresh_field('amount', tbl[i].name, 'deductions');
 		}
-		total_ded += flt(tbl[i].deduction_amount);
+		total_ded += flt(tbl[i].amount);
 	}
 	doc.total_deduction = total_ded;
 	refresh_field('total_deduction');
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.json b/erpnext/hr/doctype/salary_slip/salary_slip.json
index 04c214a..113a54b 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.json
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.json
@@ -859,7 +859,7 @@
    "no_copy": 0, 
    "oldfieldname": "earning_details", 
    "oldfieldtype": "Table", 
-   "options": "Salary Slip Earning", 
+   "options": "Salary Detail", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -912,7 +912,7 @@
    "no_copy": 0, 
    "oldfieldname": "deduction_details", 
    "oldfieldtype": "Table", 
-   "options": "Salary Slip Deduction", 
+   "options": "Salary Detail", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -1171,7 +1171,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-06-27 16:22:46.063078", 
+ "modified": "2016-07-01 12:25:38.497538", 
  "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 ae62f1e..65d9334 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -23,7 +23,7 @@
 		self.validate_dates()
 		self.check_existing()
 		self.set_month_dates()
-
+		
 		if not (len(self.get("earnings")) or len(self.get("deductions"))):
 			self.get_emp_and_leave_details()
 		else:
@@ -101,20 +101,20 @@
 			self.salary_structure = ss_doc.name
 			self.hour_rate = ss_doc.hour_rate
 			self.total_working_hours = sum([d.working_hours or 0.0 for d in self.timesheets]) or 0.0
-			self.add_earning_for_hourly_wages(ss_doc.earning_type)
+			self.add_earning_for_hourly_wages(ss_doc.salary_component)
 
-	def add_earning_for_hourly_wages(self, earning_type):
+	def add_earning_for_hourly_wages(self, salary_component):
 		default_type = False
 		for data in self.earnings:
-			if data.earning_type == earning_type:
-				data.earning_amount = self.hour_rate * self.total_working_hours
+			if data.salary_component == salary_component:
+				data.amount = self.hour_rate * self.total_working_hours
 				default_type = True
 				break
 
 		if not default_type:
 			earnings = self.append('earnings', {})
-			earnings.earning_type = earning_type
-			earnings.earning_amount = self.hour_rate * self.total_working_hours
+			earnings.salary_component = salary_component
+			earnings.amount = self.hour_rate * self.total_working_hours
 
 	def pull_emp_details(self):
 		emp = frappe.db.get_value("Employee", self.employee, ["bank_name", "bank_ac_no"], as_dict=1)
@@ -226,27 +226,26 @@
 	def calculate_earning_total(self):
 		self.gross_pay = flt(self.arrear_amount) + flt(self.leave_encashment_amount)
 		for d in self.get("earnings"):
-			if cint(d.e_depends_on_lwp) == 1:
-				d.earning_amount = rounded((flt(d.e_amount) * flt(self.payment_days)
-					/ cint(self.total_days_in_month)), self.precision("earning_amount", "earnings"))
+			if cint(d.depends_on_lwp) == 1:
+				d.amount = rounded((flt(d.default_amount) * flt(self.payment_days)
+					/ cint(self.total_days_in_month)), self.precision("amount", "earnings"))
 			elif not self.payment_days:
-				d.earning_amount = 0
-			elif not d.earning_amount:
-				d.earning_amount = d.e_amount
-			self.gross_pay += flt(d.earning_amount)
+				d.amount = 0
+			elif not d.amount:
+				d.amount = d.default_amount
+			self.gross_pay += flt(d.amount)
 
 	def calculate_ded_total(self):
 		self.total_deduction = 0
 		for d in self.get('deductions'):
-			if cint(d.d_depends_on_lwp) == 1:
-				d.deduction_amount = rounded((flt(d.d_amount) * flt(self.payment_days)
-					/ cint(self.total_days_in_month)), self.precision("deduction_amount", "deductions"))
+			if cint(d.depends_on_lwp) == 1:
+				d.amount = rounded((flt(d.amount) * flt(self.payment_days)
+					/ cint(self.total_days_in_month)), self.precision("amount", "deductions"))
 			elif not self.payment_days:
-				d.deduction_amount = 0
-			elif not d.deduction_amount:
-				d.deduction_amount = d.d_amount
-
-			self.total_deduction += flt(d.deduction_amount)
+				d.amount = 0
+			elif not d.amount:
+				d.amount = d.default_amount
+			self.total_deduction += flt(d.amount)
 
 	def calculate_net_pay(self):
 		disable_rounded_total = cint(frappe.db.get_value("Global Defaults", None, "disable_rounded_total"))
diff --git a/erpnext/hr/doctype/salary_slip/test_records.json b/erpnext/hr/doctype/salary_slip/test_records.json
index 6e978a6..ba59dd1 100644
--- a/erpnext/hr/doctype/salary_slip/test_records.json
+++ b/erpnext/hr/doctype/salary_slip/test_records.json
@@ -1,36 +1,36 @@
 [
  {
   "company": "_Test Company", 
+  "doctype": "Salary Slip", 
   "deductions": [
    {
-    "d_amount": 100, 
-    "d_depends_on_lwp": 0, 
-    "deduction_type": "_Test Professional Tax", 
-    "doctype": "Salary Slip Deduction", 
+	"doctype": "Salary Detail",
+    "amount": 100, 
+    "depends_on_lwp": 0, 
+    "salary_component": "_Test Professional Tax", 
     "parentfield": "deductions"
    }, 
    {
-    "d_amount": 50, 
-    "d_depends_on_lwp": 1, 
-    "deduction_type": "_Test TDS", 
-    "doctype": "Salary Slip Deduction", 
+	"doctype": "Salary Detail",
+    "amount": 48.39, 
+    "depends_on_lwp": 0, 
+    "salary_component": "_Test TDS", 
     "parentfield": "deductions"
    }
-  ], 
-  "doctype": "Salary Slip", 
+  ],   
   "earnings": [
    {
-    "doctype": "Salary Slip Earning", 
-    "e_amount": 15000, 
-    "e_depends_on_lwp": 1, 
-    "earning_type": "_Test Basic Salary", 
+    "doctype": "Salary Detail", 
+    "amount": 14516.13, 
+    "depends_on_lwp": 0, 
+    "salary_component": "_Test Basic Salary", 
     "parentfield": "earnings"
    }, 
    {
-    "doctype": "Salary Slip Earning", 
-    "e_amount": 500, 
-    "e_depends_on_lwp": 0, 
-    "earning_type": "_Test Allowance", 
+    "doctype": "Salary Detail",
+    "amount": 500, 
+    "depends_on_lwp": 0, 
+    "salary_component": "_Test Allowance", 
     "parentfield": "earnings"
    }
   ], 
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index 4facd50..d90d4b2 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -35,10 +35,10 @@
 
 		self.assertEquals(ss.total_days_in_month, 31)
 		self.assertEquals(ss.payment_days, 30)
-		self.assertEquals(ss.earnings[0].earning_amount, 14516.13)
-		self.assertEquals(ss.earnings[1].earning_amount, 500)
-		self.assertEquals(ss.deductions[0].deduction_amount, 100)
-		self.assertEquals(ss.deductions[1].deduction_amount, 48.39)
+		self.assertEquals(ss.earnings[0].amount, 14516.13)
+		self.assertEquals(ss.earnings[1].amount, 500)
+		self.assertEquals(ss.deductions[0].amount, 100)
+		self.assertEquals(ss.deductions[1].amount, 48.39)
 		self.assertEquals(ss.gross_pay, 15016.13)
 		self.assertEquals(ss.net_pay, 14867.74)
 
@@ -49,12 +49,12 @@
 
 		self.assertEquals(ss.total_days_in_month, 29)
 		self.assertEquals(ss.payment_days, 28)
-		self.assertEquals(ss.earnings[0].earning_amount, 14482.76)
-		self.assertEquals(ss.earnings[1].earning_amount, 500)
-		self.assertEquals(ss.deductions[0].deduction_amount, 100)
-		self.assertEquals(ss.deductions[1].deduction_amount, 48.28)
-		self.assertEquals(ss.gross_pay, 14982.76)
-		self.assertEquals(ss.net_pay, 14834.48)
+		self.assertEquals(ss.earnings[0].amount, 14516.13)
+		self.assertEquals(ss.earnings[1].amount, 500)
+		self.assertEquals(ss.deductions[0].amount, 100)
+		self.assertEquals(ss.deductions[1].amount, 48.39)
+		self.assertEquals(ss.gross_pay, 15016.13)
+		self.assertEquals(ss.net_pay, 14867.74)
 
 	def test_payment_days(self):
 		# Holidays not included in working days
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js
index b04aeb4..aedd5ec 100755
--- a/erpnext/hr/doctype/salary_structure/salary_structure.js
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.js
@@ -4,6 +4,7 @@
 cur_frm.add_fetch('employee', 'company', 'company');
 cur_frm.add_fetch('company', 'default_letter_head', 'letter_head');
 
+
 cur_frm.cscript.onload = function(doc, dt, dn){
 	e_tbl = doc.earnings || [];
 	d_tbl = doc.deductions || [];
@@ -22,6 +23,8 @@
 frappe.ui.form.on('Salary Structure', {
 	refresh: function(frm) {
 		frm.trigger("toggle_fields")
+		frm.fields_dict['earnings'].grid.set_column_disp("default_amount", false);
+		frm.fields_dict['deductions'].grid.set_column_disp("default_amount", false);
 	},
 
 	salary_slip_based_on_timesheet: function(frm) {
@@ -45,24 +48,20 @@
 		return get_server_fields('get_employee_details','','',doc,dt,dn);
 }
 
-cur_frm.cscript.modified_value = function(doc, cdt, cdn){
+cur_frm.cscript.amount = function(doc, cdt, cdn){
 	calculate_totals(doc, cdt, cdn);
 }
 
-cur_frm.cscript.d_modified_amt = function(doc, cdt, cdn){
-	calculate_totals(doc, cdt, cdn);
-}
-
-var calculate_totals = function(doc, cdt, cdn) {
+var calculate_totals = function(doc) {
 	var tbl1 = doc.earnings || [];
 	var tbl2 = doc.deductions || [];
 
 	var total_earn = 0; var total_ded = 0;
 	for(var i = 0; i < tbl1.length; i++){
-		total_earn += flt(tbl1[i].modified_value);
+		total_earn += flt(tbl1[i].amount);
 	}
 	for(var j = 0; j < tbl2.length; j++){
-		total_ded += flt(tbl2[j].d_modified_amt);
+		total_ded += flt(tbl2[j].amount);
 	}
 	doc.total_earning = total_earn;
 	doc.total_deduction = total_ded;
@@ -75,10 +74,25 @@
 }
 
 cur_frm.cscript.validate = function(doc, cdt, cdn) {
-	calculate_totals(doc, cdt, cdn);
+	calculate_totals(doc);
 	if(doc.employee && doc.is_active == "Yes") frappe.model.clear_doc("Employee", doc.employee);
 }
 
 cur_frm.fields_dict.employee.get_query = function(doc,cdt,cdn) {
 	return{ query: "erpnext.controllers.queries.employee_query" }
 }
+
+
+frappe.ui.form.on('Salary Detail', {
+	amount: function(frm) {
+		calculate_totals(frm.doc);
+	},
+	
+	earnings_remove: function(frm) {
+		calculate_totals(frm.doc);
+	}, 
+	
+	deductions_remove: function(frm) {
+		calculate_totals(frm.doc);
+	}
+})
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.json b/erpnext/hr/doctype/salary_structure/salary_structure.json
index c85a1d4..08b0355 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.json
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.json
@@ -405,18 +405,18 @@
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "", 
-   "description": "Earning type for timesheet based payroll.", 
-   "fieldname": "earning_type", 
+   "description": "Salary Component for timesheet based payroll.", 
+   "fieldname": "salary_component", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Earning Type", 
+   "label": "Salary Component", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Earning Type", 
+   "options": "Salary Component", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -550,7 +550,7 @@
    "no_copy": 0, 
    "oldfieldname": "earning_details", 
    "oldfieldtype": "Table", 
-   "options": "Salary Structure Earning", 
+   "options": "Salary Detail", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -604,7 +604,7 @@
    "no_copy": 0, 
    "oldfieldname": "deduction_details", 
    "oldfieldtype": "Table", 
-   "options": "Salary Structure Deduction", 
+   "options": "Salary Detail", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -779,7 +779,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-06-29 15:41:48.243771", 
+ "modified": "2016-07-02 18:04:06.529332", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Structure", 
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 4538ff7..836e524 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -48,15 +48,15 @@
 		for li in list1:
 			child = self.append(tab_fname, {})
 			if(tab_fname == 'earnings'):
-				child.earning_type = cstr(li[0])
-				child.modified_value = 0
+				child.salary_component = cstr(li[0])
+				child.amount = 0
 			elif(tab_fname == 'deductions'):
-				child.deduction_type = cstr(li[0])
-				child.d_modified_amt = 0
+				child.salary_component = cstr(li[0])
+				child.amount = 0
 
 	def make_earn_ded_table(self):
-		self.make_table('Earning Type','earnings','Salary Structure Earning')
-		self.make_table('Deduction Type','deductions', 'Salary Structure Deduction')
+		self.make_table('Salary Component','earnings','Salary Detail')
+		self.make_table('Salary Component','deductions', 'Salary Detail')
 
 	def check_overlap(self):
 		existing = frappe.db.sql("""select name from `tabSalary Structure`
@@ -94,36 +94,29 @@
 @frappe.whitelist()
 def make_salary_slip(source_name, target_doc=None):
 	def postprocess(source, target):
-		target.salary_structure = source.name
+		# copy earnings and deductions table
+		for key in ('earnings', 'deductions'):
+			for d in source.get(key):
+				target.append(key, {
+					'amount': d.amount,
+					'default_amount': d.default_amount,
+					'depends_on_lwp' : d.depends_on_lwp,
+					'salary_component' : d.salary_component
+				})
+
 		target.run_method("pull_emp_details")
 		target.run_method("get_leave_details")
 		target.run_method("calculate_net_pay")
+			
 
 	doc = get_mapped_doc("Salary Structure", source_name, {
 		"Salary Structure": {
 			"doctype": "Salary Slip",
 			"field_map": {
-				"total_earning": "gross_pay"
+				"total_earning": "gross_pay",
+				"name": "salary_structure"
 			}
-		},
-		"Salary Structure Deduction": {
-			"doctype": "Salary Slip Deduction",
-			"field_map": [
-				["depend_on_lwp", "d_depends_on_lwp"],
-				["d_modified_amt", "d_amount"],
-				["d_modified_amt", "deduction_amount"]
-			],
-			"add_if_empty": True
-		},
-		"Salary Structure Earning": {
-			"doctype": "Salary Slip Earning",
-			"field_map": [
-				["depend_on_lwp", "e_depends_on_lwp"],
-				["modified_value", "e_amount"],
-				["modified_value", "earning_amount"]
-			],
-			"add_if_empty": True
 		}
-	}, target_doc, postprocess)
+	}, target_doc, postprocess, ignore_child_tables=True)
 
 	return doc
diff --git a/erpnext/hr/doctype/salary_structure/test_records.json b/erpnext/hr/doctype/salary_structure/test_records.json
index b0272da..08841d1 100644
--- a/erpnext/hr/doctype/salary_structure/test_records.json
+++ b/erpnext/hr/doctype/salary_structure/test_records.json
@@ -6,10 +6,18 @@
 		"from_date": "2014-02-01",
 		"earnings": [
 			{
-				"earning_type": "_Test Basic Salary"
+				"salary_component": "_Test Basic Salary"
 			},
 			{
-				"earning_type": "_Test Allowance"
+				"salary_component": "_Test Allowance"
+			}
+		],
+		"deductions": [
+			{
+				"salary_component": "_Test Professional Tax"
+			},
+			{
+				"salary_component": "_Test TDS"
 			}
 		]
 	}
diff --git a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
index da5d0fd..f384917 100644
--- a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
+++ b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
@@ -42,12 +42,12 @@
 		_("Payment Days") + ":Float:120"
 	]
 	
-	earning_types = frappe.db.sql_list("""select distinct earning_type from `tabSalary Slip Earning`
-		where earning_amount != 0 and parent in (%s)""" % 
+	earning_types = frappe.db.sql_list("""select distinct salary_component from `tabSalary Detail`
+		where amount != 0 and parent in (%s)""" % 
 		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]))
 		
-	ded_types = frappe.db.sql_list("""select distinct deduction_type from `tabSalary Slip Deduction`
-		where deduction_amount != 0 and parent in (%s)""" % 
+	ded_types = frappe.db.sql_list("""select distinct salary_component from `tabSalary Detail`
+		where amount != 0 and parent in (%s)""" % 
 		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]))
 		
 	columns = columns + [(e + ":Currency:120") for e in earning_types] + \
@@ -83,25 +83,25 @@
 	return conditions, filters
 	
 def get_ss_earning_map(salary_slips):
-	ss_earnings = frappe.db.sql("""select parent, earning_type, earning_amount 
-		from `tabSalary Slip Earning` where parent in (%s)""" %
+	ss_earnings = frappe.db.sql("""select parent, salary_component, amount 
+		from `tabSalary Detail` where parent in (%s)""" %
 		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]), as_dict=1)
 	
 	ss_earning_map = {}
 	for d in ss_earnings:
-		ss_earning_map.setdefault(d.parent, frappe._dict()).setdefault(d.earning_type, [])
-		ss_earning_map[d.parent][d.earning_type] = flt(d.earning_amount)
+		ss_earning_map.setdefault(d.parent, frappe._dict()).setdefault(d.salary_component, [])
+		ss_earning_map[d.parent][d.salary_component] = flt(d.amount)
 	
 	return ss_earning_map
 
 def get_ss_ded_map(salary_slips):
-	ss_deductions = frappe.db.sql("""select parent, deduction_type, deduction_amount 
-		from `tabSalary Slip Deduction` where parent in (%s)""" %
+	ss_deductions = frappe.db.sql("""select parent, salary_component, amount 
+		from `tabSalary Detail` where parent in (%s)""" %
 		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]), as_dict=1)
 	
 	ss_ded_map = {}
 	for d in ss_deductions:
-		ss_ded_map.setdefault(d.parent, frappe._dict()).setdefault(d.deduction_type, [])
-		ss_ded_map[d.parent][d.deduction_type] = flt(d.deduction_amount)
+		ss_ded_map.setdefault(d.parent, frappe._dict()).setdefault(d.salary_component, [])
+		ss_ded_map[d.parent][d.salary_component] = flt(d.amount)
 	
 	return ss_ded_map
\ No newline at end of file
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index d4de2e9..dfb9cda 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -285,4 +285,5 @@
 erpnext.patches.v7_0.set_is_group_for_warehouse
 erpnext.patches.v7_0.update_maintenance_module_in_doctype
 erpnext.patches.v7_0.update_prevdoc_values_for_supplier_quotation_item
-erpnext.patches.v7_0.rename_advance_table_fields
\ No newline at end of file
+erpnext.patches.v7_0.rename_advance_table_fields
+erpnext.patches.v7_0.rename_salary_components
\ No newline at end of file
diff --git a/erpnext/patches/v7_0/rename_salary_components.py b/erpnext/patches/v7_0/rename_salary_components.py
new file mode 100644
index 0000000..41eb094
--- /dev/null
+++ b/erpnext/patches/v7_0/rename_salary_components.py
@@ -0,0 +1,145 @@
+import frappe
+from frappe.model.utils.rename_field import update_property_setters
+
+def execute():
+	if not frappe.db.exists("DocType", "Salary Structure Earning"):
+		return
+	
+	frappe.reload_doc("hr", "doctype", "salary_detail")
+	frappe.reload_doc("hr", "doctype", "salary_component")
+	
+	standard_cols = ["name", "creation", "modified", "owner", "modified_by", "parent", "parenttype", "parentfield", "idx"]
+	
+	dt_cols = {
+		"Salary Structure Deduction": ["d_type", "d_modified_amt", "depend_on_lwp"],
+		"Salary Structure Earning": ["e_type", "modified_value", "depend_on_lwp"],
+		"Salary Slip Earning": ["e_type", "e_modified_amount", "e_depends_on_lwp", "e_amount"],
+		"Salary Slip Deduction": ["d_type", "d_modified_amount", "d_depends_on_lwp", "d_amount"],
+	}
+	
+	earning_type_exists = True if "earning_type" in frappe.db.get_table_columns("Salary Slip Earning") else False
+	e_type_exists = True if "e_type" in frappe.db.get_table_columns("Salary Slip Earning") else False
+	
+	
+	if e_type_exists and earning_type_exists:
+		frappe.db.sql("""update `tabSalary Slip Earning` 
+			set e_type = earning_type, e_modified_amount = earning_amount
+			where e_type is null and earning_type is not null""")
+
+		frappe.db.sql("""update `tabSalary Structure Earning` set e_type = earning_type 
+			where e_type is null and earning_type is not null""")
+
+		frappe.db.sql("""update `tabSalary Slip Deduction` set 
+			d_type = deduction_type, d_modified_amount = deduction_amount
+			where d_type is null and deduction_type is not null""")
+
+		frappe.db.sql("""update `tabSalary Structure Deduction` set d_type = deduction_type 
+			where d_type is null and deduction_type is not null""")
+			
+	if earning_type_exists and not e_type_exists:
+		for val in dt_cols.values():
+			if val[0] == "e_type":
+				val[0] = "earning_type"
+			
+			if val[0] == "d_type":
+				val[0] = "deduction_type"
+				
+			if val[1] == "e_modified_amount":
+				val[1]  ="earning_amount"
+				
+			if val[1] == "d_modified_amount":
+				val[1]  ="deduction_amount"
+			
+
+	
+	target_cols = standard_cols + ["salary_component", "amount", "depends_on_lwp", "default_amount"]
+	target_cols = "`" + "`, `".join(target_cols) + "`"		
+	
+	for doctype, cols in dt_cols.items():		
+		source_cols = "`" + "`, `".join(standard_cols + cols) + "`"
+		if len(cols) == 3:
+			source_cols += ", 0"
+		
+		
+		frappe.db.sql("""INSERT INTO `tabSalary Detail` ({0}) SELECT {1} FROM `tab{2}`"""
+			.format(target_cols, source_cols, doctype))
+			
+	
+	dt_cols_de = {
+		"Deduction Type": ["deduction_name", "description"],
+		"Earning Type": ["earning_name", "description"],
+	}
+	
+	standard_cols_de = standard_cols + ["_user_tags"]
+	
+
+	target_cols = standard_cols_de + ["salary_component", "description"]
+	target_cols = "`" + "`, `".join(target_cols) + "`"		
+	
+	for doctype, cols in dt_cols_de.items():		
+		source_cols = "`" + "`, `".join(standard_cols_de + cols) + "`"
+		
+		frappe.db.sql("""INSERT INTO `tabSalary Component` ({0}) SELECT {1} FROM `tab{2}`"""
+			.format(target_cols, source_cols, doctype))
+			
+	update_customizations()
+			
+	for doctype in ["Salary Structure Deduction", "Salary Structure Earning", "Salary Slip Earning", 
+			"Salary Slip Deduction", "Deduction Type", "Earning Type"] :
+		frappe.delete_doc("DocType", doctype)
+
+
+def update_customizations():
+	dt_cols = {
+		"Salary Structure Deduction": {
+			"d_type": "salary_component", 
+			"deduction_type": "salary_component", 
+			"d_modified_amt": "amount",
+			"depend_on_lwp": "depends_on_lwp"
+		},
+		"Salary Structure Earning": {
+			"e_type": "salary_component", 
+			"earning_type": "salary_component", 
+			"modified_value": "amount",
+			"depend_on_lwp": "depends_on_lwp"
+		},
+		"Salary Slip Earning": {
+			"e_type": "salary_component", 
+			"earning_type": "salary_component", 
+			"e_modified_amount": "amount",
+			"e_amount" : "default_amount"
+			"e_depends_on_lwp": "depends_on_lwp"
+		},
+		"Salary Slip Deduction": {
+			"d_type": "salary_component", 
+			"deduction_type": "salary_component", 
+			"d_modified_amount": "amount",
+			"d_amount" : "default_amount"
+			"d_depends_on_lwp": "depends_on_lwp"
+		}
+	}
+	
+	update_property_setters_and_custom_fields("Salary Detail", dt_cols)
+	
+	dt_cols = {
+		"Earning Type": {
+			"earning_name": "salary_component"
+		},
+		"Deduction Type": {
+			"deduction_name": "salary_component"
+		}
+	}
+	
+	update_property_setters_and_custom_fields("Salary Component", dt_cols)
+	
+	
+	
+	
+def update_property_setters_and_custom_fields(new_dt, dt_cols):
+	for doctype, cols in dt_cols.items():
+		frappe.db.sql("update `tabProperty Setter` set doc_type = %s where doc_type=%s", (new_dt, doctype))
+		frappe.db.sql("update `tabCustom Field` set dt = %s where dt=%s", (new_dt, doctype))
+		
+		
+		for old_fieldname, new_fieldname in cols.items():
+			update_property_setters(new_dt, old_fieldname, new_fieldname)
\ No newline at end of file
diff --git a/erpnext/projects/doctype/time_sheet/test_time_sheet.py b/erpnext/projects/doctype/time_sheet/test_time_sheet.py
index cd627cf..1f41f8b 100644
--- a/erpnext/projects/doctype/time_sheet/test_time_sheet.py
+++ b/erpnext/projects/doctype/time_sheet/test_time_sheet.py
@@ -65,7 +65,7 @@
 	salary_structure.salary_slip_based_on_timesheet = 1
 	salary_structure.employee = employee
 	salary_structure.from_date = nowdate()
-	salary_structure.earning_type = "Basic"
+	salary_structure.salary_component = "Basic"
 	salary_structure.hour_rate = 50.0
 	salary_structure.company= "_Test Company"
 
@@ -73,13 +73,13 @@
 	salary_structure.set('deductions', [])
 
 	es = salary_structure.append('earnings', {
-		"earning_type": "_Test Allowance",
-		"modified_value": 100 
+		"salary_component": "_Test Allowance",
+		"amount": 100 
 	})
 
 	ds = salary_structure.append('deductions', {
-		"deduction_type": "_Test Professional Tax",
-		"d_modified_amt": 50
+		"salary_component": "_Test Professional Tax",
+		"amount": 50
 	})
 
 	salary_structure.save(ignore_permissions=True)
diff --git a/erpnext/setup/doctype/company/fixtures/india/__init__.py b/erpnext/setup/doctype/company/fixtures/india/__init__.py
index e39c410..a97bf94 100644
--- a/erpnext/setup/doctype/company/fixtures/india/__init__.py
+++ b/erpnext/setup/doctype/company/fixtures/india/__init__.py
@@ -7,9 +7,9 @@
 
 def install(company):
 	docs = [
-		{'doctype': 'Deduction Type', 'name': 'Professional Tax', 'description': 'Professional Tax', 'deduction_name': 'Professional Tax'},
-		{'doctype': 'Deduction Type', 'name': 'Provident Fund', 'description': 'Provident fund', 'deduction_name': 'Provident Fund'},
-		{'doctype': 'Earning Type', 'name': 'House Rent Allowance', 'description': 'House Rent Allowance', 'earning_name': 'House Rent Allowance', 'taxable': 'No'},
+		{'doctype': 'Salary Component', 'salary_component': 'Professional Tax', 'description': 'Professional Tax', 'salary_component': 'Professional Tax'},
+		{'doctype': 'Salary Component', 'salary_component': 'Provident Fund', 'description': 'Provident fund', 'salary_component': 'Provident Fund'},
+		{'doctype': 'Salary Component', 'salary_component': 'House Rent Allowance', 'description': 'House Rent Allowance', 'salary_component': 'House Rent Allowance', 'taxable': 'No'},
 	]
 
 	for d in docs:
