Feat: Notify by email feature (#18587)

* feat: notify user by email in employee onboarding control

* fix: create task on update after submit
diff --git a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.json b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.json
index d22930d..3b95cab 100644
--- a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.json
+++ b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.json
@@ -210,10 +210,42 @@
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
-  }, 
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
+    "allow_bulk_edit": 0,
+    "allow_in_quick_entry": 0,
+    "allow_on_submit": 1,
+    "bold": 0,
+    "collapsible": 0,
+    "columns": 0,
+    "fieldname": "notify_users_by_email",
+    "fieldtype": "Check",
+    "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": "Notify users by email",
+    "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, 
@@ -548,7 +580,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-08-21 16:15:55.968224", 
+ "modified": "2019-08-01 16:15:55.968224", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Employee Onboarding", 
diff --git a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py
index fbef047..19ff3bd 100644
--- a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py
+++ b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py
@@ -29,6 +29,9 @@
 	def on_submit(self):
 		super(EmployeeOnboarding, self).on_submit()
 
+	def on_update_after_submit(self):
+		self.create_task_and_notify_user()
+
 	def on_cancel(self):
 		super(EmployeeOnboarding, self).on_cancel()
 
diff --git a/erpnext/hr/doctype/employee_separation/employee_separation.json b/erpnext/hr/doctype/employee_separation/employee_separation.json
index 160594b..f44d830 100644
--- a/erpnext/hr/doctype/employee_separation/employee_separation.json
+++ b/erpnext/hr/doctype/employee_separation/employee_separation.json
@@ -145,40 +145,43 @@
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
-  }, 
+  },
   {
+    "allow_bulk_edit": 0,
    "allow_bulk_edit": 0, 
+    "allow_bulk_edit": 0,
+    "allow_in_quick_entry": 0,
    "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "project", 
-   "fieldtype": "Link", 
-   "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": "Project", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Project", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+    "allow_in_quick_entry": 0,
+    "allow_on_submit": 1,
+    "bold": 0,
+    "collapsible": 0,
+    "columns": 0,
+    "fieldname": "notify_users_by_email",
+    "fieldtype": "Check",
+    "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": "Notify users by email",
+    "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, 
@@ -276,7 +279,40 @@
    "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, 
+    "fieldname": "project", 
+    "fieldtype": "Link", 
+    "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": "Project", 
+    "length": 0, 
+    "no_copy": 0, 
+    "options": "Project", 
+    "permlevel": 0, 
+    "precision": "", 
+    "print_hide": 0, 
+    "print_hide_if_no_value": 0, 
+    "read_only": 1, 
+    "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, 
@@ -550,7 +586,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-08-21 16:15:39.025898", 
+ "modified": "2019-08-03 16:15:39.025898", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Employee Separation", 
diff --git a/erpnext/hr/doctype/employee_separation/employee_separation.py b/erpnext/hr/doctype/employee_separation/employee_separation.py
index b908b63..b646681 100644
--- a/erpnext/hr/doctype/employee_separation/employee_separation.py
+++ b/erpnext/hr/doctype/employee_separation/employee_separation.py
@@ -11,6 +11,9 @@
 
 	def on_submit(self):
 		super(EmployeeSeparation, self).on_submit()
-	
+
+	def on_update_after_submit(self):
+		self.create_task_and_notify_user()
+
 	def on_cancel(self):
 		super(EmployeeSeparation, self).on_cancel()
diff --git a/erpnext/hr/utils.py b/erpnext/hr/utils.py
index 7c3c2cf..de2b090 100644
--- a/erpnext/hr/utils.py
+++ b/erpnext/hr/utils.py
@@ -36,12 +36,18 @@
 			}).insert(ignore_permissions=True)
 		self.db_set("project", project.name)
 		self.db_set("boarding_status", "Pending")
+		self.reload()
+		self.create_task_and_notify_user()
 
+	def create_task_and_notify_user(self):
 		# create the task for the given project and assign to the concerned person
 		for activity in self.activities:
+			if activity.task:
+				continue
+
 			task = frappe.get_doc({
 					"doctype": "Task",
-					"project": project.name,
+					"project": self.project,
 					"subject": activity.activity_name + " : " + self.employee_name,
 					"description": activity.description,
 					"department": self.department,
@@ -69,6 +75,7 @@
 				'doctype'		:	task.doctype,
 				'name'			:	task.name,
 				'description'	:	task.description or task.subject,
+				'notify':	self.notify_users_by_email
 			}
 			assign_to.add(args)