Merge pull request #14608 from shreyashah115/fix-onboard
[Enhance] Employee Onboarding & Separation
diff --git a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.js b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.js
index e95e260..0861588 100644
--- a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.js
+++ b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.js
@@ -32,6 +32,20 @@
}, __("Make"));
frm.page.set_inner_btn_group_as_primary(__("Make"));
}
+ if (frm.doc.docstatus === 1 && frm.doc.project) {
+ frappe.call({
+ method: "erpnext.hr.utils.get_boarding_status",
+ args: {
+ "project": frm.doc.project
+ },
+ callback: function(r) {
+ if (r.message) {
+ frm.set_value('boarding_status', r.message);
+ }
+ refresh_field("boarding_status");
+ }
+ });
+ }
},
diff --git a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py
index fab0846..9262a06 100644
--- a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py
+++ b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py
@@ -31,7 +31,6 @@
def on_cancel(self):
super(EmployeeOnboarding, self).on_cancel()
-
@frappe.whitelist()
def make_employee(source_name, target_doc=None):
doc = frappe.get_doc("Employee Onboarding", source_name)
diff --git a/erpnext/hr/doctype/employee_onboarding/employee_onboarding_list.js b/erpnext/hr/doctype/employee_onboarding/employee_onboarding_list.js
new file mode 100644
index 0000000..a33619b
--- /dev/null
+++ b/erpnext/hr/doctype/employee_onboarding/employee_onboarding_list.js
@@ -0,0 +1,7 @@
+frappe.listview_settings['Employee Onboarding'] = {
+ add_fields: ["boarding_status", "employee_name", "date_of_joining", "department"],
+ filters:[["boarding_status","=", "Pending"]],
+ get_indicator: function(doc) {
+ return [__(doc.boarding_status), frappe.utils.guess_colour(doc.boarding_status), "status,=," + doc.boarding_status];
+ }
+};
diff --git a/erpnext/hr/doctype/employee_separation/employee_separation.js b/erpnext/hr/doctype/employee_separation/employee_separation.js
index 3383079..9a75c16 100644
--- a/erpnext/hr/doctype/employee_separation/employee_separation.js
+++ b/erpnext/hr/doctype/employee_separation/employee_separation.js
@@ -23,6 +23,20 @@
frappe.set_route('List', 'Task', {project: frm.doc.project});
},__("View"));
}
+ if (frm.doc.docstatus === 1 && frm.doc.project) {
+ frappe.call({
+ method: "erpnext.hr.utils.get_boarding_status",
+ args: {
+ "project": frm.doc.project
+ },
+ callback: function(r) {
+ if (r.message) {
+ frm.set_value('boarding_status', r.message);
+ }
+ refresh_field("boarding_status");
+ }
+ });
+ }
},
employee_separation_template: function(frm) {
diff --git a/erpnext/hr/doctype/employee_separation/employee_separation_list.js b/erpnext/hr/doctype/employee_separation/employee_separation_list.js
new file mode 100644
index 0000000..11487cc
--- /dev/null
+++ b/erpnext/hr/doctype/employee_separation/employee_separation_list.js
@@ -0,0 +1,7 @@
+frappe.listview_settings['Employee Separation'] = {
+ add_fields: ["boarding_status", "employee_name", "date_of_joining", "department"],
+ filters:[["boarding_status","=", "Pending"]],
+ get_indicator: function(doc) {
+ return [__(doc.boarding_status), frappe.utils.guess_colour(doc.boarding_status), "status,=," + doc.boarding_status];
+ }
+};
diff --git a/erpnext/hr/utils.py b/erpnext/hr/utils.py
index abbf302..7a861ac 100644
--- a/erpnext/hr/utils.py
+++ b/erpnext/hr/utils.py
@@ -35,6 +35,7 @@
"company": self.company
}).insert(ignore_permissions=True)
self.db_set("project", project.name)
+ self.db_set("boarding_status", "Pending")
# create the task for the given project and assign to the concerned person
for activity in self.activities:
@@ -84,6 +85,17 @@
filters={"parent": parent, "parenttype": parenttype},
order_by= "idx")
+@frappe.whitelist()
+def get_boarding_status(project):
+ status = 'Pending'
+ if project:
+ doc = frappe.get_doc('Project', project)
+ if flt(doc.percent_complete) > 0.0 and flt(doc.percent_complete) < 100.0:
+ status = 'In Process'
+ elif flt(doc.percent_complete) == 100.0:
+ status = 'Completed'
+ return status
+
def set_employee_name(doc):
if doc.employee and not doc.employee_name:
doc.employee_name = frappe.db.get_value("Employee", doc.employee, "employee_name")