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",