From 06a0afa0397574ce85ea23cfaa436a56a51be8f4 Mon Sep 17 00:00:00 2001 From: Mangesh-Khairnar Date: Mon, 5 Aug 2019 10:07:05 +0530 Subject: [PATCH] Feat: Notify by email feature (#18587) * feat: notify user by email in employee onboarding control * fix: create task on update after submit --- .../employee_onboarding.json | 40 ++++++- .../employee_onboarding.py | 3 + .../employee_separation.json | 102 ++++++++++++------ .../employee_separation.py | 5 +- erpnext/hr/utils.py | 9 +- 5 files changed, 120 insertions(+), 39 deletions(-) diff --git a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.json b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.json index d22930d6df..3b95cabf8f 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 fbef047d76..19ff3bd497 100644 --- a/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py +++ b/erpnext/hr/doctype/employee_onboarding/employee_onboarding.py @@ -29,6 +29,9 @@ class EmployeeOnboarding(EmployeeBoardingController): 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 160594b268..f44d83060a 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 b908b632c8..b64668157b 100644 --- a/erpnext/hr/doctype/employee_separation/employee_separation.py +++ b/erpnext/hr/doctype/employee_separation/employee_separation.py @@ -11,6 +11,9 @@ class EmployeeSeparation(EmployeeBoardingController): 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 7c3c2cf1d4..de2b0909db 100644 --- a/erpnext/hr/utils.py +++ b/erpnext/hr/utils.py @@ -36,12 +36,18 @@ class EmployeeBoardingController(Document): }).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 @@ class EmployeeBoardingController(Document): 'doctype' : task.doctype, 'name' : task.name, 'description' : task.description or task.subject, + 'notify': self.notify_users_by_email } assign_to.add(args)