feat:  validating and ordeing the rule slabr
diff --git a/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.js b/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.js
index 929370f..feaf6a8 100644
--- a/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.js
+++ b/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.js
@@ -6,3 +6,36 @@
 
 	// }
 });
+
+frappe.ui.form.on('Gratuity Rule Slab', {
+
+	/*
+		Slabs should be in order like
+
+		from | to | fraction
+		0    | 4  | 0.5
+		4    | 6  | 0.7
+
+		So, on row addition setting current_row.from = previous row.to.
+		On to_year insert we have to check that it is not less than from_year
+
+	*/
+
+
+	gratuity_rule_slabs_add(frm, cdt, cdn) {
+		let row = locals[cdt][cdn];
+		let array_idx = row.idx - 1
+		if(array_idx > 0){
+			row.from_year = cur_frm.doc.gratuity_rule_slabs[array_idx-1].to_year;
+			frm.refresh();
+		}
+	},
+
+	to_year(frm, cdt, cdn) {
+		let row = locals[cdt][cdn];
+		if (row.to_year <= row.from_year){
+			frappe.throw(__("To(Year) year can not be less than From(year) "));
+		}
+	}
+});
+
diff --git a/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.py b/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.py
index 10b2a87..71adbe5 100644
--- a/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.py
+++ b/erpnext/payroll/doctype/gratuity_rule/gratuity_rule.py
@@ -3,8 +3,18 @@
 # For license information, please see license.txt
 
 from __future__ import unicode_literals
-# import frappe
+import frappe
 from frappe.model.document import Document
+from frappe import _
 
 class GratuityRule(Document):
-	pass
+
+	def validate(self):
+		for current_slab in self.gratuity_rule_slabs:
+			if current_slab.from_year > current_slab.to_year:
+				frappe(_("Row {0}: From (Year) can not be greater than To (Year)").format(slab.idx))
+
+			if current_slab.to_year == 0 and current_slab.from_year == 0 and len(self.gratuity_rule_slabs) > 1:
+				frappe.throw(_("You can not define multiple slabs if you have a slab with no lower and upper limits."))
+
+
diff --git a/erpnext/payroll/doctype/gratuity_rule_slab/gratuity_rule_slab.json b/erpnext/payroll/doctype/gratuity_rule_slab/gratuity_rule_slab.json
index 615829f..dd642f4 100644
--- a/erpnext/payroll/doctype/gratuity_rule_slab/gratuity_rule_slab.json
+++ b/erpnext/payroll/doctype/gratuity_rule_slab/gratuity_rule_slab.json
@@ -5,34 +5,39 @@
  "editable_grid": 1,
  "engine": "InnoDB",
  "field_order": [
-  "from",
-  "to",
+  "from_year",
+  "to_year",
   "fraction_of_applicable_earnings"
  ],
  "fields": [
   {
-   "fieldname": "from",
-   "fieldtype": "Int",
-   "in_list_view": 1,
-   "label": "From(Year)"
-  },
-  {
-   "fieldname": "to",
-   "fieldtype": "Int",
-   "in_list_view": 1,
-   "label": "To(Year)"
-  },
-  {
    "fieldname": "fraction_of_applicable_earnings",
    "fieldtype": "Float",
    "in_list_view": 1,
    "label": "Fraction of Applicable Earnings ",
    "reqd": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "from_year",
+   "fieldtype": "Int",
+   "in_list_view": 1,
+   "label": "From(Year)",
+   "read_only": 1,
+   "reqd": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "to_year",
+   "fieldtype": "Int",
+   "in_list_view": 1,
+   "label": "To(Year)",
+   "reqd": 1
   }
  ],
  "istable": 1,
  "links": [],
- "modified": "2020-08-05 20:03:25.955448",
+ "modified": "2020-08-14 15:23:12.041375",
  "modified_by": "Administrator",
  "module": "Payroll",
  "name": "Gratuity Rule Slab",