From 25b99f83c9a30808100ae39ab92a8455685e7ee7 Mon Sep 17 00:00:00 2001 From: 14987 Date: Thu, 4 Jul 2024 12:38:18 +0530 Subject: [PATCH 1/3] feat: Allow optionally send reminder mail for rescheduled interview --- hrms/hr/doctype/hr_settings/hr_settings.json | 17 +++++++- hrms/hr/doctype/interview/interview.py | 45 ++++++++++++++++---- 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/hrms/hr/doctype/hr_settings/hr_settings.json b/hrms/hr/doctype/hr_settings/hr_settings.json index fe8fb7ce66..62506ccf77 100644 --- a/hrms/hr/doctype/hr_settings/hr_settings.json +++ b/hrms/hr/doctype/hr_settings/hr_settings.json @@ -41,6 +41,8 @@ "send_interview_feedback_reminder", "feedback_reminder_notification_template", "column_break_4", + "send_reminder_for_rescheduled_interview", + "rescheduled_interview_reminder_template", "hiring_sender", "hiring_sender_email", "employee_exit_section", @@ -316,13 +318,26 @@ "fieldname": "attendance_settings_section", "fieldtype": "Section Break", "label": "Attendance Settings" + }, + { + "default": "0", + "fieldname": "send_reminder_for_rescheduled_interview", + "fieldtype": "Check", + "label": "Send Reminder For Rescheduled Interview" + }, + { + "depends_on": "send_reminder_for_rescheduled_interview", + "fieldname": "rescheduled_interview_reminder_template", + "fieldtype": "Link", + "label": "Rescheduled Interview Reminder Template", + "options": "Email Template" } ], "icon": "fa fa-cog", "idx": 1, "issingle": 1, "links": [], - "modified": "2024-06-26 15:20:17.802079", + "modified": "2024-07-04 12:18:37.906016", "modified_by": "Administrator", "module": "HR", "name": "HR Settings", diff --git a/hrms/hr/doctype/interview/interview.py b/hrms/hr/doctype/interview/interview.py index 2e6aa08146..af53102fa5 100644 --- a/hrms/hr/doctype/interview/interview.py +++ b/hrms/hr/doctype/interview/interview.py @@ -95,20 +95,47 @@ def reschedule_interview(self, scheduled_on, from_time, to_time): self.db_set({"scheduled_on": scheduled_on, "from_time": from_time, "to_time": to_time}) self.notify_update() + reminder_settings = frappe.db.get_value( + "HR Settings", + "HR Settings", + [ + "send_reminder_for_rescheduled_interview", + "rescheduled_interview_reminder_template", + "hiring_sender", + ], + as_dict=True, + ) + + if not cint(reminder_settings.send_reminder_for_rescheduled_interview): + return + recipients = get_recipients(self.name) + subject = _("Interview: {0} Rescheduled").format(self.name) + message = _("Your Interview session is rescheduled from {0} {1} - {2} to {3} {4} - {5}").format( + original_date, + original_from_time, + original_to_time, + self.scheduled_on, + self.from_time, + self.to_time, + ) + + if reminder_settings.rescheduled_interview_reminder_template: + template = frappe.get_doc( + "Email Template", reminder_settings.rescheduled_interview_reminder_template + ) + if template: + context = self.as_dict() + response = template.response if not template.use_html else template.response_html + message = frappe.render_template(response, context) + subject = frappe.render_template(template.subject, context) try: frappe.sendmail( + sender=reminder_settings.hiring_sender, recipients=recipients, - subject=_("Interview: {0} Rescheduled").format(self.name), - message=_("Your Interview session is rescheduled from {0} {1} - {2} to {3} {4} - {5}").format( - original_date, - original_from_time, - original_to_time, - self.scheduled_on, - self.from_time, - self.to_time, - ), + subject=subject, + message=message, reference_doctype=self.doctype, reference_name=self.name, ) From 31d5e65f56ce20574fb26207cf86037947ea2f62 Mon Sep 17 00:00:00 2001 From: 14987 Date: Thu, 4 Jul 2024 12:46:30 +0530 Subject: [PATCH 2/3] fix: Use get_single_value --- hrms/hr/doctype/interview/interview.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hrms/hr/doctype/interview/interview.py b/hrms/hr/doctype/interview/interview.py index af53102fa5..c03856a561 100644 --- a/hrms/hr/doctype/interview/interview.py +++ b/hrms/hr/doctype/interview/interview.py @@ -95,7 +95,7 @@ def reschedule_interview(self, scheduled_on, from_time, to_time): self.db_set({"scheduled_on": scheduled_on, "from_time": from_time, "to_time": to_time}) self.notify_update() - reminder_settings = frappe.db.get_value( + reminder_settings = frappe.db.get_single_value( "HR Settings", "HR Settings", [ From 6adb1db7da465faf3cb23cd1ecb2976ea0fa77e9 Mon Sep 17 00:00:00 2001 From: 14987 Date: Thu, 4 Jul 2024 13:07:21 +0530 Subject: [PATCH 3/3] fix: use get_value only As we can fetch setting in on get_value , we can ignore using get_single_value for each value --- hrms/hr/doctype/interview/interview.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hrms/hr/doctype/interview/interview.py b/hrms/hr/doctype/interview/interview.py index c03856a561..af53102fa5 100644 --- a/hrms/hr/doctype/interview/interview.py +++ b/hrms/hr/doctype/interview/interview.py @@ -95,7 +95,7 @@ def reschedule_interview(self, scheduled_on, from_time, to_time): self.db_set({"scheduled_on": scheduled_on, "from_time": from_time, "to_time": to_time}) self.notify_update() - reminder_settings = frappe.db.get_single_value( + reminder_settings = frappe.db.get_value( "HR Settings", "HR Settings", [