fix: Employee Onboarding and Separation UX (#29504)
This commit is contained in:
parent
43bd88e741
commit
36882f3734
@ -132,13 +132,17 @@ class EmployeeBoardingController(Document):
|
|||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
# delete task project
|
# delete task project
|
||||||
for task in frappe.get_all('Task', filters={'project': self.project}):
|
project = self.project
|
||||||
|
for task in frappe.get_all('Task', filters={'project': project}):
|
||||||
frappe.delete_doc('Task', task.name, force=1)
|
frappe.delete_doc('Task', task.name, force=1)
|
||||||
frappe.delete_doc('Project', self.project, force=1)
|
frappe.delete_doc('Project', project, force=1)
|
||||||
self.db_set('project', '')
|
self.db_set('project', '')
|
||||||
for activity in self.activities:
|
for activity in self.activities:
|
||||||
activity.db_set('task', '')
|
activity.db_set('task', '')
|
||||||
|
|
||||||
|
frappe.msgprint(_('Linked Project {} and Tasks deleted.').format(
|
||||||
|
project), alert=True, indicator='blue')
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_onboarding_details(parent, parenttype):
|
def get_onboarding_details(parent, parenttype):
|
||||||
|
@ -21,7 +21,7 @@ def get_data():
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
'label': _('Lifecycle'),
|
'label': _('Lifecycle'),
|
||||||
'items': ['Employee Transfer', 'Employee Promotion', 'Employee Grievance']
|
'items': ['Employee Onboarding', 'Employee Transfer', 'Employee Promotion', 'Employee Grievance']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'label': _('Exit'),
|
'label': _('Exit'),
|
||||||
|
@ -62,6 +62,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "0",
|
"default": "0",
|
||||||
|
"depends_on": "eval:['Employee Onboarding', 'Employee Onboarding Template'].includes(doc.parenttype)",
|
||||||
"description": "Applicable in the case of Employee Onboarding",
|
"description": "Applicable in the case of Employee Onboarding",
|
||||||
"fieldname": "required_for_employee_creation",
|
"fieldname": "required_for_employee_creation",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
@ -93,7 +94,7 @@
|
|||||||
],
|
],
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-07-30 15:55:22.470102",
|
"modified": "2022-01-29 14:05:00.543122",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "HR",
|
"module": "HR",
|
||||||
"name": "Employee Boarding Activity",
|
"name": "Employee Boarding Activity",
|
||||||
@ -102,5 +103,6 @@
|
|||||||
"quick_entry": 1,
|
"quick_entry": 1,
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
|
"states": [],
|
||||||
"track_changes": 1
|
"track_changes": 1
|
||||||
}
|
}
|
@ -3,12 +3,6 @@
|
|||||||
|
|
||||||
frappe.ui.form.on('Employee Onboarding', {
|
frappe.ui.form.on('Employee Onboarding', {
|
||||||
setup: function(frm) {
|
setup: function(frm) {
|
||||||
frm.add_fetch("employee_onboarding_template", "company", "company");
|
|
||||||
frm.add_fetch("employee_onboarding_template", "department", "department");
|
|
||||||
frm.add_fetch("employee_onboarding_template", "designation", "designation");
|
|
||||||
frm.add_fetch("employee_onboarding_template", "employee_grade", "employee_grade");
|
|
||||||
|
|
||||||
|
|
||||||
frm.set_query("job_applicant", function () {
|
frm.set_query("job_applicant", function () {
|
||||||
return {
|
return {
|
||||||
filters:{
|
filters:{
|
||||||
@ -71,5 +65,19 @@ frappe.ui.form.on('Employee Onboarding', {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
job_applicant: function(frm) {
|
||||||
|
if (frm.doc.job_applicant) {
|
||||||
|
frappe.db.get_value('Employee', {'job_applicant': frm.doc.job_applicant}, 'name', (r) => {
|
||||||
|
if (r.name) {
|
||||||
|
frm.set_value('employee', r.name);
|
||||||
|
} else {
|
||||||
|
frm.set_value('employee', '');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
frm.set_value('employee', '');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -92,6 +92,7 @@
|
|||||||
"options": "Employee Onboarding Template"
|
"options": "Employee Onboarding Template"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "employee_onboarding_template.company",
|
||||||
"fieldname": "company",
|
"fieldname": "company",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Company",
|
"label": "Company",
|
||||||
@ -99,6 +100,7 @@
|
|||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "employee_onboarding_template.department",
|
||||||
"fieldname": "department",
|
"fieldname": "department",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
@ -106,6 +108,7 @@
|
|||||||
"options": "Department"
|
"options": "Department"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "employee_onboarding_template.designation",
|
||||||
"fieldname": "designation",
|
"fieldname": "designation",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
@ -113,6 +116,7 @@
|
|||||||
"options": "Designation"
|
"options": "Designation"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "employee_onboarding_template.employee_grade",
|
||||||
"fieldname": "employee_grade",
|
"fieldname": "employee_grade",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Employee Grade",
|
"label": "Employee Grade",
|
||||||
@ -170,10 +174,11 @@
|
|||||||
],
|
],
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-07-30 14:55:04.560683",
|
"modified": "2022-01-29 12:33:57.120384",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "HR",
|
"module": "HR",
|
||||||
"name": "Employee Onboarding",
|
"name": "Employee Onboarding",
|
||||||
|
"naming_rule": "Expression (old style)",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
@ -194,6 +199,7 @@
|
|||||||
],
|
],
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
|
"states": [],
|
||||||
"title_field": "employee_name",
|
"title_field": "employee_name",
|
||||||
"track_changes": 1
|
"track_changes": 1
|
||||||
}
|
}
|
@ -14,10 +14,15 @@ class IncompleteTaskError(frappe.ValidationError): pass
|
|||||||
class EmployeeOnboarding(EmployeeBoardingController):
|
class EmployeeOnboarding(EmployeeBoardingController):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
super(EmployeeOnboarding, self).validate()
|
super(EmployeeOnboarding, self).validate()
|
||||||
|
self.set_employee()
|
||||||
self.validate_duplicate_employee_onboarding()
|
self.validate_duplicate_employee_onboarding()
|
||||||
|
|
||||||
|
def set_employee(self):
|
||||||
|
if not self.employee:
|
||||||
|
self.employee = frappe.db.get_value('Employee', {'job_applicant': self.job_applicant}, 'name')
|
||||||
|
|
||||||
def validate_duplicate_employee_onboarding(self):
|
def validate_duplicate_employee_onboarding(self):
|
||||||
emp_onboarding = frappe.db.exists("Employee Onboarding", {"job_applicant": self.job_applicant})
|
emp_onboarding = frappe.db.exists("Employee Onboarding", {"job_applicant": self.job_applicant, "docstatus": ("!=", 2)})
|
||||||
if emp_onboarding and emp_onboarding != self.name:
|
if emp_onboarding and emp_onboarding != self.name:
|
||||||
frappe.throw(_("Employee Onboarding: {0} already exists for Job Applicant: {1}").format(frappe.bold(emp_onboarding), frappe.bold(self.job_applicant)))
|
frappe.throw(_("Employee Onboarding: {0} already exists for Job Applicant: {1}").format(frappe.bold(emp_onboarding), frappe.bold(self.job_applicant)))
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ def make_employee(source_name, target_doc=None):
|
|||||||
"doctype": "Employee",
|
"doctype": "Employee",
|
||||||
"field_map": {
|
"field_map": {
|
||||||
"applicant_name": "employee_name",
|
"applicant_name": "employee_name",
|
||||||
|
"offer_date": "scheduled_confirmation_date"
|
||||||
}}
|
}}
|
||||||
}, target_doc, set_missing_values)
|
}, target_doc, set_missing_values)
|
||||||
return doc
|
return doc
|
||||||
|
@ -235,13 +235,13 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "actual_start_date",
|
"fieldname": "actual_start_date",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Actual Start Date",
|
"label": "Actual Start Date (via Time Sheet)",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "actual_time",
|
"fieldname": "actual_time",
|
||||||
"fieldtype": "Float",
|
"fieldtype": "Float",
|
||||||
"label": "Actual Time (in Hours)",
|
"label": "Actual Time (in Hours via Time Sheet)",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -251,7 +251,7 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "actual_end_date",
|
"fieldname": "actual_end_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"label": "Actual End Date",
|
"label": "Actual End Date (via Time Sheet)",
|
||||||
"oldfieldname": "act_completion_date",
|
"oldfieldname": "act_completion_date",
|
||||||
"oldfieldtype": "Date",
|
"oldfieldtype": "Date",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
@ -458,10 +458,11 @@
|
|||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"max_attachments": 4,
|
"max_attachments": 4,
|
||||||
"modified": "2021-04-28 16:36:11.654632",
|
"modified": "2022-01-29 13:58:27.712714",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Projects",
|
"module": "Projects",
|
||||||
"name": "Project",
|
"name": "Project",
|
||||||
|
"naming_rule": "By \"Naming Series\" field",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
@ -499,6 +500,7 @@
|
|||||||
"show_name_in_global_search": 1,
|
"show_name_in_global_search": 1,
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
|
"states": [],
|
||||||
"timeline_field": "customer",
|
"timeline_field": "customer",
|
||||||
"title_field": "project_name",
|
"title_field": "project_name",
|
||||||
"track_seen": 1
|
"track_seen": 1
|
||||||
|
@ -249,7 +249,7 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "actual_time",
|
"fieldname": "actual_time",
|
||||||
"fieldtype": "Float",
|
"fieldtype": "Float",
|
||||||
"label": "Actual Time (in hours)",
|
"label": "Actual Time (in Hours via Time Sheet)",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -397,10 +397,11 @@
|
|||||||
"is_tree": 1,
|
"is_tree": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"max_attachments": 5,
|
"max_attachments": 5,
|
||||||
"modified": "2021-04-16 12:46:51.556741",
|
"modified": "2022-01-29 13:58:47.005241",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Projects",
|
"module": "Projects",
|
||||||
"name": "Task",
|
"name": "Task",
|
||||||
|
"naming_rule": "Expression (old style)",
|
||||||
"nsm_parent_field": "parent_task",
|
"nsm_parent_field": "parent_task",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
@ -421,6 +422,7 @@
|
|||||||
"show_preview_popup": 1,
|
"show_preview_popup": 1,
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
|
"states": [],
|
||||||
"timeline_field": "project",
|
"timeline_field": "project",
|
||||||
"title_field": "subject",
|
"title_field": "subject",
|
||||||
"track_seen": 1
|
"track_seen": 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user