Skip to content

Commit

Permalink
feat: Add sender in payroll setting & HR Setting
Browse files Browse the repository at this point in the history
(cherry picked from commit ab65da1)
  • Loading branch information
niraj2477 authored and mergify[bot] committed Nov 1, 2023
1 parent 245944d commit 0565dbf
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 19 deletions.
30 changes: 19 additions & 11 deletions hrms/controllers/employee_reminders.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,11 @@ def send_holidays_reminder_in_advance(employee, holidays):
employee_doc = frappe.get_doc("Employee", employee)
employee_email = get_employee_email(employee_doc)
frequency = frappe.db.get_single_value("HR Settings", "frequency")

sender = frappe.db.get_single_value("HR Settings", "sender")
sender_email = frappe.db.get_single_value("HR Settings", "sender_email") if sender else ""
email_header = _("Holidays this Month.") if frequency == "Monthly" else _("Holidays this Week.")
frappe.sendmail(
sender=sender_email,
recipients=[employee_email],
subject=_("Upcoming Holidays Reminder"),
template="holiday_reminder",
Expand All @@ -85,10 +87,11 @@ def send_holidays_reminder_in_advance(employee, holidays):
# ------------------
def send_birthday_reminders():
"""Send Employee birthday reminders if no 'Stop Birthday Reminders' is not set."""
to_send = int(frappe.db.get_single_value("HR Settings", "send_birthday_reminders"))
hr_settings = frappe.get_single("HR Settings")
to_send = int(hr_settings.send_birthday_reminders)
if not to_send:
return

sender = hr_settings.sender_email if hr_settings.sender else ""
employees_born_today = get_employees_who_are_born_today()

for company, birthday_persons in employees_born_today.items():
Expand All @@ -97,15 +100,15 @@ def send_birthday_reminders():
recipients = list(set(employee_emails) - set(birthday_person_emails))

reminder_text, message = get_birthday_reminder_text_and_message(birthday_persons)
send_birthday_reminder(recipients, reminder_text, birthday_persons, message)
send_birthday_reminder(sender, recipients, reminder_text, birthday_persons, message)

if len(birthday_persons) > 1:
# special email for people sharing birthdays
for person in birthday_persons:
person_email = person["user_id"] or person["personal_email"] or person["company_email"]
others = [d for d in birthday_persons if d != person]
reminder_text, message = get_birthday_reminder_text_and_message(others)
send_birthday_reminder(person_email, reminder_text, others, message)
send_birthday_reminder(sender, person_email, reminder_text, others, message)


def get_birthday_reminder_text_and_message(birthday_persons):
Expand All @@ -124,8 +127,9 @@ def get_birthday_reminder_text_and_message(birthday_persons):
return reminder_text, message


def send_birthday_reminder(recipients, reminder_text, birthday_persons, message):
def send_birthday_reminder(sender, recipients, reminder_text, birthday_persons, message):
frappe.sendmail(
sender=sender,
recipients=recipients,
subject=_("Birthday Reminder"),
template="birthday_reminder",
Expand Down Expand Up @@ -202,10 +206,11 @@ def get_employees_having_an_event_today(event_type):
# --------------------------
def send_work_anniversary_reminders():
"""Send Employee Work Anniversary Reminders if 'Send Work Anniversary Reminders' is checked"""
to_send = int(frappe.db.get_single_value("HR Settings", "send_work_anniversary_reminders"))
hr_settings = frappe.get_single("HR Settings")
to_send = int(hr_settings.send_work_anniversary_reminders)
if not to_send:
return

sender = hr_settings.sender_email if hr_settings.sender else ""
employees_joined_today = get_employees_having_an_event_today("work_anniversary")

message = _("A friendly reminder of an important date for our team.")
Expand All @@ -218,15 +223,15 @@ def send_work_anniversary_reminders():
recipients = list(set(employee_emails) - set(anniversary_person_emails))

reminder_text = get_work_anniversary_reminder_text(anniversary_persons)
send_work_anniversary_reminder(recipients, reminder_text, anniversary_persons, message)
send_work_anniversary_reminder(sender, recipients, reminder_text, anniversary_persons, message)

if len(anniversary_persons) > 1:
# email for people sharing work anniversaries
for person in anniversary_persons:
person_email = person["user_id"] or person["personal_email"] or person["company_email"]
others = [d for d in anniversary_persons if d != person]
reminder_text = get_work_anniversary_reminder_text(others)
send_work_anniversary_reminder(person_email, reminder_text, others, message)
send_work_anniversary_reminder(sender, person_email, reminder_text, others, message)


def get_work_anniversary_reminder_text(anniversary_persons: list) -> str:
Expand Down Expand Up @@ -261,8 +266,11 @@ def get_pluralized_years(years):
return f"{years} years"


def send_work_anniversary_reminder(recipients, reminder_text, anniversary_persons, message):
def send_work_anniversary_reminder(
sender, recipients, reminder_text, anniversary_persons, message
):
frappe.sendmail(
sender=sender,
recipients=recipients,
subject=_("Work Anniversary Reminder"),
template="anniversary_reminder",
Expand Down
10 changes: 10 additions & 0 deletions hrms/hr/doctype/hr_settings/hr_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
// For license information, please see license.txt

frappe.ui.form.on('HR Settings', {
refresh: function (frm) {
frm.add_fetch("sender", "email_id", "sender_email");
frm.set_query("sender", () => {
return {
filters: {
enable_outgoing: 1,
},
};
});
}
});

frappe.tour['HR Settings'] = [
Expand Down
24 changes: 17 additions & 7 deletions hrms/hr/doctype/hr_settings/hr_settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@
"column_break_9",
"retirement_age",
"reminders_section",
"send_birthday_reminders",
"sender",
"sender_email",
"column_break_11",
"send_work_anniversary_reminders",
"column_break_18",
"send_birthday_reminders",
"send_holiday_reminders",
"frequency",
"leave_and_expense_claim_settings",
Expand Down Expand Up @@ -71,10 +72,6 @@
"fieldtype": "Check",
"label": "Expense Approver Mandatory In Expense Claim"
},
{
"fieldname": "column_break_18",
"fieldtype": "Column Break"
},
{
"default": "1",
"fieldname": "leave_approver_mandatory_in_leave_application",
Expand Down Expand Up @@ -251,13 +248,26 @@
{
"fieldname": "column_break_34",
"fieldtype": "Column Break"
},
{
"fieldname": "sender",
"fieldtype": "Link",
"label": "Sender",
"options": "Email Account"
},
{
"depends_on": "eval:doc.sender;",
"fieldname": "sender_email",
"fieldtype": "Data",
"label": "Sender Email",
"read_only": 1
}
],
"icon": "fa fa-cog",
"idx": 1,
"issingle": 1,
"links": [],
"modified": "2022-10-04 17:29:45.926918",
"modified": "2023-10-23 15:40:06.249322",
"modified_by": "Administrator",
"module": "HR",
"name": "HR Settings",
Expand Down
11 changes: 11 additions & 0 deletions hrms/payroll/doctype/payroll_settings/payroll_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,15 @@ frappe.ui.form.on('Payroll Settings', {
frm.set_value('password_policy', policy.split(new RegExp(" |-", 'g')).filter((token) => token).join('-'));
}
},
refresh: function (frm) {
frm.add_fetch("sender", "email_id", "sender_email");
frm.set_query("sender", () => {
return {
filters: {
enable_outgoing: 1,
},
};
});

}
});
18 changes: 17 additions & 1 deletion hrms/payroll/doctype/payroll_settings/payroll_settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
"show_leave_balances_in_salary_slip",
"email_section",
"email_salary_slip_to_employee",
"sender",
"sender_email",
"column_break_iewr",
"encrypt_salary_slips_in_emails",
"password_policy",
Expand Down Expand Up @@ -155,13 +157,27 @@
"fieldname": "consider_marked_attendance_on_holidays",
"fieldtype": "Check",
"label": "Consider Marked Attendance on Holidays"
},
{
"depends_on": "eval:doc.email_salary_slip_to_employee;",
"fieldname": "sender",
"fieldtype": "Link",
"label": "Sender",
"options": "Email Account"
},
{
"depends_on": "eval:doc.sender;",
"fieldname": "sender_email",
"fieldtype": "Data",
"label": "Sender Email",
"read_only": 1
}
],
"icon": "fa fa-cog",
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2023-09-25 14:03:59.215240",
"modified": "2023-10-23 14:50:34.451546",
"modified_by": "Administrator",
"module": "Payroll",
"name": "Payroll Settings",
Expand Down
1 change: 1 addition & 0 deletions hrms/payroll/doctype/salary_slip/salary_slip.py
Original file line number Diff line number Diff line change
Expand Up @@ -1861,6 +1861,7 @@ def email_salary_slip(self):

if receiver:
email_args = {
"sender": payroll_settings.sender_email if payroll_settings.sender else "",
"recipients": [receiver],
"message": _(message),
"subject": "Salary Slip - from {0} to {1}".format(self.start_date, self.end_date),
Expand Down

0 comments on commit 0565dbf

Please sign in to comment.