feat: update Exit Interview date in employee master on submission
diff --git a/erpnext/hr/doctype/employee/employee_dashboard.py b/erpnext/hr/doctype/employee/employee_dashboard.py
index a4c0af0..a1247d9 100644
--- a/erpnext/hr/doctype/employee/employee_dashboard.py
+++ b/erpnext/hr/doctype/employee/employee_dashboard.py
@@ -21,7 +21,11 @@
},
{
'label': _('Lifecycle'),
- 'items': ['Employee Transfer', 'Employee Promotion', 'Employee Separation', 'Employee Grievance']
+ 'items': ['Employee Transfer', 'Employee Promotion', 'Employee Grievance']
+ },
+ {
+ 'label': _('Exit'),
+ 'items': ['Employee Separation', 'Exit Interview', 'Full and Final Statement']
},
{
'label': _('Shift'),
diff --git a/erpnext/hr/doctype/exit_interview/exit_interview.py b/erpnext/hr/doctype/exit_interview/exit_interview.py
index b2ada4d..59dd463 100644
--- a/erpnext/hr/doctype/exit_interview/exit_interview.py
+++ b/erpnext/hr/doctype/exit_interview/exit_interview.py
@@ -22,7 +22,11 @@
title=_('Relieving Date Missing'))
def validate_duplicate_interview(self):
- doc = frappe.db.exists('Exit Interview', {'employee': self.employee, 'name': ('!=', self.name)})
+ doc = frappe.db.exists('Exit Interview', {
+ 'employee': self.employee,
+ 'name': ('!=', self.name),
+ 'docstatus': ('!=', 2)
+ })
if doc:
frappe.throw(_('Exit Interview {0} already scheduled for Employee: {1}').format(
get_link_to_form('Exit Interview', doc), frappe.bold(self.employee)),
@@ -36,6 +40,18 @@
if self.status != 'Completed':
frappe.throw(_('Only Completed documents can be submitted'))
+ self.update_interview_date_in_employee()
+
+ def on_cancel(self):
+ self.update_interview_date_in_employee()
+ self.db_set('status', 'Cancelled')
+
+ def update_interview_date_in_employee(self):
+ if self.docstatus == 1:
+ frappe.db.set_value('Employee', self.employee, 'held_on', self.date)
+ elif self.docstatus == 2:
+ frappe.db.set_value('Employee', self.employee, 'held_on', None)
+
@frappe.whitelist()
def send_exit_questionnaire(interviews):