From c182a5687eae94994b0df8f8692d70195a594670 Mon Sep 17 00:00:00 2001 From: Mangesh-Khairnar Date: Fri, 5 Apr 2019 11:17:40 +0530 Subject: [PATCH] feat: add validation for carry forward leave expiry --- erpnext/hr/doctype/leave_type/leave_type.json | 107 ++++++++++++------ erpnext/hr/doctype/leave_type/leave_type.py | 4 +- 2 files changed, 75 insertions(+), 36 deletions(-) diff --git a/erpnext/hr/doctype/leave_type/leave_type.json b/erpnext/hr/doctype/leave_type/leave_type.json index 06f18c8a5e..ee9b04fc00 100644 --- a/erpnext/hr/doctype/leave_type/leave_type.json +++ b/erpnext/hr/doctype/leave_type/leave_type.json @@ -221,40 +221,7 @@ "bold": 0, "collapsible": 0, "columns": 0, - "depends_on": "eval: doc.is_carry_forward == 1", - "fetch_if_empty": 0, - "fieldname": "carry_forward_leave_expiry", - "fieldtype": "Int", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Carry Forward Leave Expiry", - "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": 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, + "depends_on": "", "fetch_if_empty": 0, "fieldname": "is_lwp", "fieldtype": "Check", @@ -410,6 +377,76 @@ "translatable": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "columns": 0, + "depends_on": "eval: doc.is_carry_forward == 1", + "fetch_if_empty": 0, + "fieldname": "carry_forward_section", + "fieldtype": "Section Break", + "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": "Carry Forward", + "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": 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, + "default": "1", + "depends_on": "", + "description": "calculated in days", + "fetch_if_empty": 0, + "fieldname": "carry_forward__leave_expiry", + "fieldtype": "Int", + "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": "Carry Forward Leave Expiry", + "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": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, @@ -692,7 +729,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2019-03-29 16:06:03.456035", + "modified": "2019-04-04 14:27:47.742997", "modified_by": "Administrator", "module": "HR", "name": "Leave Type", diff --git a/erpnext/hr/doctype/leave_type/leave_type.py b/erpnext/hr/doctype/leave_type/leave_type.py index d7891a4f62..9cd574a598 100644 --- a/erpnext/hr/doctype/leave_type/leave_type.py +++ b/erpnext/hr/doctype/leave_type/leave_type.py @@ -2,6 +2,7 @@ # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals +import calendar import frappe from frappe import _ @@ -13,5 +14,6 @@ class LeaveType(Document): self.validate_carry_forward() def validate_carry_forward(self): - if (self.carry_forward_leave_expiry <1 or self.carry_forward_leave_expiry > 365): + max_days = 366 if calendar.isleap() else 365 + if not (1 < self.carry_forward_leave_expiry < max_days): frappe.throw(_('Invalid entry!! Carried forward days need to expire within a year'))